/* Generated by Cython 0.11 on Fri Mar 20 15:29:43 2009 */

#define PY_SSIZE_T_CLEAN

// Hack added in paraview to handle windows (linking to release version)
# ifdef _DEBUG
#  undef _DEBUG
#  if defined(_MSC_VER) && _MSC_VER >= 1400
#    define _CRT_NOFORCE_MANIFEST 1
#  endif
#  include <Python.h>
#  define _DEBUG
# else
#  include <Python.h>
# endif

#include "structmember.h"
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif
#if PY_VERSION_HEX < 0x02040000
  #define METH_COEXIST 0
  #define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type)
#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 PyInt_FromSsize_t(z) PyInt_FromLong(z)
  #define PyInt_AsSsize_t(o)   PyInt_AsLong(o)
  #define PyNumber_Index(o)    PyNumber_Int(o)
  #define PyIndex_Check(o)     PyNumber_Check(o)
#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 PyString_Type                PyBytes_Type
  #define PyString_CheckExact          PyBytes_CheckExact
  #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
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
  #define PyBytes_Type                 PyString_Type
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyMethod_New(func, self, klass) PyInstanceMethod_New(func)
#endif
#if !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
#else
  #define _USE_MATH_DEFINES
#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
#ifdef __cplusplus
#define __PYX_EXTERN_C extern "C"
#else
#define __PYX_EXTERN_C extern
#endif
#include <math.h>
#define __PYX_HAVE_API__mpi4py__MPI
#include "mpi.h"
#include "atimport.h"
#include "vendor.h"


#ifdef __GNUC__
#define INLINE __inline__
#elif _WIN32
#define INLINE __inline
#else
#define INLINE 
#endif

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



static int __pyx_skip_dispatch = 0;


/* Type Conversion Predeclarations */

#if PY_MAJOR_VERSION < 3
#define __Pyx_PyBytes_FromString          PyString_FromString
#define __Pyx_PyBytes_FromStringAndSize   PyString_FromStringAndSize
#define __Pyx_PyBytes_AsString            PyString_AsString
#else
#define __Pyx_PyBytes_FromString          PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize   PyBytes_FromStringAndSize
#define __Pyx_PyBytes_AsString            PyBytes_AsString
#endif

#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
static INLINE int __Pyx_PyObject_IsTrue(PyObject* x);
static INLINE PY_LONG_LONG __pyx_PyInt_AsLongLong(PyObject* x);
static INLINE unsigned PY_LONG_LONG __pyx_PyInt_AsUnsignedLongLong(PyObject* x);

#if !defined(T_PYSSIZET)
#if PY_VERSION_HEX < 0x02050000
#define T_PYSSIZET T_INT
#elif !defined(T_LONGLONG)
#define T_PYSSIZET \
        ((sizeof(Py_ssize_t) == sizeof(int))  ? T_INT  : \
        ((sizeof(Py_ssize_t) == sizeof(long)) ? T_LONG : -1))
#else
#define T_PYSSIZET \
        ((sizeof(Py_ssize_t) == sizeof(int))          ? T_INT      : \
        ((sizeof(Py_ssize_t) == sizeof(long))         ? T_LONG     : \
        ((sizeof(Py_ssize_t) == sizeof(PY_LONG_LONG)) ? T_LONGLONG : -1)))
#endif
#endif

#if !defined(T_SIZET)
#if !defined(T_ULONGLONG)
#define T_SIZET \
        ((sizeof(size_t) == sizeof(unsigned int))  ? T_UINT  : \
        ((sizeof(size_t) == sizeof(unsigned long)) ? T_ULONG : -1))
#else
#define T_SIZET \
        ((sizeof(size_t) == sizeof(unsigned int))          ? T_UINT      : \
        ((sizeof(size_t) == sizeof(unsigned long))         ? T_ULONG     : \
        ((sizeof(size_t) == sizeof(unsigned PY_LONG_LONG)) ? T_ULONGLONG : -1)))
#endif
#endif

static INLINE Py_ssize_t __pyx_PyIndex_AsSsize_t(PyObject* b);
static INLINE PyObject * __pyx_PyInt_FromSize_t(size_t);
static INLINE size_t __pyx_PyInt_AsSize_t(PyObject*);

#define __pyx_PyInt_AsLong(x) (PyInt_CheckExact(x) ? PyInt_AS_LONG(x) : PyInt_AsLong(x))
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))

static INLINE unsigned char __pyx_PyInt_unsigned_char(PyObject* x);
static INLINE unsigned short __pyx_PyInt_unsigned_short(PyObject* x);
static INLINE char __pyx_PyInt_char(PyObject* x);
static INLINE short __pyx_PyInt_short(PyObject* x);
static INLINE int __pyx_PyInt_int(PyObject* x);
static INLINE long __pyx_PyInt_long(PyObject* x);
static INLINE signed char __pyx_PyInt_signed_char(PyObject* x);
static INLINE signed short __pyx_PyInt_signed_short(PyObject* x);
static INLINE signed int __pyx_PyInt_signed_int(PyObject* x);
static INLINE signed long __pyx_PyInt_signed_long(PyObject* x);
static INLINE long double __pyx_PyInt_long_double(PyObject* 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 int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm= __FILE__;
static const char *__pyx_filename;
static const char **__pyx_f;

#ifdef 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* (*NewContext)(const char*, int, const char*);
  void (*FinishContext)(void**);
} __Pyx_RefnannyAPIStruct;
static __Pyx_RefnannyAPIStruct *__Pyx_Refnanny = NULL;
#define __Pyx_ImportRefcountAPI(name)   (__Pyx_RefnannyAPIStruct *) PyCObject_Import((char *)name, (char *)"RefnannyAPI")
#define __Pyx_INCREF(r) __Pyx_Refnanny->INCREF(__pyx_refchk, (PyObject *)(r), __LINE__)
#define __Pyx_DECREF(r) __Pyx_Refnanny->DECREF(__pyx_refchk, (PyObject *)(r), __LINE__)
#define __Pyx_GOTREF(r) __Pyx_Refnanny->GOTREF(__pyx_refchk, (PyObject *)(r), __LINE__)
#define __Pyx_GIVEREF(r) __Pyx_Refnanny->GIVEREF(__pyx_refchk, (PyObject *)(r), __LINE__)
#define __Pyx_XDECREF(r) if((r) == NULL) ; else __Pyx_DECREF(r)
#define __Pyx_SetupRefcountContext(name)   void* __pyx_refchk = __Pyx_Refnanny->NewContext((name), __LINE__, __FILE__)
#define __Pyx_FinishRefcountContext()   __Pyx_Refnanny->FinishContext(&__pyx_refchk)
#else
#define __Pyx_INCREF(r) Py_INCREF(r)
#define __Pyx_DECREF(r) Py_DECREF(r)
#define __Pyx_GOTREF(r)
#define __Pyx_GIVEREF(r)
#define __Pyx_XDECREF(r) Py_XDECREF(r)
#define __Pyx_SetupRefcountContext(name)
#define __Pyx_FinishRefcountContext()
#endif /* CYTHON_REFNANNY */
#define __Pyx_XGIVEREF(r) if((r) == NULL) ; else __Pyx_GIVEREF(r)
#define __Pyx_XGOTREF(r) if((r) == NULL) ; else __Pyx_GOTREF(r)


static 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, size <= sizeof(long)) : \
                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))

static INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
    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, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
}

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

static INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
    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, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
}


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

static INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
    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, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
    }
    return r;
}

static 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, size <= sizeof(long)) : \
                                                    __Pyx_SetItemInt_Generic(o, to_py_func(i), v))

static 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 INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int fits_long) {
    if (PyList_CheckExact(o) && ((0 <= i) & (i < PyList_GET_SIZE(o)))) {
        Py_DECREF(PyList_GET_ITEM(o, i));
        Py_INCREF(v);
        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 = fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i);
        return __Pyx_SetItemInt_Generic(o, j, v);
    }
}

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

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 int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,     const char* function_name); /*proto*/

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

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

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

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

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

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

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

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

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

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

static PyObject *__Pyx_UnpackItem(PyObject *, Py_ssize_t index); /*proto*/
static int __Pyx_EndUnpack(PyObject *); /*proto*/

static INLINE int __Pyx_StrEq(const char *, const char *); /*proto*/

static void __Pyx_WriteUnraisable(const char *name); /*proto*/

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); /*proto*/

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

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

/* Type declarations */

typedef MPI_Fint __pyx_t_6mpi4py_3MPI_Fint;

typedef MPI_Aint __pyx_t_6mpi4py_3MPI_Aint;

typedef MPI_Offset __pyx_t_6mpi4py_3MPI_Offset;

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":29
 * cdef int PyMPI_KEYVAL_WIN_MEMORY  = MPI_KEYVAL_INVALID
 * 
 * ctypedef struct RCParams:             # <<<<<<<<<<<<<<
 *     int initialize
 *     int threaded
 */

typedef struct {
  int initialize;
  int threaded;
  int thread_level;
  int finalize;
} __pyx_t_6mpi4py_3MPI_RCParams;

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":3
 * #---------------------------------------------------------------------
 * 
 * cdef enum PyMPI_OBJECT_FLAGS:             # <<<<<<<<<<<<<<
 *     PyMPI_OWNED = 1<<1
 * 
 */

enum __pyx_t_6mpi4py_3MPI_PyMPI_OBJECT_FLAGS {
  __pyx_e_6mpi4py_3MPI_PyMPI_OWNED = (1 << 1)
};

/* "include/mpi4py/MPI.pxd":75
 *     cdef bint   ob_commute
 * 
 * ctypedef public api class Group [type PyMPIGroup_Type, object PyMPIGroupObject]:             # <<<<<<<<<<<<<<
 *     cdef MPI_Group ob_mpi
 *     cdef int       flags
 */

typedef struct {
  PyObject_HEAD
  MPI_Group ob_mpi;
  int flags;
} PyMPIGroupObject;

/* "include/mpi4py/MPI.pxd":107
 *     cdef int     flags
 * 
 * ctypedef public api class File [type PyMPIFile_Type, object PyMPIFileObject]:             # <<<<<<<<<<<<<<
 *     cdef MPI_File ob_mpi
 *     cdef int      flags
 */

typedef struct {
  PyObject_HEAD
  MPI_File ob_mpi;
  int flags;
} PyMPIFileObject;

/* "include/mpi4py/MPI.pxd":103
 *     pass
 * 
 * ctypedef public api class Win [type PyMPIWin_Type, object PyMPIWinObject]:             # <<<<<<<<<<<<<<
 *     cdef MPI_Win ob_mpi
 *     cdef int     flags
 */

typedef struct {
  PyObject_HEAD
  MPI_Win ob_mpi;
  int flags;
} PyMPIWinObject;

/* "include/mpi4py/MPI.pxd":79
 *     cdef int       flags
 * 
 * ctypedef public api class Info [type PyMPIInfo_Type, object PyMPIInfoObject]:             # <<<<<<<<<<<<<<
 *     cdef MPI_Info ob_mpi
 *     cdef int      flags
 */

typedef struct {
  PyObject_HEAD
  MPI_Info ob_mpi;
  int flags;
} PyMPIInfoObject;

/* "include/mpi4py/MPI.pxd":87
 *     cdef int            flags
 * 
 * ctypedef public api class Comm [type PyMPIComm_Type, object PyMPICommObject]:             # <<<<<<<<<<<<<<
 *     cdef MPI_Comm ob_mpi
 *     cdef int      flags
 */

typedef struct {
  PyObject_HEAD
  MPI_Comm ob_mpi;
  int flags;
} PyMPICommObject;

/* "include/mpi4py/MPI.pxd":91
 *     cdef int      flags
 * 
 * ctypedef public api class Intracomm(Comm) [type PyMPIIntracomm_Type, object PyMPIIntracommObject]:             # <<<<<<<<<<<<<<
 *     pass
 * 
 */

typedef struct {
  PyMPICommObject __pyx_base;
} PyMPIIntracommObject;

/* "include/mpi4py/MPI.pxd":94
 *     pass
 * 
 * ctypedef public api class Cartcomm(Intracomm) [type PyMPICartcomm_Type, object PyMPICartcommObject]:             # <<<<<<<<<<<<<<
 *     pass
 * 
 */

typedef struct {
  PyMPIIntracommObject __pyx_base;
} PyMPICartcommObject;

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":3
 * # ---
 * 
 * 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;
};

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":552
 * #---------------------------------------------------------------------
 * 
 * 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;
};

/* "include/mpi4py/MPI.pxd":68
 *     cdef MPI_Request ob_grequest
 * 
 * ctypedef public api class Op [type PyMPIOp_Type, object PyMPIOpObject]:             # <<<<<<<<<<<<<<
 *     cdef MPI_Op ob_mpi
 *     cdef int    flags
 */

typedef struct {
  PyObject_HEAD
  MPI_Op ob_mpi;
  int flags;
  PyObject *(*ob_func)(PyObject *, PyObject *);
  PyObject *ob_callable;
  int ob_commute;
} PyMPIOpObject;

/* "include/mpi4py/MPI.pxd":83
 *     cdef int      flags
 * 
 * ctypedef public api class Errhandler [type PyMPIErrhandler_Type, object PyMPIErrhandlerObject]:             # <<<<<<<<<<<<<<
 *     cdef MPI_Errhandler ob_mpi
 *     cdef int            flags
 */

typedef struct {
  PyObject_HEAD
  MPI_Errhandler ob_mpi;
  int flags;
} PyMPIErrhandlerObject;

/* "include/mpi4py/MPI.pxd":58
 *     cdef int          flags
 * 
 * ctypedef public api class Request [type PyMPIRequest_Type, object PyMPIRequestObject]:             # <<<<<<<<<<<<<<
 *     cdef MPI_Request ob_mpi
 *     cdef int         flags
 */

typedef struct {
  PyObject_HEAD
  MPI_Request ob_mpi;
  int flags;
} PyMPIRequestObject;

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":61
 * # --------------------------------------------------------------------
 * 
 * cdef class _p_Pickler:             # <<<<<<<<<<<<<<
 * 
 *     cdef object dump(self, object obj, void **p, int *n):
 */

struct __pyx_obj_6mpi4py_3MPI__p_Pickler {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *__pyx_vtab;
};

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":168
 * #---------------------------------------------------------------------
 * 
 * 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;
};

/* "include/mpi4py/MPI.pxd":62
 *     cdef int         flags
 * 
 * ctypedef public api class Prequest(Request) [type PyMPIPrequest_Type, object PyMPIPrequestObject]:             # <<<<<<<<<<<<<<
 *     pass
 * 
 */

typedef struct {
  PyMPIRequestObject __pyx_base;
} PyMPIPrequestObject;

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":462
 * #---------------------------------------------------------------------
 * 
 * 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;
};

/* "include/mpi4py/MPI.pxd":100
 *     pass
 * 
 * ctypedef public api class Intercomm(Comm) [type PyMPIIntercomm_Type, object PyMPIIntercommObject]:             # <<<<<<<<<<<<<<
 *     pass
 * 
 */

typedef struct {
  PyMPICommObject __pyx_base;
} PyMPIIntercommObject;

/* "include/mpi4py/MPI.pxd":65
 *     pass
 * 
 * ctypedef public api class Grequest(Request) [type PyMPIGrequest_Type, object PyMPIGrequestObject]:             # <<<<<<<<<<<<<<
 *     cdef MPI_Request ob_grequest
 * 
 */

typedef struct {
  PyMPIRequestObject __pyx_base;
  MPI_Request ob_grequest;
} PyMPIGrequestObject;

/* "include/mpi4py/MPI.pxd":54
 *     cdef int        flags
 * 
 * ctypedef public api class Datatype [type PyMPIDatatype_Type, object PyMPIDatatypeObject]:             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype ob_mpi
 *     cdef int          flags
 */

typedef struct {
  PyObject_HEAD
  MPI_Datatype ob_mpi;
  int flags;
} PyMPIDatatypeObject;

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":208
 * #---------------------------------------------------------------------
 * 
 * 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;
};

/* "include/mpi4py/MPI.pxd":97
 *     pass
 * 
 * ctypedef public api class Graphcomm(Intracomm) [type PyMPIGraphcomm_Type, object PyMPIGraphcommObject]:             # <<<<<<<<<<<<<<
 *     pass
 * 
 */

typedef struct {
  PyMPIIntracommObject __pyx_base;
} PyMPIGraphcommObject;

/* "include/mpi4py/MPI.pxd":50
 * ctypedef MPI_Offset Offset
 * 
 * ctypedef public api class Status [type PyMPIStatus_Type, object PyMPIStatusObject]:             # <<<<<<<<<<<<<<
 *     cdef MPI_Status ob_mpi
 *     cdef int        flags
 */

typedef struct {
  PyObject_HEAD
  MPI_Status ob_mpi;
  int flags;
} PyMPIStatusObject;


/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":208
 * #---------------------------------------------------------------------
 * 
 * cdef class _p_msg_cco:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side arguments
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco {
  PyObject *(*for_cco_send)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, int, int);
  PyObject *(*for_cco_recv)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, int, int);
  PyObject *(*for_bcast)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int, MPI_Comm);
  PyObject *(*for_gather)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, int, MPI_Comm);
  PyObject *(*for_scatter)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, int, MPI_Comm);
  PyObject *(*for_allgather)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm);
  PyObject *(*for_alltoall)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm);
  PyObject *(*for_cro_send)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int);
  PyObject *(*for_cro_recv)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int);
  PyObject *(*for_reduce)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, int, MPI_Comm);
  PyObject *(*for_allreduce)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);
  PyObject *(*for_scan)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);
  PyObject *(*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;


/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":3
 * # ---
 * 
 * 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;


/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":61
 * # --------------------------------------------------------------------
 * 
 * cdef class _p_Pickler:             # <<<<<<<<<<<<<<
 * 
 *     cdef object dump(self, object obj, void **p, int *n):
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler {
  PyObject *(*dump)(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *, PyObject *, void **, int *);
  PyObject *(*alloc)(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *, void **, int);
  PyObject *(*load)(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *, PyObject *);
  PyObject *(*dumpv)(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *, PyObject *, void **, int, int *, int *);
  PyObject *(*allocv)(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *, void **, int, int *, int *);
  PyObject *(*loadv)(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *, PyObject *, int, int *, int *);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *__pyx_vtabptr_6mpi4py_3MPI__p_Pickler;


/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":462
 * #---------------------------------------------------------------------
 * 
 * cdef class _p_msg_rma:             # <<<<<<<<<<<<<<
 * 
 *     # raw origin arguments
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma {
  PyObject *(*for_rma)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, int, PyObject *, int, PyObject *);
  PyObject *(*for_put)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *);
  PyObject *(*for_get)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *);
  PyObject *(*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;


/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":168
 * #---------------------------------------------------------------------
 * 
 * cdef class _p_msg_p2p:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side arguments
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p {
  PyObject *(*for_send)(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *, PyObject *, int);
  PyObject *(*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;


/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":552
 * #---------------------------------------------------------------------
 * 
 * cdef class _p_msg_io:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side data
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io {
  PyObject *(*for_read)(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *, PyObject *);
  PyObject *(*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;
/* 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_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_greq = 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_Pickler = 0;
static int __pyx_v_6mpi4py_3MPI_inited_atimport;
static int __pyx_v_6mpi4py_3MPI_finalize_atexit;
static int __pyx_v_6mpi4py_3MPI_startup_done;
static int __pyx_v_6mpi4py_3MPI_cleanup_done;
static MPI_Errhandler __pyx_v_6mpi4py_3MPI_comm_self_eh;
static MPI_Errhandler __pyx_v_6mpi4py_3MPI_comm_world_eh;
static int __pyx_v_6mpi4py_3MPI_PyMPI_KEYVAL_WIN_MEMORY;
static PyObject *__pyx_v_6mpi4py_3MPI_MPIException = 0;
static PyObject *__pyx_v_6mpi4py_3MPI___BOTTOM__ = 0;
static PyObject *__pyx_v_6mpi4py_3MPI___IN_PLACE__ = 0;
static PyObject *__pyx_v_6mpi4py_3MPI__Pickle_dumps = 0;
static PyObject *__pyx_v_6mpi4py_3MPI__Pickle_loads = 0;
static PyObject *__pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL = 0;
static struct __pyx_obj_6mpi4py_3MPI__p_Pickler *__pyx_v_6mpi4py_3MPI_PyMPI_PICKLER = 0;
static PyMPIErrhandlerObject *__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__ = 0;
static PyMPIErrhandlerObject *__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__ = 0;
static PyMPIErrhandlerObject *__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___CHAR__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___WCHAR__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___SHORT__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INT__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___FLOAT__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DOUBLE__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___BYTE__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___PACKED__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___SHORT_INT__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___TWOINT__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG_INT__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___FLOAT_INT__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DOUBLE_INT__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG_LONG__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG_LONG_INT__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___CHARACTER__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LOGICAL__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INTEGER__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___REAL__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___F_COMPLEX__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___F_DOUBLE_COMPLEX__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UB__ = 0;
static PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LB__ = 0;
static PyMPIRequestObject *__pyx_v_6mpi4py_3MPI___REQUEST_NULL__ = 0;
static PyMPIInfoObject *__pyx_v_6mpi4py_3MPI___INFO_NULL__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___OP_NULL__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___MAX__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___MIN__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___SUM__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___PROD__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___LAND__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___BAND__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___LOR__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___BOR__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___LXOR__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___BXOR__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___MAXLOC__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___MINLOC__ = 0;
static PyMPIOpObject *__pyx_v_6mpi4py_3MPI___REPLACE__ = 0;
static PyMPIGroupObject *__pyx_v_6mpi4py_3MPI___GROUP_NULL__ = 0;
static PyMPIGroupObject *__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__ = 0;
static PyMPICommObject *__pyx_v_6mpi4py_3MPI___COMM_NULL__ = 0;
static PyMPIIntracommObject *__pyx_v_6mpi4py_3MPI___COMM_SELF__ = 0;
static PyMPIIntracommObject *__pyx_v_6mpi4py_3MPI___COMM_WORLD__ = 0;
static PyMPIIntercommObject *__pyx_v_6mpi4py_3MPI___COMM_PARENT__ = 0;
static PyMPIWinObject *__pyx_v_6mpi4py_3MPI___WIN_NULL__ = 0;
static PyMPIFileObject *__pyx_v_6mpi4py_3MPI___FILE_NULL__ = 0;
static int __pyx_k_61;
static int __pyx_k_62;
static PyMPIDatatypeObject *__pyx_k_63 = 0;
static PyMPIOpObject *__pyx_k_64 = 0;
static PyMPIOpObject *__pyx_k_65 = 0;
static PyMPIOpObject *__pyx_k_66 = 0;
static PyObject *__pyx_k_67 = 0;
static PyObject *__pyx_k_68 = 0;
static PyMPIOpObject *__pyx_k_69 = 0;
static PyMPIOpObject *__pyx_k_70 = 0;
static PyObject *__pyx_k_71 = 0;
static PyObject *__pyx_k_72 = 0;
static PyMPIInfoObject *__pyx_k_73 = 0;
static PyMPIInfoObject *__pyx_k_74 = 0;
static PyMPIInfoObject *__pyx_k_75 = 0;
static PyMPIInfoObject *__pyx_k_76 = 0;
static PyMPIInfoObject *__pyx_k_77 = 0;
static PyMPIInfoObject *__pyx_k_78 = 0;
static PyMPIInfoObject *__pyx_k_79 = 0;
static PyMPIIntracommObject *__pyx_k_80 = 0;
static PyMPIOpObject *__pyx_k_81 = 0;
static int __pyx_k_84;
static PyMPIInfoObject *__pyx_k_85 = 0;
static PyMPIInfoObject *__pyx_k_86 = 0;
static PyMPIInfoObject *__pyx_k_87 = 0;
static int __pyx_k_88;
static int __pyx_k_89;
static PyMPIInfoObject *__pyx_k_90 = 0;
static int __pyx_k_91;
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 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 int __pyx_f_6mpi4py_3MPI_atexit_mpi(MPI_Comm, int, void *, void *); /*proto*/
static void __pyx_f_6mpi4py_3MPI_atexit_py(void); /*proto*/
static int __pyx_f_6mpi4py_3MPI_PyMPI_Raise(int); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI_CHKERR(int); /*proto*/
static INLINE void *__pyx_f_6mpi4py_3MPI_memnew(size_t); /*proto*/
static INLINE void __pyx_f_6mpi4py_3MPI_memdel(void *); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_allocate(size_t, void **); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asmpistr(PyObject *, char **, int *); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_tompistr(const char *, int); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_mpistr(const char *); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asbuffer_r(PyObject *, void **, MPI_Aint *); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asbuffer_w(PyObject *, void **, MPI_Aint *); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asmemory(PyObject *, void **, MPI_Aint *); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_tomemory(void *, MPI_Aint); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_newarray_int(int, int **); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_newarray_int3(int, int (**)[3]); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_int(PyObject *, int **, Py_ssize_t); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Aint(PyObject *, MPI_Aint **, Py_ssize_t); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Datatype(PyObject *, MPI_Datatype **, Py_ssize_t); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Request(PyObject *, MPI_Request **, Py_ssize_t); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI_restore_Request(PyObject *, MPI_Request **, Py_ssize_t); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Status(PyObject *, MPI_Status **, Py_ssize_t); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI_restore_Status(PyObject *, MPI_Status **, Py_ssize_t); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_argv(PyObject *, char ***); /*proto*/
static INLINE MPI_Status *__pyx_f_6mpi4py_3MPI__arg_Status(PyObject *); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI__eq_Status(MPI_Status *, MPI_Status *); /*proto*/
static INLINE PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_Datatype); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI__del_Datatype(MPI_Datatype *); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI__named_Datatype(MPI_Datatype); /*proto*/
static void __pyx_f_6mpi4py_3MPI__fix_Datatype(PyMPIDatatypeObject *); /*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 __pyx_f_6mpi4py_3MPI_greq_query_fn(void *, MPI_Status *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_greq_free_fn(void *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_greq_cancel_fn(void *, int); /*proto*/
static INLINE PyMPIRequestObject *__pyx_f_6mpi4py_3MPI__new_Request(MPI_Request); /*proto*/
static 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 INLINE PyMPIOpObject *__pyx_f_6mpi4py_3MPI__new_Op(MPI_Op); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI__del_Op(MPI_Op *); /*proto*/
static INLINE PyMPIInfoObject *__pyx_f_6mpi4py_3MPI__new_Info(MPI_Info); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI__del_Info(MPI_Info *); /*proto*/
static INLINE MPI_Info __pyx_f_6mpi4py_3MPI__arg_Info(PyObject *); /*proto*/
static INLINE PyMPIGroupObject *__pyx_f_6mpi4py_3MPI__new_Group(MPI_Group); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI__del_Group(MPI_Group *); /*proto*/
static INLINE PyMPICommObject *__pyx_f_6mpi4py_3MPI__new_Comm(MPI_Comm); /*proto*/
static INLINE PyMPIIntracommObject *__pyx_f_6mpi4py_3MPI__new_Intracomm(MPI_Comm); /*proto*/
static INLINE PyMPIIntercommObject *__pyx_f_6mpi4py_3MPI__new_Intercomm(MPI_Comm); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI__del_Comm(MPI_Comm *); /*proto*/
static void __pyx_f_6mpi4py_3MPI_win_memory_pydecref(void *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_PyMPI_Win_memory_del(MPI_Win, int, void *, void *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_PyMPI_Win_set_attr_memory(MPI_Win, PyObject *); /*proto*/
static INLINE PyMPIWinObject *__pyx_f_6mpi4py_3MPI__new_Win(MPI_Win); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI__del_Win(MPI_Win *); /*proto*/
static INLINE PyMPIFileObject *__pyx_f_6mpi4py_3MPI__new_File(MPI_File); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI__del_File(MPI_File *); /*proto*/
static INLINE PyMPIErrhandlerObject *__pyx_f_6mpi4py_3MPI__new_Errhandler(MPI_Errhandler); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI__del_Errhandler(MPI_Errhandler *); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI_is_BOTTOM(PyObject *); /*proto*/
static INLINE int __pyx_f_6mpi4py_3MPI_is_IN_PLACE(PyObject *); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_message_simple(int, PyObject *, int, int, void **, int *, MPI_Datatype *); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_message_vector(int, PyObject *, int, int, void **, int **, int **, MPI_Datatype *); /*proto*/
static INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_send(PyObject *, int); /*proto*/
static INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_recv(PyObject *, int); /*proto*/
static INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_f_6mpi4py_3MPI_message_cco(void); /*proto*/
static INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_f_6mpi4py_3MPI_message_rma_put(PyObject *, int, PyObject *); /*proto*/
static INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_f_6mpi4py_3MPI_message_rma_get(PyObject *, int, PyObject *); /*proto*/
static INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_f_6mpi4py_3MPI_message_rma_acc(PyObject *, int, PyObject *); /*proto*/
static INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_f_6mpi4py_3MPI_message_io_read(PyObject *); /*proto*/
static INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_f_6mpi4py_3MPI_message_io_write(PyObject *); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_Dump(PyObject *); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_Load(PyObject *); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_reduce(PyObject *, PyObject *); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_scan(PyObject *, PyObject *); /*proto*/
static INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_exscan(PyObject *, PyObject *); /*proto*/
static INLINE struct __pyx_obj_6mpi4py_3MPI__p_Pickler *__pyx_f_6mpi4py_3MPI_PyMPI_pickler(void); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_send(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_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 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 *PyMPIDatatype_New(MPI_Datatype); /*proto*/
static MPI_Datatype *PyMPIDatatype_Get(PyObject *); /*proto*/
static PyObject *PyMPIStatus_New(MPI_Status *); /*proto*/
static MPI_Status *PyMPIStatus_Get(PyObject *); /*proto*/
static PyObject *PyMPIRequest_New(MPI_Request); /*proto*/
static MPI_Request *PyMPIRequest_Get(PyObject *); /*proto*/
static PyObject *PyMPIOp_New(MPI_Op); /*proto*/
static MPI_Op *PyMPIOp_Get(PyObject *); /*proto*/
static PyObject *PyMPIInfo_New(MPI_Info); /*proto*/
static MPI_Info *PyMPIInfo_Get(PyObject *); /*proto*/
static PyObject *PyMPIGroup_New(MPI_Group); /*proto*/
static MPI_Group *PyMPIGroup_Get(PyObject *); /*proto*/
static PyObject *PyMPIComm_New(MPI_Comm); /*proto*/
static MPI_Comm *PyMPIComm_Get(PyObject *); /*proto*/
static PyObject *PyMPIWin_New(MPI_Win); /*proto*/
static MPI_Win *PyMPIWin_Get(PyObject *); /*proto*/
static PyObject *PyMPIFile_New(MPI_File); /*proto*/
static MPI_File *PyMPIFile_Get(PyObject *); /*proto*/
static PyObject *PyMPIErrhandler_New(MPI_Errhandler); /*proto*/
static MPI_Errhandler *PyMPIErrhandler_Get(PyObject *); /*proto*/


/* Implementation of mpi4py.MPI */
static char __pyx_k_3[] = "extent";
static char __pyx_k_4[] = "lower bound";
static char __pyx_k_5[] = "upper bound";
static char __pyx_k_6[] = "size (in bytes)";
static char __pyx_k_8[] = "true extent";
static char __pyx_k_9[] = "true lower bound";
static char __pyx_k_10[] = "true upper bound";
static char __pyx_k_11[] = "datatype name";
static char __pyx_k_12[] = "source";
static char __pyx_k_13[] = "tag";
static char __pyx_k_14[] = "error";
static char __pyx_k_15[] = "\n        cancelled state\n        ";
static char __pyx_k_16[] = "number of processes in group";
static char __pyx_k_17[] = "rank of this process in group";
static char __pyx_k_18[] = "communicator group";
static char __pyx_k_19[] = "number of processes in communicator";
static char __pyx_k_20[] = "rank of this process in communicator";
static char __pyx_k_21[] = "is intercommunicator";
static char __pyx_k_22[] = "is intracommunicator";
static char __pyx_k_23[] = "communicator topology type";
static char __pyx_k_24[] = "communicator name";
static char __pyx_k_25[] = "number of dimensions";
static char __pyx_k_26[] = "topology information";
static char __pyx_k_27[] = "dimensions";
static char __pyx_k_28[] = "periodicity";
static char __pyx_k_29[] = "coordinates";
static char __pyx_k_30[] = "number of nodes and edges";
static char __pyx_k_31[] = "number of nodes";
static char __pyx_k_32[] = "number of edges";
static char __pyx_k_33[] = "index";
static char __pyx_k_34[] = "edges";
static char __pyx_k_35[] = "number of neighbors";
static char __pyx_k_36[] = "neighbors";
static char __pyx_k_37[] = "remote group";
static char __pyx_k_38[] = "number of remote processes";
static char __pyx_k_39[] = "window group";
static char __pyx_k_40[] = "window attributes";
static char __pyx_k_41[] = "window memory buffer";
static char __pyx_k_42[] = "window name";
static char __pyx_k_43[] = "file size";
static char __pyx_k_44[] = "file group";
static char __pyx_k_45[] = "file access mode";
static char __pyx_k_46[] = "file info";
static char __pyx_k_47[] = "atomicity";
static char __pyx_k_53[] = "\nMessage Passing Interface.\n";
static char __pyx_k_54[] = "\n    Exception\n    ";
static char __pyx_k_55[] = "error code";
static char __pyx_k_56[] = "error class";
static char __pyx_k_57[] = "error string";
static PyObject *__pyx_int_neg_1;
static PyObject *__pyx_int_0;
static char __pyx_k___cinit__[] = "__cinit__";
static PyObject *__pyx_kp___cinit__;
static char __pyx_k___dealloc__[] = "__dealloc__";
static PyObject *__pyx_kp___dealloc__;
static char __pyx_k___richcmp__[] = "__richcmp__";
static PyObject *__pyx_kp___richcmp__;
static char __pyx_k___nonzero__[] = "__nonzero__";
static PyObject *__pyx_kp___nonzero__;
static char __pyx_k_Free[] = "Free";
static PyObject *__pyx_kp_Free;
static char __pyx_k_1[] = "py2f";
static PyObject *__pyx_kp_1;
static char __pyx_k_2[] = "f2py";
static PyObject *__pyx_kp_2;
static char __pyx_k_Get_extent[] = "Get_extent";
static PyObject *__pyx_kp_Get_extent;
static char __pyx_k_Get_size[] = "Get_size";
static PyObject *__pyx_kp_Get_size;
static char __pyx_k_Dup[] = "Dup";
static PyObject *__pyx_kp_Dup;
static char __pyx_k_Create_contiguous[] = "Create_contiguous";
static PyObject *__pyx_kp_Create_contiguous;
static char __pyx_k_Create_vector[] = "Create_vector";
static PyObject *__pyx_kp_Create_vector;
static char __pyx_k_Create_hvector[] = "Create_hvector";
static PyObject *__pyx_kp_Create_hvector;
static char __pyx_k_Create_indexed[] = "Create_indexed";
static PyObject *__pyx_kp_Create_indexed;
static char __pyx_k_7[] = "Create_indexed_block";
static PyObject *__pyx_kp_7;
static char __pyx_k_Create_hindexed[] = "Create_hindexed";
static PyObject *__pyx_kp_Create_hindexed;
static char __pyx_k_Create_subarray[] = "Create_subarray";
static PyObject *__pyx_kp_Create_subarray;
static char __pyx_k_Create_darray[] = "Create_darray";
static PyObject *__pyx_kp_Create_darray;
static char __pyx_k_Create_struct[] = "Create_struct";
static PyObject *__pyx_kp_Create_struct;
static char __pyx_k_Match_size[] = "Match_size";
static PyObject *__pyx_kp_Match_size;
static char __pyx_k_Commit[] = "Commit";
static PyObject *__pyx_kp_Commit;
static char __pyx_k_Create_resized[] = "Create_resized";
static PyObject *__pyx_kp_Create_resized;
static char __pyx_k_Resized[] = "Resized";
static PyObject *__pyx_kp_Resized;
static char __pyx_k_Get_true_extent[] = "Get_true_extent";
static PyObject *__pyx_kp_Get_true_extent;
static char __pyx_k_Pack[] = "Pack";
static PyObject *__pyx_kp_Pack;
static char __pyx_k_Unpack[] = "Unpack";
static PyObject *__pyx_kp_Unpack;
static char __pyx_k_Pack_size[] = "Pack_size";
static PyObject *__pyx_kp_Pack_size;
static char __pyx_k_Pack_external[] = "Pack_external";
static PyObject *__pyx_kp_Pack_external;
static char __pyx_k_Unpack_external[] = "Unpack_external";
static PyObject *__pyx_kp_Unpack_external;
static char __pyx_k_Pack_external_size[] = "Pack_external_size";
static PyObject *__pyx_kp_Pack_external_size;
static char __pyx_k_Get_name[] = "Get_name";
static PyObject *__pyx_kp_Get_name;
static char __pyx_k_Set_name[] = "Set_name";
static PyObject *__pyx_kp_Set_name;
static char __pyx_k_Get_source[] = "Get_source";
static PyObject *__pyx_kp_Get_source;
static char __pyx_k_Set_source[] = "Set_source";
static PyObject *__pyx_kp_Set_source;
static char __pyx_k_Get_tag[] = "Get_tag";
static PyObject *__pyx_kp_Get_tag;
static char __pyx_k_Set_tag[] = "Set_tag";
static PyObject *__pyx_kp_Set_tag;
static char __pyx_k_Get_error[] = "Get_error";
static PyObject *__pyx_kp_Get_error;
static char __pyx_k_Set_error[] = "Set_error";
static PyObject *__pyx_kp_Set_error;
static char __pyx_k_Get_count[] = "Get_count";
static PyObject *__pyx_kp_Get_count;
static char __pyx_k_Get_elements[] = "Get_elements";
static PyObject *__pyx_kp_Get_elements;
static char __pyx_k_Set_elements[] = "Set_elements";
static PyObject *__pyx_kp_Set_elements;
static char __pyx_k_Is_cancelled[] = "Is_cancelled";
static PyObject *__pyx_kp_Is_cancelled;
static char __pyx_k_Set_cancelled[] = "Set_cancelled";
static PyObject *__pyx_kp_Set_cancelled;
static char __pyx_k_Wait[] = "Wait";
static PyObject *__pyx_kp_Wait;
static char __pyx_k_Test[] = "Test";
static PyObject *__pyx_kp_Test;
static char __pyx_k_Get_status[] = "Get_status";
static PyObject *__pyx_kp_Get_status;
static char __pyx_k_Waitany[] = "Waitany";
static PyObject *__pyx_kp_Waitany;
static char __pyx_k_Testany[] = "Testany";
static PyObject *__pyx_kp_Testany;
static char __pyx_k_Waitall[] = "Waitall";
static PyObject *__pyx_kp_Waitall;
static char __pyx_k_Testall[] = "Testall";
static PyObject *__pyx_kp_Testall;
static char __pyx_k_Waitsome[] = "Waitsome";
static PyObject *__pyx_kp_Waitsome;
static char __pyx_k_Testsome[] = "Testsome";
static PyObject *__pyx_kp_Testsome;
static char __pyx_k_Cancel[] = "Cancel";
static PyObject *__pyx_kp_Cancel;
static char __pyx_k_Start[] = "Start";
static PyObject *__pyx_kp_Start;
static char __pyx_k_Startall[] = "Startall";
static PyObject *__pyx_kp_Startall;
static char __pyx_k_Complete[] = "Complete";
static PyObject *__pyx_kp_Complete;
static char __pyx_k_Create[] = "Create";
static PyObject *__pyx_kp_Create;
static char __pyx_k_Get[] = "Get";
static PyObject *__pyx_kp_Get;
static char __pyx_k_Set[] = "Set";
static PyObject *__pyx_kp_Set;
static char __pyx_k_Delete[] = "Delete";
static PyObject *__pyx_kp_Delete;
static char __pyx_k_Get_nkeys[] = "Get_nkeys";
static PyObject *__pyx_kp_Get_nkeys;
static char __pyx_k_Get_nthkey[] = "Get_nthkey";
static PyObject *__pyx_kp_Get_nthkey;
static char __pyx_k___len__[] = "__len__";
static PyObject *__pyx_kp___len__;
static char __pyx_k___contains__[] = "__contains__";
static PyObject *__pyx_kp___contains__;
static char __pyx_k___iter__[] = "__iter__";
static PyObject *__pyx_kp___iter__;
static char __pyx_k___getitem__[] = "__getitem__";
static PyObject *__pyx_kp___getitem__;
static char __pyx_k___setitem__[] = "__setitem__";
static PyObject *__pyx_kp___setitem__;
static char __pyx_k___delitem__[] = "__delitem__";
static PyObject *__pyx_kp___delitem__;
static char __pyx_k_get[] = "get";
static PyObject *__pyx_kp_get;
static char __pyx_k_keys[] = "keys";
static PyObject *__pyx_kp_keys;
static char __pyx_k_values[] = "values";
static PyObject *__pyx_kp_values;
static char __pyx_k_items[] = "items";
static PyObject *__pyx_kp_items;
static char __pyx_k_update[] = "update";
static PyObject *__pyx_kp_update;
static char __pyx_k_clear[] = "clear";
static PyObject *__pyx_kp_clear;
static char __pyx_k___call__[] = "__call__";
static PyObject *__pyx_kp___call__;
static char __pyx_k_Get_rank[] = "Get_rank";
static PyObject *__pyx_kp_Get_rank;
static char __pyx_k_Translate_ranks[] = "Translate_ranks";
static PyObject *__pyx_kp_Translate_ranks;
static char __pyx_k_Compare[] = "Compare";
static PyObject *__pyx_kp_Compare;
static char __pyx_k_Union[] = "Union";
static PyObject *__pyx_kp_Union;
static char __pyx_k_Intersect[] = "Intersect";
static PyObject *__pyx_kp_Intersect;
static char __pyx_k_Difference[] = "Difference";
static PyObject *__pyx_kp_Difference;
static char __pyx_k_Incl[] = "Incl";
static PyObject *__pyx_kp_Incl;
static char __pyx_k_Excl[] = "Excl";
static PyObject *__pyx_kp_Excl;
static char __pyx_k_Range_incl[] = "Range_incl";
static PyObject *__pyx_kp_Range_incl;
static char __pyx_k_Range_excl[] = "Range_excl";
static PyObject *__pyx_kp_Range_excl;
static char __pyx_k_Get_group[] = "Get_group";
static PyObject *__pyx_kp_Get_group;
static char __pyx_k_Clone[] = "Clone";
static PyObject *__pyx_kp_Clone;
static char __pyx_k_Send[] = "Send";
static PyObject *__pyx_kp_Send;
static char __pyx_k_Recv[] = "Recv";
static PyObject *__pyx_kp_Recv;
static char __pyx_k_Sendrecv[] = "Sendrecv";
static PyObject *__pyx_kp_Sendrecv;
static char __pyx_k_Sendrecv_replace[] = "Sendrecv_replace";
static PyObject *__pyx_kp_Sendrecv_replace;
static char __pyx_k_Isend[] = "Isend";
static PyObject *__pyx_kp_Isend;
static char __pyx_k_Irecv[] = "Irecv";
static PyObject *__pyx_kp_Irecv;
static char __pyx_k_Probe[] = "Probe";
static PyObject *__pyx_kp_Probe;
static char __pyx_k_Iprobe[] = "Iprobe";
static PyObject *__pyx_kp_Iprobe;
static char __pyx_k_Send_init[] = "Send_init";
static PyObject *__pyx_kp_Send_init;
static char __pyx_k_Recv_init[] = "Recv_init";
static PyObject *__pyx_kp_Recv_init;
static char __pyx_k_Bsend[] = "Bsend";
static PyObject *__pyx_kp_Bsend;
static char __pyx_k_Ssend[] = "Ssend";
static PyObject *__pyx_kp_Ssend;
static char __pyx_k_Rsend[] = "Rsend";
static PyObject *__pyx_kp_Rsend;
static char __pyx_k_Ibsend[] = "Ibsend";
static PyObject *__pyx_kp_Ibsend;
static char __pyx_k_Issend[] = "Issend";
static PyObject *__pyx_kp_Issend;
static char __pyx_k_Irsend[] = "Irsend";
static PyObject *__pyx_kp_Irsend;
static char __pyx_k_Bsend_init[] = "Bsend_init";
static PyObject *__pyx_kp_Bsend_init;
static char __pyx_k_Ssend_init[] = "Ssend_init";
static PyObject *__pyx_kp_Ssend_init;
static char __pyx_k_Rsend_init[] = "Rsend_init";
static PyObject *__pyx_kp_Rsend_init;
static char __pyx_k_Barrier[] = "Barrier";
static PyObject *__pyx_kp_Barrier;
static char __pyx_k_Bcast[] = "Bcast";
static PyObject *__pyx_kp_Bcast;
static char __pyx_k_Gather[] = "Gather";
static PyObject *__pyx_kp_Gather;
static char __pyx_k_Gatherv[] = "Gatherv";
static PyObject *__pyx_kp_Gatherv;
static char __pyx_k_Scatter[] = "Scatter";
static PyObject *__pyx_kp_Scatter;
static char __pyx_k_Scatterv[] = "Scatterv";
static PyObject *__pyx_kp_Scatterv;
static char __pyx_k_Allgather[] = "Allgather";
static PyObject *__pyx_kp_Allgather;
static char __pyx_k_Allgatherv[] = "Allgatherv";
static PyObject *__pyx_kp_Allgatherv;
static char __pyx_k_Alltoall[] = "Alltoall";
static PyObject *__pyx_kp_Alltoall;
static char __pyx_k_Alltoallv[] = "Alltoallv";
static PyObject *__pyx_kp_Alltoallv;
static char __pyx_k_Alltoallw[] = "Alltoallw";
static PyObject *__pyx_kp_Alltoallw;
static char __pyx_k_Reduce[] = "Reduce";
static PyObject *__pyx_kp_Reduce;
static char __pyx_k_Allreduce[] = "Allreduce";
static PyObject *__pyx_kp_Allreduce;
static char __pyx_k_Reduce_scatter[] = "Reduce_scatter";
static PyObject *__pyx_kp_Reduce_scatter;
static char __pyx_k_Is_inter[] = "Is_inter";
static PyObject *__pyx_kp_Is_inter;
static char __pyx_k_Is_intra[] = "Is_intra";
static PyObject *__pyx_kp_Is_intra;
static char __pyx_k_Get_topology[] = "Get_topology";
static PyObject *__pyx_kp_Get_topology;
static char __pyx_k_Get_parent[] = "Get_parent";
static PyObject *__pyx_kp_Get_parent;
static char __pyx_k_Disconnect[] = "Disconnect";
static PyObject *__pyx_kp_Disconnect;
static char __pyx_k_Join[] = "Join";
static PyObject *__pyx_kp_Join;
static char __pyx_k_Get_attr[] = "Get_attr";
static PyObject *__pyx_kp_Get_attr;
static char __pyx_k_Get_errhandler[] = "Get_errhandler";
static PyObject *__pyx_kp_Get_errhandler;
static char __pyx_k_Set_errhandler[] = "Set_errhandler";
static PyObject *__pyx_kp_Set_errhandler;
static char __pyx_k_Call_errhandler[] = "Call_errhandler";
static PyObject *__pyx_kp_Call_errhandler;
static char __pyx_k_Abort[] = "Abort";
static PyObject *__pyx_kp_Abort;
static char __pyx_k_send[] = "send";
static PyObject *__pyx_kp_send;
static char __pyx_k_recv[] = "recv";
static PyObject *__pyx_kp_recv;
static char __pyx_k_sendrecv[] = "sendrecv";
static PyObject *__pyx_kp_sendrecv;
static char __pyx_k_barrier[] = "barrier";
static PyObject *__pyx_kp_barrier;
static char __pyx_k_bcast[] = "bcast";
static PyObject *__pyx_kp_bcast;
static char __pyx_k_gather[] = "gather";
static PyObject *__pyx_kp_gather;
static char __pyx_k_scatter[] = "scatter";
static PyObject *__pyx_kp_scatter;
static char __pyx_k_allgather[] = "allgather";
static PyObject *__pyx_kp_allgather;
static char __pyx_k_alltoall[] = "alltoall";
static PyObject *__pyx_kp_alltoall;
static char __pyx_k_reduce[] = "reduce";
static PyObject *__pyx_kp_reduce;
static char __pyx_k_allreduce[] = "allreduce";
static PyObject *__pyx_kp_allreduce;
static char __pyx_k_Split[] = "Split";
static PyObject *__pyx_kp_Split;
static char __pyx_k_Create_cart[] = "Create_cart";
static PyObject *__pyx_kp_Create_cart;
static char __pyx_k_Create_graph[] = "Create_graph";
static PyObject *__pyx_kp_Create_graph;
static char __pyx_k_Create_intercomm[] = "Create_intercomm";
static PyObject *__pyx_kp_Create_intercomm;
static char __pyx_k_Scan[] = "Scan";
static PyObject *__pyx_kp_Scan;
static char __pyx_k_Exscan[] = "Exscan";
static PyObject *__pyx_kp_Exscan;
static char __pyx_k_scan[] = "scan";
static PyObject *__pyx_kp_scan;
static char __pyx_k_exscan[] = "exscan";
static PyObject *__pyx_kp_exscan;
static char __pyx_k_Spawn[] = "Spawn";
static PyObject *__pyx_kp_Spawn;
static char __pyx_k_Accept[] = "Accept";
static PyObject *__pyx_kp_Accept;
static char __pyx_k_Connect[] = "Connect";
static PyObject *__pyx_kp_Connect;
static char __pyx_k_Get_dim[] = "Get_dim";
static PyObject *__pyx_kp_Get_dim;
static char __pyx_k_Get_topo[] = "Get_topo";
static PyObject *__pyx_kp_Get_topo;
static char __pyx_k_Get_cart_rank[] = "Get_cart_rank";
static PyObject *__pyx_kp_Get_cart_rank;
static char __pyx_k_Get_coords[] = "Get_coords";
static PyObject *__pyx_kp_Get_coords;
static char __pyx_k_Shift[] = "Shift";
static PyObject *__pyx_kp_Shift;
static char __pyx_k_Sub[] = "Sub";
static PyObject *__pyx_kp_Sub;
static char __pyx_k_Map[] = "Map";
static PyObject *__pyx_kp_Map;
static char __pyx_k_Get_dims[] = "Get_dims";
static PyObject *__pyx_kp_Get_dims;
static char __pyx_k_Get_neighbors_count[] = "Get_neighbors_count";
static PyObject *__pyx_kp_Get_neighbors_count;
static char __pyx_k_Get_neighbors[] = "Get_neighbors";
static PyObject *__pyx_kp_Get_neighbors;
static char __pyx_k_Get_remote_group[] = "Get_remote_group";
static PyObject *__pyx_kp_Get_remote_group;
static char __pyx_k_Get_remote_size[] = "Get_remote_size";
static PyObject *__pyx_kp_Get_remote_size;
static char __pyx_k_Merge[] = "Merge";
static PyObject *__pyx_kp_Merge;
static char __pyx_k_Put[] = "Put";
static PyObject *__pyx_kp_Put;
static char __pyx_k_Accumulate[] = "Accumulate";
static PyObject *__pyx_kp_Accumulate;
static char __pyx_k_Fence[] = "Fence";
static PyObject *__pyx_kp_Fence;
static char __pyx_k_Post[] = "Post";
static PyObject *__pyx_kp_Post;
static char __pyx_k_Lock[] = "Lock";
static PyObject *__pyx_kp_Lock;
static char __pyx_k_Unlock[] = "Unlock";
static PyObject *__pyx_kp_Unlock;
static char __pyx_k_Open[] = "Open";
static PyObject *__pyx_kp_Open;
static char __pyx_k_Close[] = "Close";
static PyObject *__pyx_kp_Close;
static char __pyx_k_Set_size[] = "Set_size";
static PyObject *__pyx_kp_Set_size;
static char __pyx_k_Preallocate[] = "Preallocate";
static PyObject *__pyx_kp_Preallocate;
static char __pyx_k_Get_amode[] = "Get_amode";
static PyObject *__pyx_kp_Get_amode;
static char __pyx_k_Set_info[] = "Set_info";
static PyObject *__pyx_kp_Set_info;
static char __pyx_k_Get_info[] = "Get_info";
static PyObject *__pyx_kp_Get_info;
static char __pyx_k_Set_view[] = "Set_view";
static PyObject *__pyx_kp_Set_view;
static char __pyx_k_Get_view[] = "Get_view";
static PyObject *__pyx_kp_Get_view;
static char __pyx_k_Read_at[] = "Read_at";
static PyObject *__pyx_kp_Read_at;
static char __pyx_k_Read_at_all[] = "Read_at_all";
static PyObject *__pyx_kp_Read_at_all;
static char __pyx_k_Write_at[] = "Write_at";
static PyObject *__pyx_kp_Write_at;
static char __pyx_k_Write_at_all[] = "Write_at_all";
static PyObject *__pyx_kp_Write_at_all;
static char __pyx_k_Iread_at[] = "Iread_at";
static PyObject *__pyx_kp_Iread_at;
static char __pyx_k_Iwrite_at[] = "Iwrite_at";
static PyObject *__pyx_kp_Iwrite_at;
static char __pyx_k_Read[] = "Read";
static PyObject *__pyx_kp_Read;
static char __pyx_k_Read_all[] = "Read_all";
static PyObject *__pyx_kp_Read_all;
static char __pyx_k_Write[] = "Write";
static PyObject *__pyx_kp_Write;
static char __pyx_k_Write_all[] = "Write_all";
static PyObject *__pyx_kp_Write_all;
static char __pyx_k_Iread[] = "Iread";
static PyObject *__pyx_kp_Iread;
static char __pyx_k_Iwrite[] = "Iwrite";
static PyObject *__pyx_kp_Iwrite;
static char __pyx_k_Seek[] = "Seek";
static PyObject *__pyx_kp_Seek;
static char __pyx_k_Get_position[] = "Get_position";
static PyObject *__pyx_kp_Get_position;
static char __pyx_k_Get_byte_offset[] = "Get_byte_offset";
static PyObject *__pyx_kp_Get_byte_offset;
static char __pyx_k_Read_shared[] = "Read_shared";
static PyObject *__pyx_kp_Read_shared;
static char __pyx_k_Write_shared[] = "Write_shared";
static PyObject *__pyx_kp_Write_shared;
static char __pyx_k_Iread_shared[] = "Iread_shared";
static PyObject *__pyx_kp_Iread_shared;
static char __pyx_k_Iwrite_shared[] = "Iwrite_shared";
static PyObject *__pyx_kp_Iwrite_shared;
static char __pyx_k_Read_ordered[] = "Read_ordered";
static PyObject *__pyx_kp_Read_ordered;
static char __pyx_k_Write_ordered[] = "Write_ordered";
static PyObject *__pyx_kp_Write_ordered;
static char __pyx_k_Seek_shared[] = "Seek_shared";
static PyObject *__pyx_kp_Seek_shared;
static char __pyx_k_Get_position_shared[] = "Get_position_shared";
static PyObject *__pyx_kp_Get_position_shared;
static char __pyx_k_Read_at_all_begin[] = "Read_at_all_begin";
static PyObject *__pyx_kp_Read_at_all_begin;
static char __pyx_k_Read_at_all_end[] = "Read_at_all_end";
static PyObject *__pyx_kp_Read_at_all_end;
static char __pyx_k_Write_at_all_begin[] = "Write_at_all_begin";
static PyObject *__pyx_kp_Write_at_all_begin;
static char __pyx_k_Write_at_all_end[] = "Write_at_all_end";
static PyObject *__pyx_kp_Write_at_all_end;
static char __pyx_k_Read_all_begin[] = "Read_all_begin";
static PyObject *__pyx_kp_Read_all_begin;
static char __pyx_k_Read_all_end[] = "Read_all_end";
static PyObject *__pyx_kp_Read_all_end;
static char __pyx_k_Write_all_begin[] = "Write_all_begin";
static PyObject *__pyx_kp_Write_all_begin;
static char __pyx_k_Write_all_end[] = "Write_all_end";
static PyObject *__pyx_kp_Write_all_end;
static char __pyx_k_Read_ordered_begin[] = "Read_ordered_begin";
static PyObject *__pyx_kp_Read_ordered_begin;
static char __pyx_k_Read_ordered_end[] = "Read_ordered_end";
static PyObject *__pyx_kp_Read_ordered_end;
static char __pyx_k_Write_ordered_begin[] = "Write_ordered_begin";
static PyObject *__pyx_kp_Write_ordered_begin;
static char __pyx_k_Write_ordered_end[] = "Write_ordered_end";
static PyObject *__pyx_kp_Write_ordered_end;
static char __pyx_k_Get_type_extent[] = "Get_type_extent";
static PyObject *__pyx_kp_Get_type_extent;
static char __pyx_k_Set_atomicity[] = "Set_atomicity";
static PyObject *__pyx_kp_Set_atomicity;
static char __pyx_k_Get_atomicity[] = "Get_atomicity";
static PyObject *__pyx_kp_Get_atomicity;
static char __pyx_k_Sync[] = "Sync";
static PyObject *__pyx_kp_Sync;
static char __pyx_k_query_fn[] = "query_fn";
static PyObject *__pyx_kp_query_fn;
static char __pyx_k_free_fn[] = "free_fn";
static PyObject *__pyx_kp_free_fn;
static char __pyx_k_cancel_fn[] = "cancel_fn";
static PyObject *__pyx_kp_cancel_fn;
static char __pyx_k_args[] = "args";
static PyObject *__pyx_kp_args;
static char __pyx_k_kargs[] = "kargs";
static PyObject *__pyx_kp_kargs;
static char __pyx_k_self[] = "self";
static PyObject *__pyx_kp_self;
static char __pyx_k_ierr[] = "ierr";
static PyObject *__pyx_kp_ierr;
static char __pyx_k_error[] = "error";
static PyObject *__pyx_kp_error;
static char __pyx_k_errorcode[] = "errorcode";
static PyObject *__pyx_kp_errorcode;
static char __pyx_k_other[] = "other";
static PyObject *__pyx_kp_other;
static char __pyx_k_op[] = "op";
static PyObject *__pyx_kp_op;
static char __pyx_k_arg[] = "arg";
static PyObject *__pyx_kp_arg;
static char __pyx_k_count[] = "count";
static PyObject *__pyx_kp_count;
static char __pyx_k_blocklength[] = "blocklength";
static PyObject *__pyx_kp_blocklength;
static char __pyx_k_stride[] = "stride";
static PyObject *__pyx_kp_stride;
static char __pyx_k_blocklengths[] = "blocklengths";
static PyObject *__pyx_kp_blocklengths;
static char __pyx_k_displacements[] = "displacements";
static PyObject *__pyx_kp_displacements;
static char __pyx_k_sizes[] = "sizes";
static PyObject *__pyx_kp_sizes;
static char __pyx_k_subsizes[] = "subsizes";
static PyObject *__pyx_kp_subsizes;
static char __pyx_k_starts[] = "starts";
static PyObject *__pyx_kp_starts;
static char __pyx_k_order[] = "order";
static PyObject *__pyx_kp_order;
static char __pyx_k_size[] = "size";
static PyObject *__pyx_kp_size;
static char __pyx_k_rank[] = "rank";
static PyObject *__pyx_kp_rank;
static char __pyx_k_gsizes[] = "gsizes";
static PyObject *__pyx_kp_gsizes;
static char __pyx_k_distribs[] = "distribs";
static PyObject *__pyx_kp_distribs;
static char __pyx_k_dargs[] = "dargs";
static PyObject *__pyx_kp_dargs;
static char __pyx_k_psizes[] = "psizes";
static PyObject *__pyx_kp_psizes;
static char __pyx_k_datatypes[] = "datatypes";
static PyObject *__pyx_kp_datatypes;
static char __pyx_k_typeclass[] = "typeclass";
static PyObject *__pyx_kp_typeclass;
static char __pyx_k_lb[] = "lb";
static PyObject *__pyx_kp_lb;
static char __pyx_k_extent[] = "extent";
static PyObject *__pyx_kp_extent;
static char __pyx_k_inbuf[] = "inbuf";
static PyObject *__pyx_kp_inbuf;
static char __pyx_k_outbuf[] = "outbuf";
static PyObject *__pyx_kp_outbuf;
static char __pyx_k_position[] = "position";
static PyObject *__pyx_kp_position;
static char __pyx_k_comm[] = "comm";
static PyObject *__pyx_kp_comm;
static char __pyx_k_datarep[] = "datarep";
static PyObject *__pyx_kp_datarep;
static char __pyx_k_name[] = "name";
static PyObject *__pyx_kp_name;
static char __pyx_k_value[] = "value";
static PyObject *__pyx_kp_value;
static char __pyx_k_location[] = "location";
static PyObject *__pyx_kp_location;
static char __pyx_k_source[] = "source";
static PyObject *__pyx_kp_source;
static char __pyx_k_tag[] = "tag";
static PyObject *__pyx_kp_tag;
static char __pyx_k_datatype[] = "datatype";
static PyObject *__pyx_kp_datatype;
static char __pyx_k_flag[] = "flag";
static PyObject *__pyx_kp_flag;
static char __pyx_k_status[] = "status";
static PyObject *__pyx_kp_status;
static char __pyx_k_requests[] = "requests";
static PyObject *__pyx_kp_requests;
static char __pyx_k_statuses[] = "statuses";
static PyObject *__pyx_kp_statuses;
static char __pyx_k_key[] = "key";
static PyObject *__pyx_kp_key;
static char __pyx_k_maxlen[] = "maxlen";
static PyObject *__pyx_kp_maxlen;
static char __pyx_k_n[] = "n";
static PyObject *__pyx_kp_n;
static char __pyx_k_default[] = "default";
static PyObject *__pyx_kp_default;
static char __pyx_k_x[] = "x";
static PyObject *__pyx_kp_x;
static char __pyx_k_y[] = "y";
static PyObject *__pyx_kp_y;
static char __pyx_k_function[] = "function";
static PyObject *__pyx_kp_function;
static char __pyx_k_commute[] = "commute";
static PyObject *__pyx_kp_commute;
static char __pyx_k_48[] = "group1";
static PyObject *__pyx_kp_48;
static char __pyx_k_49[] = "ranks1";
static PyObject *__pyx_kp_49;
static char __pyx_k_50[] = "group2";
static PyObject *__pyx_kp_50;
static char __pyx_k_ranks[] = "ranks";
static PyObject *__pyx_kp_ranks;
static char __pyx_k_51[] = "comm1";
static PyObject *__pyx_kp_51;
static char __pyx_k_52[] = "comm2";
static PyObject *__pyx_kp_52;
static char __pyx_k_buf[] = "buf";
static PyObject *__pyx_kp_buf;
static char __pyx_k_dest[] = "dest";
static PyObject *__pyx_kp_dest;
static char __pyx_k_sendbuf[] = "sendbuf";
static PyObject *__pyx_kp_sendbuf;
static char __pyx_k_sendtag[] = "sendtag";
static PyObject *__pyx_kp_sendtag;
static char __pyx_k_recvbuf[] = "recvbuf";
static PyObject *__pyx_kp_recvbuf;
static char __pyx_k_recvtag[] = "recvtag";
static PyObject *__pyx_kp_recvtag;
static char __pyx_k_root[] = "root";
static PyObject *__pyx_kp_root;
static char __pyx_k_fd[] = "fd";
static PyObject *__pyx_kp_fd;
static char __pyx_k_keyval[] = "keyval";
static PyObject *__pyx_kp_keyval;
static char __pyx_k_errhandler[] = "errhandler";
static PyObject *__pyx_kp_errhandler;
static char __pyx_k_obj[] = "obj";
static PyObject *__pyx_kp_obj;
static char __pyx_k_sendobj[] = "sendobj";
static PyObject *__pyx_kp_sendobj;
static char __pyx_k_recvobj[] = "recvobj";
static PyObject *__pyx_kp_recvobj;
static char __pyx_k_group[] = "group";
static PyObject *__pyx_kp_group;
static char __pyx_k_color[] = "color";
static PyObject *__pyx_kp_color;
static char __pyx_k_dims[] = "dims";
static PyObject *__pyx_kp_dims;
static char __pyx_k_periods[] = "periods";
static PyObject *__pyx_kp_periods;
static char __pyx_k_reorder[] = "reorder";
static PyObject *__pyx_kp_reorder;
static char __pyx_k_index[] = "index";
static PyObject *__pyx_kp_index;
static char __pyx_k_edges[] = "edges";
static PyObject *__pyx_kp_edges;
static char __pyx_k_local_leader[] = "local_leader";
static PyObject *__pyx_kp_local_leader;
static char __pyx_k_peer_comm[] = "peer_comm";
static PyObject *__pyx_kp_peer_comm;
static char __pyx_k_remote_leader[] = "remote_leader";
static PyObject *__pyx_kp_remote_leader;
static char __pyx_k_command[] = "command";
static PyObject *__pyx_kp_command;
static char __pyx_k_maxprocs[] = "maxprocs";
static PyObject *__pyx_kp_maxprocs;
static char __pyx_k_info[] = "info";
static PyObject *__pyx_kp_info;
static char __pyx_k_errcodes[] = "errcodes";
static PyObject *__pyx_kp_errcodes;
static char __pyx_k_port_name[] = "port_name";
static PyObject *__pyx_kp_port_name;
static char __pyx_k_coords[] = "coords";
static PyObject *__pyx_kp_coords;
static char __pyx_k_direction[] = "direction";
static PyObject *__pyx_kp_direction;
static char __pyx_k_disp[] = "disp";
static PyObject *__pyx_kp_disp;
static char __pyx_k_remain_dims[] = "remain_dims";
static PyObject *__pyx_kp_remain_dims;
static char __pyx_k_nnodes[] = "nnodes";
static PyObject *__pyx_kp_nnodes;
static char __pyx_k_high[] = "high";
static PyObject *__pyx_kp_high;
static char __pyx_k_memory[] = "memory";
static PyObject *__pyx_kp_memory;
static char __pyx_k_service_name[] = "service_name";
static PyObject *__pyx_kp_service_name;
static char __pyx_k_disp_unit[] = "disp_unit";
static PyObject *__pyx_kp_disp_unit;
static char __pyx_k_origin[] = "origin";
static PyObject *__pyx_kp_origin;
static char __pyx_k_target_rank[] = "target_rank";
static PyObject *__pyx_kp_target_rank;
static char __pyx_k_target[] = "target";
static PyObject *__pyx_kp_target;
static char __pyx_k_assertion[] = "assertion";
static PyObject *__pyx_kp_assertion;
static char __pyx_k_lock_type[] = "lock_type";
static PyObject *__pyx_kp_lock_type;
static char __pyx_k_filename[] = "filename";
static PyObject *__pyx_kp_filename;
static char __pyx_k_amode[] = "amode";
static PyObject *__pyx_kp_amode;
static char __pyx_k_etype[] = "etype";
static PyObject *__pyx_kp_etype;
static char __pyx_k_filetype[] = "filetype";
static PyObject *__pyx_kp_filetype;
static char __pyx_k_offset[] = "offset";
static PyObject *__pyx_kp_offset;
static char __pyx_k_whence[] = "whence";
static PyObject *__pyx_kp_whence;
static char __pyx_k_required[] = "required";
static PyObject *__pyx_kp_required;
static char __pyx_k___doc__[] = "__doc__";
static PyObject *__pyx_kp___doc__;
static char __pyx_k_cPickle[] = "cPickle";
static PyObject *__pyx_kp_cPickle;
static char __pyx_k_dumps[] = "dumps";
static PyObject *__pyx_kp_dumps;
static char __pyx_k_loads[] = "loads";
static PyObject *__pyx_kp_loads;
static char __pyx_k_HIGHEST_PROTOCOL[] = "HIGHEST_PROTOCOL";
static PyObject *__pyx_kp_HIGHEST_PROTOCOL;
static char __pyx_k_ImportError[] = "ImportError";
static PyObject *__pyx_kp_ImportError;
static char __pyx_k_pickle[] = "pickle";
static PyObject *__pyx_kp_pickle;
static char __pyx_k_Exception[] = "Exception";
static PyObject *__pyx_kp_Exception;
static char __pyx_k_RuntimeError[] = "RuntimeError";
static PyObject *__pyx_kp_RuntimeError;
static char __pyx_k___init__[] = "__init__";
static PyObject *__pyx_kp___init__;
static char __pyx_k___eq__[] = "__eq__";
static PyObject *__pyx_kp___eq__;
static char __pyx_k___ne__[] = "__ne__";
static PyObject *__pyx_kp___ne__;
static char __pyx_k___lt__[] = "__lt__";
static PyObject *__pyx_kp___lt__;
static char __pyx_k___le__[] = "__le__";
static PyObject *__pyx_kp___le__;
static char __pyx_k___gt__[] = "__gt__";
static PyObject *__pyx_kp___gt__;
static char __pyx_k___ge__[] = "__ge__";
static PyObject *__pyx_kp___ge__;
static char __pyx_k___bool__[] = "__bool__";
static PyObject *__pyx_kp___bool__;
static char __pyx_k___int__[] = "__int__";
static PyObject *__pyx_kp___int__;
static char __pyx_k___repr__[] = "__repr__";
static PyObject *__pyx_kp___repr__;
static char __pyx_k___str__[] = "__str__";
static PyObject *__pyx_kp___str__;
static char __pyx_k_Get_error_code[] = "Get_error_code";
static PyObject *__pyx_kp_Get_error_code;
static char __pyx_k_property[] = "property";
static PyObject *__pyx_kp_property;
static char __pyx_k_doc[] = "doc";
static PyObject *__pyx_kp_doc;
static char __pyx_k_error_code[] = "error_code";
static PyObject *__pyx_kp_error_code;
static char __pyx_k_Get_error_class[] = "Get_error_class";
static PyObject *__pyx_kp_Get_error_class;
static char __pyx_k_error_class[] = "error_class";
static PyObject *__pyx_kp_error_class;
static char __pyx_k_Get_error_string[] = "Get_error_string";
static PyObject *__pyx_kp_Get_error_string;
static char __pyx_k_error_string[] = "error_string";
static PyObject *__pyx_kp_error_string;
static char __pyx_k_SUCCESS[] = "SUCCESS";
static PyObject *__pyx_kp_SUCCESS;
static char __pyx_k_ERR_LASTCODE[] = "ERR_LASTCODE";
static PyObject *__pyx_kp_ERR_LASTCODE;
static char __pyx_k_ERR_COMM[] = "ERR_COMM";
static PyObject *__pyx_kp_ERR_COMM;
static char __pyx_k_ERR_GROUP[] = "ERR_GROUP";
static PyObject *__pyx_kp_ERR_GROUP;
static char __pyx_k_ERR_TYPE[] = "ERR_TYPE";
static PyObject *__pyx_kp_ERR_TYPE;
static char __pyx_k_ERR_REQUEST[] = "ERR_REQUEST";
static PyObject *__pyx_kp_ERR_REQUEST;
static char __pyx_k_ERR_OP[] = "ERR_OP";
static PyObject *__pyx_kp_ERR_OP;
static char __pyx_k_ERR_BUFFER[] = "ERR_BUFFER";
static PyObject *__pyx_kp_ERR_BUFFER;
static char __pyx_k_ERR_COUNT[] = "ERR_COUNT";
static PyObject *__pyx_kp_ERR_COUNT;
static char __pyx_k_ERR_TAG[] = "ERR_TAG";
static PyObject *__pyx_kp_ERR_TAG;
static char __pyx_k_ERR_RANK[] = "ERR_RANK";
static PyObject *__pyx_kp_ERR_RANK;
static char __pyx_k_ERR_ROOT[] = "ERR_ROOT";
static PyObject *__pyx_kp_ERR_ROOT;
static char __pyx_k_ERR_TRUNCATE[] = "ERR_TRUNCATE";
static PyObject *__pyx_kp_ERR_TRUNCATE;
static char __pyx_k_ERR_IN_STATUS[] = "ERR_IN_STATUS";
static PyObject *__pyx_kp_ERR_IN_STATUS;
static char __pyx_k_ERR_PENDING[] = "ERR_PENDING";
static PyObject *__pyx_kp_ERR_PENDING;
static char __pyx_k_ERR_TOPOLOGY[] = "ERR_TOPOLOGY";
static PyObject *__pyx_kp_ERR_TOPOLOGY;
static char __pyx_k_ERR_DIMS[] = "ERR_DIMS";
static PyObject *__pyx_kp_ERR_DIMS;
static char __pyx_k_ERR_ARG[] = "ERR_ARG";
static PyObject *__pyx_kp_ERR_ARG;
static char __pyx_k_ERR_OTHER[] = "ERR_OTHER";
static PyObject *__pyx_kp_ERR_OTHER;
static char __pyx_k_ERR_UNKNOWN[] = "ERR_UNKNOWN";
static PyObject *__pyx_kp_ERR_UNKNOWN;
static char __pyx_k_ERR_INTERN[] = "ERR_INTERN";
static PyObject *__pyx_kp_ERR_INTERN;
static char __pyx_k_ERR_INFO[] = "ERR_INFO";
static PyObject *__pyx_kp_ERR_INFO;
static char __pyx_k_ERR_FILE[] = "ERR_FILE";
static PyObject *__pyx_kp_ERR_FILE;
static char __pyx_k_ERR_WIN[] = "ERR_WIN";
static PyObject *__pyx_kp_ERR_WIN;
static char __pyx_k_ERR_KEYVAL[] = "ERR_KEYVAL";
static PyObject *__pyx_kp_ERR_KEYVAL;
static char __pyx_k_ERR_INFO_KEY[] = "ERR_INFO_KEY";
static PyObject *__pyx_kp_ERR_INFO_KEY;
static char __pyx_k_ERR_INFO_VALUE[] = "ERR_INFO_VALUE";
static PyObject *__pyx_kp_ERR_INFO_VALUE;
static char __pyx_k_ERR_INFO_NOKEY[] = "ERR_INFO_NOKEY";
static PyObject *__pyx_kp_ERR_INFO_NOKEY;
static char __pyx_k_ERR_ACCESS[] = "ERR_ACCESS";
static PyObject *__pyx_kp_ERR_ACCESS;
static char __pyx_k_ERR_AMODE[] = "ERR_AMODE";
static PyObject *__pyx_kp_ERR_AMODE;
static char __pyx_k_ERR_BAD_FILE[] = "ERR_BAD_FILE";
static PyObject *__pyx_kp_ERR_BAD_FILE;
static char __pyx_k_ERR_FILE_EXISTS[] = "ERR_FILE_EXISTS";
static PyObject *__pyx_kp_ERR_FILE_EXISTS;
static char __pyx_k_ERR_FILE_IN_USE[] = "ERR_FILE_IN_USE";
static PyObject *__pyx_kp_ERR_FILE_IN_USE;
static char __pyx_k_ERR_NO_SPACE[] = "ERR_NO_SPACE";
static PyObject *__pyx_kp_ERR_NO_SPACE;
static char __pyx_k_ERR_NO_SUCH_FILE[] = "ERR_NO_SUCH_FILE";
static PyObject *__pyx_kp_ERR_NO_SUCH_FILE;
static char __pyx_k_ERR_IO[] = "ERR_IO";
static PyObject *__pyx_kp_ERR_IO;
static char __pyx_k_ERR_READ_ONLY[] = "ERR_READ_ONLY";
static PyObject *__pyx_kp_ERR_READ_ONLY;
static char __pyx_k_ERR_CONVERSION[] = "ERR_CONVERSION";
static PyObject *__pyx_kp_ERR_CONVERSION;
static char __pyx_k_ERR_DUP_DATAREP[] = "ERR_DUP_DATAREP";
static PyObject *__pyx_kp_ERR_DUP_DATAREP;
static char __pyx_k_58[] = "ERR_UNSUPPORTED_DATAREP";
static PyObject *__pyx_kp_58;
static char __pyx_k_59[] = "ERR_UNSUPPORTED_OPERATION";
static PyObject *__pyx_kp_59;
static char __pyx_k_ERR_NAME[] = "ERR_NAME";
static PyObject *__pyx_kp_ERR_NAME;
static char __pyx_k_ERR_NO_MEM[] = "ERR_NO_MEM";
static PyObject *__pyx_kp_ERR_NO_MEM;
static char __pyx_k_ERR_NOT_SAME[] = "ERR_NOT_SAME";
static PyObject *__pyx_kp_ERR_NOT_SAME;
static char __pyx_k_ERR_PORT[] = "ERR_PORT";
static PyObject *__pyx_kp_ERR_PORT;
static char __pyx_k_ERR_QUOTA[] = "ERR_QUOTA";
static PyObject *__pyx_kp_ERR_QUOTA;
static char __pyx_k_ERR_SERVICE[] = "ERR_SERVICE";
static PyObject *__pyx_kp_ERR_SERVICE;
static char __pyx_k_ERR_SPAWN[] = "ERR_SPAWN";
static PyObject *__pyx_kp_ERR_SPAWN;
static char __pyx_k_ERR_BASE[] = "ERR_BASE";
static PyObject *__pyx_kp_ERR_BASE;
static char __pyx_k_ERR_LOCKTYPE[] = "ERR_LOCKTYPE";
static PyObject *__pyx_kp_ERR_LOCKTYPE;
static char __pyx_k_ERR_RMA_CONFLICT[] = "ERR_RMA_CONFLICT";
static PyObject *__pyx_kp_ERR_RMA_CONFLICT;
static char __pyx_k_ERR_RMA_SYNC[] = "ERR_RMA_SYNC";
static PyObject *__pyx_kp_ERR_RMA_SYNC;
static char __pyx_k_ERR_SIZE[] = "ERR_SIZE";
static PyObject *__pyx_kp_ERR_SIZE;
static char __pyx_k_ERR_DISP[] = "ERR_DISP";
static PyObject *__pyx_kp_ERR_DISP;
static char __pyx_k_ERR_ASSERT[] = "ERR_ASSERT";
static PyObject *__pyx_kp_ERR_ASSERT;
static char __pyx_k_ERRHANDLER_NULL[] = "ERRHANDLER_NULL";
static PyObject *__pyx_kp_ERRHANDLER_NULL;
static char __pyx_k_ERRORS_RETURN[] = "ERRORS_RETURN";
static PyObject *__pyx_kp_ERRORS_RETURN;
static char __pyx_k_ERRORS_ARE_FATAL[] = "ERRORS_ARE_FATAL";
static PyObject *__pyx_kp_ERRORS_ARE_FATAL;
static char __pyx_k_ORDER_C[] = "ORDER_C";
static PyObject *__pyx_kp_ORDER_C;
static char __pyx_k_ORDER_FORTRAN[] = "ORDER_FORTRAN";
static PyObject *__pyx_kp_ORDER_FORTRAN;
static char __pyx_k_ORDER_F[] = "ORDER_F";
static PyObject *__pyx_kp_ORDER_F;
static char __pyx_k_TYPECLASS_INTEGER[] = "TYPECLASS_INTEGER";
static PyObject *__pyx_kp_TYPECLASS_INTEGER;
static char __pyx_k_TYPECLASS_REAL[] = "TYPECLASS_REAL";
static PyObject *__pyx_kp_TYPECLASS_REAL;
static char __pyx_k_TYPECLASS_COMPLEX[] = "TYPECLASS_COMPLEX";
static PyObject *__pyx_kp_TYPECLASS_COMPLEX;
static char __pyx_k_DISTRIBUTE_NONE[] = "DISTRIBUTE_NONE";
static PyObject *__pyx_kp_DISTRIBUTE_NONE;
static char __pyx_k_DISTRIBUTE_BLOCK[] = "DISTRIBUTE_BLOCK";
static PyObject *__pyx_kp_DISTRIBUTE_BLOCK;
static char __pyx_k_DISTRIBUTE_CYCLIC[] = "DISTRIBUTE_CYCLIC";
static PyObject *__pyx_kp_DISTRIBUTE_CYCLIC;
static char __pyx_k_60[] = "DISTRIBUTE_DFLT_DARG";
static PyObject *__pyx_kp_60;
static char __pyx_k_DATATYPE_NULL[] = "DATATYPE_NULL";
static PyObject *__pyx_kp_DATATYPE_NULL;
static char __pyx_k_CHAR[] = "CHAR";
static PyObject *__pyx_kp_CHAR;
static char __pyx_k_WCHAR[] = "WCHAR";
static PyObject *__pyx_kp_WCHAR;
static char __pyx_k_SIGNED_CHAR[] = "SIGNED_CHAR";
static PyObject *__pyx_kp_SIGNED_CHAR;
static char __pyx_k_UNSIGNED_CHAR[] = "UNSIGNED_CHAR";
static PyObject *__pyx_kp_UNSIGNED_CHAR;
static char __pyx_k_SHORT[] = "SHORT";
static PyObject *__pyx_kp_SHORT;
static char __pyx_k_UNSIGNED_SHORT[] = "UNSIGNED_SHORT";
static PyObject *__pyx_kp_UNSIGNED_SHORT;
static char __pyx_k_INT[] = "INT";
static PyObject *__pyx_kp_INT;
static char __pyx_k_UNSIGNED[] = "UNSIGNED";
static PyObject *__pyx_kp_UNSIGNED;
static char __pyx_k_LONG[] = "LONG";
static PyObject *__pyx_kp_LONG;
static char __pyx_k_UNSIGNED_LONG[] = "UNSIGNED_LONG";
static PyObject *__pyx_kp_UNSIGNED_LONG;
static char __pyx_k_FLOAT[] = "FLOAT";
static PyObject *__pyx_kp_FLOAT;
static char __pyx_k_DOUBLE[] = "DOUBLE";
static PyObject *__pyx_kp_DOUBLE;
static char __pyx_k_LONG_DOUBLE[] = "LONG_DOUBLE";
static PyObject *__pyx_kp_LONG_DOUBLE;
static char __pyx_k_BYTE[] = "BYTE";
static PyObject *__pyx_kp_BYTE;
static char __pyx_k_PACKED[] = "PACKED";
static PyObject *__pyx_kp_PACKED;
static char __pyx_k_SHORT_INT[] = "SHORT_INT";
static PyObject *__pyx_kp_SHORT_INT;
static char __pyx_k_TWOINT[] = "TWOINT";
static PyObject *__pyx_kp_TWOINT;
static char __pyx_k_LONG_INT[] = "LONG_INT";
static PyObject *__pyx_kp_LONG_INT;
static char __pyx_k_FLOAT_INT[] = "FLOAT_INT";
static PyObject *__pyx_kp_FLOAT_INT;
static char __pyx_k_DOUBLE_INT[] = "DOUBLE_INT";
static PyObject *__pyx_kp_DOUBLE_INT;
static char __pyx_k_LONG_DOUBLE_INT[] = "LONG_DOUBLE_INT";
static PyObject *__pyx_kp_LONG_DOUBLE_INT;
static char __pyx_k_LONG_LONG[] = "LONG_LONG";
static PyObject *__pyx_kp_LONG_LONG;
static char __pyx_k_UNSIGNED_LONG_LONG[] = "UNSIGNED_LONG_LONG";
static PyObject *__pyx_kp_UNSIGNED_LONG_LONG;
static char __pyx_k_LONG_LONG_INT[] = "LONG_LONG_INT";
static PyObject *__pyx_kp_LONG_LONG_INT;
static char __pyx_k_CHARACTER[] = "CHARACTER";
static PyObject *__pyx_kp_CHARACTER;
static char __pyx_k_LOGICAL[] = "LOGICAL";
static PyObject *__pyx_kp_LOGICAL;
static char __pyx_k_INTEGER[] = "INTEGER";
static PyObject *__pyx_kp_INTEGER;
static char __pyx_k_REAL[] = "REAL";
static PyObject *__pyx_kp_REAL;
static char __pyx_k_DOUBLE_PRECISION[] = "DOUBLE_PRECISION";
static PyObject *__pyx_kp_DOUBLE_PRECISION;
static char __pyx_k_F_COMPLEX[] = "F_COMPLEX";
static PyObject *__pyx_kp_F_COMPLEX;
static char __pyx_k_F_DOUBLE_COMPLEX[] = "F_DOUBLE_COMPLEX";
static PyObject *__pyx_kp_F_DOUBLE_COMPLEX;
static char __pyx_k_UB[] = "UB";
static PyObject *__pyx_kp_UB;
static char __pyx_k_LB[] = "LB";
static PyObject *__pyx_kp_LB;
static char __pyx_k_UNSIGNED_INT[] = "UNSIGNED_INT";
static PyObject *__pyx_kp_UNSIGNED_INT;
static char __pyx_k_INT_INT[] = "INT_INT";
static PyObject *__pyx_kp_INT_INT;
static char __pyx_k_REQUEST_NULL[] = "REQUEST_NULL";
static PyObject *__pyx_kp_REQUEST_NULL;
static char __pyx_k_INFO_NULL[] = "INFO_NULL";
static PyObject *__pyx_kp_INFO_NULL;
static char __pyx_k_OP_NULL[] = "OP_NULL";
static PyObject *__pyx_kp_OP_NULL;
static char __pyx_k_MAX[] = "MAX";
static PyObject *__pyx_kp_MAX;
static char __pyx_k_MIN[] = "MIN";
static PyObject *__pyx_kp_MIN;
static char __pyx_k_SUM[] = "SUM";
static PyObject *__pyx_kp_SUM;
static char __pyx_k_PROD[] = "PROD";
static PyObject *__pyx_kp_PROD;
static char __pyx_k_LAND[] = "LAND";
static PyObject *__pyx_kp_LAND;
static char __pyx_k_BAND[] = "BAND";
static PyObject *__pyx_kp_BAND;
static char __pyx_k_LOR[] = "LOR";
static PyObject *__pyx_kp_LOR;
static char __pyx_k_BOR[] = "BOR";
static PyObject *__pyx_kp_BOR;
static char __pyx_k_LXOR[] = "LXOR";
static PyObject *__pyx_kp_LXOR;
static char __pyx_k_BXOR[] = "BXOR";
static PyObject *__pyx_kp_BXOR;
static char __pyx_k_MAXLOC[] = "MAXLOC";
static PyObject *__pyx_kp_MAXLOC;
static char __pyx_k_MINLOC[] = "MINLOC";
static PyObject *__pyx_kp_MINLOC;
static char __pyx_k_REPLACE[] = "REPLACE";
static PyObject *__pyx_kp_REPLACE;
static char __pyx_k_GROUP_NULL[] = "GROUP_NULL";
static PyObject *__pyx_kp_GROUP_NULL;
static char __pyx_k_GROUP_EMPTY[] = "GROUP_EMPTY";
static PyObject *__pyx_kp_GROUP_EMPTY;
static char __pyx_k_IDENT[] = "IDENT";
static PyObject *__pyx_kp_IDENT;
static char __pyx_k_CONGRUENT[] = "CONGRUENT";
static PyObject *__pyx_kp_CONGRUENT;
static char __pyx_k_SIMILAR[] = "SIMILAR";
static PyObject *__pyx_kp_SIMILAR;
static char __pyx_k_UNEQUAL[] = "UNEQUAL";
static PyObject *__pyx_kp_UNEQUAL;
static char __pyx_k_CART[] = "CART";
static PyObject *__pyx_kp_CART;
static char __pyx_k_GRAPH[] = "GRAPH";
static PyObject *__pyx_kp_GRAPH;
static char __pyx_k_COMM_NULL[] = "COMM_NULL";
static PyObject *__pyx_kp_COMM_NULL;
static char __pyx_k_COMM_SELF[] = "COMM_SELF";
static PyObject *__pyx_kp_COMM_SELF;
static char __pyx_k_COMM_WORLD[] = "COMM_WORLD";
static PyObject *__pyx_kp_COMM_WORLD;
static char __pyx_k_BSEND_OVERHEAD[] = "BSEND_OVERHEAD";
static PyObject *__pyx_kp_BSEND_OVERHEAD;
static char __pyx_k_MODE_NOCHECK[] = "MODE_NOCHECK";
static PyObject *__pyx_kp_MODE_NOCHECK;
static char __pyx_k_MODE_NOSTORE[] = "MODE_NOSTORE";
static PyObject *__pyx_kp_MODE_NOSTORE;
static char __pyx_k_MODE_NOPUT[] = "MODE_NOPUT";
static PyObject *__pyx_kp_MODE_NOPUT;
static char __pyx_k_MODE_NOPRECEDE[] = "MODE_NOPRECEDE";
static PyObject *__pyx_kp_MODE_NOPRECEDE;
static char __pyx_k_MODE_NOSUCCEED[] = "MODE_NOSUCCEED";
static PyObject *__pyx_kp_MODE_NOSUCCEED;
static char __pyx_k_LOCK_EXCLUSIVE[] = "LOCK_EXCLUSIVE";
static PyObject *__pyx_kp_LOCK_EXCLUSIVE;
static char __pyx_k_LOCK_SHARED[] = "LOCK_SHARED";
static PyObject *__pyx_kp_LOCK_SHARED;
static char __pyx_k_WIN_NULL[] = "WIN_NULL";
static PyObject *__pyx_kp_WIN_NULL;
static char __pyx_k_MODE_RDONLY[] = "MODE_RDONLY";
static PyObject *__pyx_kp_MODE_RDONLY;
static char __pyx_k_MODE_WRONLY[] = "MODE_WRONLY";
static PyObject *__pyx_kp_MODE_WRONLY;
static char __pyx_k_MODE_RDWR[] = "MODE_RDWR";
static PyObject *__pyx_kp_MODE_RDWR;
static char __pyx_k_MODE_CREATE[] = "MODE_CREATE";
static PyObject *__pyx_kp_MODE_CREATE;
static char __pyx_k_MODE_EXCL[] = "MODE_EXCL";
static PyObject *__pyx_kp_MODE_EXCL;
static char __pyx_k_82[] = "MODE_DELETE_ON_CLOSE";
static PyObject *__pyx_kp_82;
static char __pyx_k_MODE_UNIQUE_OPEN[] = "MODE_UNIQUE_OPEN";
static PyObject *__pyx_kp_MODE_UNIQUE_OPEN;
static char __pyx_k_MODE_SEQUENTIAL[] = "MODE_SEQUENTIAL";
static PyObject *__pyx_kp_MODE_SEQUENTIAL;
static char __pyx_k_MODE_APPEND[] = "MODE_APPEND";
static PyObject *__pyx_kp_MODE_APPEND;
static char __pyx_k_SEEK_SET[] = "SEEK_SET";
static PyObject *__pyx_kp_SEEK_SET;
static char __pyx_k_SEEK_CUR[] = "SEEK_CUR";
static PyObject *__pyx_kp_SEEK_CUR;
static char __pyx_k_SEEK_END[] = "SEEK_END";
static PyObject *__pyx_kp_SEEK_END;
static char __pyx_k_83[] = "DISPLACEMENT_CURRENT";
static PyObject *__pyx_kp_83;
static char __pyx_k_DISP_CUR[] = "DISP_CUR";
static PyObject *__pyx_kp_DISP_CUR;
static char __pyx_k_FILE_NULL[] = "FILE_NULL";
static PyObject *__pyx_kp_FILE_NULL;
static char __pyx_k_UNDEFINED[] = "UNDEFINED";
static PyObject *__pyx_kp_UNDEFINED;
static char __pyx_k_ANY_SOURCE[] = "ANY_SOURCE";
static PyObject *__pyx_kp_ANY_SOURCE;
static char __pyx_k_ANY_TAG[] = "ANY_TAG";
static PyObject *__pyx_kp_ANY_TAG;
static char __pyx_k_PROC_NULL[] = "PROC_NULL";
static PyObject *__pyx_kp_PROC_NULL;
static char __pyx_k_ROOT[] = "ROOT";
static PyObject *__pyx_kp_ROOT;
static char __pyx_k_BOTTOM[] = "BOTTOM";
static PyObject *__pyx_kp_BOTTOM;
static char __pyx_k_IN_PLACE[] = "IN_PLACE";
static PyObject *__pyx_kp_IN_PLACE;
static char __pyx_k_KEYVAL_INVALID[] = "KEYVAL_INVALID";
static PyObject *__pyx_kp_KEYVAL_INVALID;
static char __pyx_k_TAG_UB[] = "TAG_UB";
static PyObject *__pyx_kp_TAG_UB;
static char __pyx_k_HOST[] = "HOST";
static PyObject *__pyx_kp_HOST;
static char __pyx_k_IO[] = "IO";
static PyObject *__pyx_kp_IO;
static char __pyx_k_WTIME_IS_GLOBAL[] = "WTIME_IS_GLOBAL";
static PyObject *__pyx_kp_WTIME_IS_GLOBAL;
static char __pyx_k_UNIVERSE_SIZE[] = "UNIVERSE_SIZE";
static PyObject *__pyx_kp_UNIVERSE_SIZE;
static char __pyx_k_APPNUM[] = "APPNUM";
static PyObject *__pyx_kp_APPNUM;
static char __pyx_k_LASTUSEDCODE[] = "LASTUSEDCODE";
static PyObject *__pyx_kp_LASTUSEDCODE;
static char __pyx_k_WIN_BASE[] = "WIN_BASE";
static PyObject *__pyx_kp_WIN_BASE;
static char __pyx_k_WIN_SIZE[] = "WIN_SIZE";
static PyObject *__pyx_kp_WIN_SIZE;
static char __pyx_k_WIN_DISP_UNIT[] = "WIN_DISP_UNIT";
static PyObject *__pyx_kp_WIN_DISP_UNIT;
static char __pyx_k_THREAD_SINGLE[] = "THREAD_SINGLE";
static PyObject *__pyx_kp_THREAD_SINGLE;
static char __pyx_k_THREAD_FUNNELED[] = "THREAD_FUNNELED";
static PyObject *__pyx_kp_THREAD_FUNNELED;
static char __pyx_k_THREAD_SERIALIZED[] = "THREAD_SERIALIZED";
static PyObject *__pyx_kp_THREAD_SERIALIZED;
static char __pyx_k_THREAD_MULTIPLE[] = "THREAD_MULTIPLE";
static PyObject *__pyx_kp_THREAD_MULTIPLE;
static char __pyx_k_VERSION[] = "VERSION";
static PyObject *__pyx_kp_VERSION;
static char __pyx_k_SUBVERSION[] = "SUBVERSION";
static PyObject *__pyx_kp_SUBVERSION;
static char __pyx_k_MAX_PROCESSOR_NAME[] = "MAX_PROCESSOR_NAME";
static PyObject *__pyx_kp_MAX_PROCESSOR_NAME;
static char __pyx_k_MAX_ERROR_STRING[] = "MAX_ERROR_STRING";
static PyObject *__pyx_kp_MAX_ERROR_STRING;
static char __pyx_k_MAX_PORT_NAME[] = "MAX_PORT_NAME";
static PyObject *__pyx_kp_MAX_PORT_NAME;
static char __pyx_k_MAX_INFO_KEY[] = "MAX_INFO_KEY";
static PyObject *__pyx_kp_MAX_INFO_KEY;
static char __pyx_k_MAX_INFO_VAL[] = "MAX_INFO_VAL";
static PyObject *__pyx_kp_MAX_INFO_VAL;
static char __pyx_k_MAX_OBJECT_NAME[] = "MAX_OBJECT_NAME";
static PyObject *__pyx_kp_MAX_OBJECT_NAME;
static char __pyx_k_MAX_DATAREP_STRING[] = "MAX_DATAREP_STRING";
static PyObject *__pyx_kp_MAX_DATAREP_STRING;
static char __pyx_k_warnings[] = "warnings";
static PyObject *__pyx_kp_warnings;
static char __pyx_k_warn[] = "warn";
static PyObject *__pyx_kp_warn;
static char __pyx_k_93[] = "mpi4py";
static PyObject *__pyx_kp_93;
static char __pyx_k_rc[] = "rc";
static PyObject *__pyx_kp_rc;
static char __pyx_k_94[] = "multiple";
static PyObject *__pyx_kp_94;
static char __pyx_k_initialize[] = "initialize";
static PyObject *__pyx_kp_initialize;
static char __pyx_k_threaded[] = "threaded";
static PyObject *__pyx_kp_threaded;
static char __pyx_k_thread_level[] = "thread_level";
static PyObject *__pyx_kp_thread_level;
static char __pyx_k_finalize[] = "finalize";
static PyObject *__pyx_kp_finalize;
static char __pyx_k_95[] = "yes";
static PyObject *__pyx_kp_95;
static char __pyx_k_96[] = "no";
static PyObject *__pyx_kp_96;
static char __pyx_k_97[] = "initialize";
static PyObject *__pyx_kp_97;
static char __pyx_k_98[] = "yes";
static PyObject *__pyx_kp_98;
static char __pyx_k_99[] = "no";
static PyObject *__pyx_kp_99;
static char __pyx_k_100[] = "threaded";
static PyObject *__pyx_kp_100;
static char __pyx_k_101[] = "single";
static PyObject *__pyx_kp_101;
static char __pyx_k_102[] = "funneled";
static PyObject *__pyx_kp_102;
static char __pyx_k_103[] = "serialized";
static PyObject *__pyx_kp_103;
static char __pyx_k_104[] = "multiple";
static PyObject *__pyx_kp_104;
static char __pyx_k_105[] = "thread_level";
static PyObject *__pyx_kp_105;
static char __pyx_k_106[] = "yes";
static PyObject *__pyx_kp_106;
static char __pyx_k_107[] = "no";
static PyObject *__pyx_kp_107;
static char __pyx_k_108[] = "finalize";
static PyObject *__pyx_kp_108;
static char __pyx_k_MemoryError[] = "MemoryError";
static PyObject *__pyx_kp_MemoryError;
static char __pyx_k_max[] = "max";
static PyObject *__pyx_kp_max;
static char __pyx_k_min[] = "min";
static PyObject *__pyx_kp_min;
static char __pyx_k_TypeError[] = "TypeError";
static PyObject *__pyx_kp_TypeError;
static char __pyx_k_ValueError[] = "ValueError";
static PyObject *__pyx_kp_ValueError;
static char __pyx_k_zip[] = "zip";
static PyObject *__pyx_kp_zip;
static char __pyx_k_range[] = "range";
static PyObject *__pyx_kp_range;
static char __pyx_k_pop[] = "pop";
static PyObject *__pyx_kp_pop;
static char __pyx_k_insert[] = "insert";
static PyObject *__pyx_kp_insert;
static char __pyx_k_join[] = "join";
static PyObject *__pyx_kp_join;
static char __pyx_k_ob_mpi[] = "ob_mpi";
static PyObject *__pyx_kp_ob_mpi;
static char __pyx_k_NotImplemented[] = "NotImplemented";
static PyObject *__pyx_kp_NotImplemented;
static char __pyx_k_KeyError[] = "KeyError";
static PyObject *__pyx_kp_KeyError;
static char __pyx_k_137[] = "keys";
static PyObject *__pyx_kp_137;
static char __pyx_k_NotImplementedError[] = "NotImplementedError";
static PyObject *__pyx_kp_NotImplementedError;
static PyObject *__pyx_kp_53;
static PyObject *__pyx_kp_54;
static PyObject *__pyx_builtin_ImportError;
static PyObject *__pyx_builtin_RuntimeError;
static PyObject *__pyx_builtin_property;
static PyObject *__pyx_builtin_MemoryError;
static PyObject *__pyx_builtin_max;
static PyObject *__pyx_builtin_min;
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_zip;
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_NotImplemented;
static PyObject *__pyx_builtin_KeyError;
static PyObject *__pyx_builtin_NotImplementedError;
static PyObject *__pyx_kp_92;
static char __pyx_k_92[] = "mpi4py.rc: '%s': unexpected value '%r'";
static PyObject *__pyx_kp_110;
static PyObject *__pyx_kp_111;
static char __pyx_k_109[] = "warning: could not registercleanup with Py_AtExit()";
static char __pyx_k_110[] = "MPI_Init_thread() failed [error code: %d]";
static char __pyx_k_111[] = "MPI_Init() failed [error code: %d]";
static char __pyx_k_112[] = "warning: could not registercleanup with Py_AtExit()";
static PyObject *__pyx_kp_113;
static char __pyx_k_113[] = "expecting %d items, got %d";
static PyObject *__pyx_kp_114;
static char __pyx_k_114[] = "expecting %d items, got %d";
static PyObject *__pyx_kp_115;
static char __pyx_k_115[] = "expecting %d items, got %d";
static PyObject *__pyx_kp_116;
static char __pyx_k_116[] = "expecting %d items, got %d";
static char __pyx_k_117[] = "message: expecting a list or tuple";
static char __pyx_k_118[] = "message: expecting 2 or 3 items";
static char __pyx_k_119[] = "message: buffer length %d is not a multiple of datatype extent %d (lb:%d, ub:%d)";
static char __pyx_k_120[] = "message: number of datatype items %d is not a multiple of the required number of blocks %d";
static char __pyx_k_121[] = "message: expecting a list or tuple";
static char __pyx_k_122[] = "message: expecting 3 or 4 items";
static char __pyx_k_123[] = "origin: expecting a list or tuple";
static char __pyx_k_124[] = "origin: expecting 2 or 3 items";
static char __pyx_k_125[] = "target: expecting a list or tuple";
static char __pyx_k_126[] = "target: expecting at most 3 items";
static PyObject *__pyx_kp_128;
static PyObject *__pyx_kp_129;
static char __pyx_k_127[] = "expecting %d items, got %d";
static char __pyx_k_128[] = "";
static char __pyx_k_129[] = "";
static char __pyx_k_130[] = "MPI.Exception(%d)";
static char __pyx_k_131[] = "error code: %d";
static char __pyx_k_132[] = "only '==' and '!='";
static char __pyx_k_133[] = "only '==' and '!='";
static char __pyx_k_134[] = "only '==' and '!='";
static char __pyx_k_135[] = "only '==' and '!='";
static char __pyx_k_136[] = "only '==' and '!='";
static char __pyx_k_138[] = "only '==' and '!='";
static char __pyx_k_139[] = "only '==' and '!='";
static char __pyx_k_140[] = "only '==' and '!='";
static char __pyx_k_141[] = "only '==' and '!='";
static char __pyx_k_142[] = "only '==' and '!='";
static char __pyx_k_143[] = "native";

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":35
 *     int finalize
 * 
 * cdef int warnRC(object attr, object value) except -1:             # <<<<<<<<<<<<<<
 *     from warnings import warn
 *     warn(u"mpi4py.rc: '%s': unexpected value '%r'" % (attr, value))
 */

static  int __pyx_f_6mpi4py_3MPI_warnRC(PyObject *__pyx_v_attr, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_warn;
  int __pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("warnRC");
  __pyx_v_warn = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":36
 * 
 * cdef int warnRC(object attr, object value) except -1:
 *     from warnings import warn             # <<<<<<<<<<<<<<
 *     warn(u"mpi4py.rc: '%s': unexpected value '%r'" % (attr, value))
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_kp_warn);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_kp_warn);
  __Pyx_GIVEREF(__pyx_kp_warn);
  __pyx_1 = __Pyx_Import(__pyx_kp_warnings, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_warn); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  __Pyx_DECREF(__pyx_v_warn);
  __pyx_v_warn = __pyx_2;
  __pyx_2 = 0;
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":37
 * cdef int warnRC(object attr, object value) except -1:
 *     from warnings import warn
 *     warn(u"mpi4py.rc: '%s': unexpected value '%r'" % (attr, value))             # <<<<<<<<<<<<<<
 * 
 * cdef int getRCParams(RCParams* rc) except -1:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_attr);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_attr);
  __Pyx_GIVEREF(__pyx_v_attr);
  __Pyx_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_92), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 37; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_v_warn, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 37; __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 released */
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.warnRC");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_warn);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":39
 *     warn(u"mpi4py.rc: '%s': unexpected value '%r'" % (attr, value))
 * 
 * cdef int getRCParams(RCParams* rc) except -1:             # <<<<<<<<<<<<<<
 *     rc.initialize = 1
 *     rc.threaded = 1
 */

static  int __pyx_f_6mpi4py_3MPI_getRCParams(__pyx_t_6mpi4py_3MPI_RCParams *__pyx_v_rc) {
  PyObject *__pyx_v_rcmod;
  PyObject *__pyx_v_initialize = 0;
  PyObject *__pyx_v_threaded = 0;
  PyObject *__pyx_v_thread_level = 0;
  PyObject *__pyx_v_finalize = 0;
  int __pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  __Pyx_SetupRefcountContext("getRCParams");
  __pyx_v_rcmod = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":40
 * 
 * cdef int getRCParams(RCParams* rc) except -1:
 *     rc.initialize = 1             # <<<<<<<<<<<<<<
 *     rc.threaded = 1
 *     rc.thread_level = MPI_THREAD_MULTIPLE
 */
  __pyx_v_rc->initialize = 1;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":41
 * cdef int getRCParams(RCParams* rc) except -1:
 *     rc.initialize = 1
 *     rc.threaded = 1             # <<<<<<<<<<<<<<
 *     rc.thread_level = MPI_THREAD_MULTIPLE
 *     rc.finalize = 1
 */
  __pyx_v_rc->threaded = 1;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":42
 *     rc.initialize = 1
 *     rc.threaded = 1
 *     rc.thread_level = MPI_THREAD_MULTIPLE             # <<<<<<<<<<<<<<
 *     rc.finalize = 1
 *     #
 */
  __pyx_v_rc->thread_level = MPI_THREAD_MULTIPLE;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":43
 *     rc.threaded = 1
 *     rc.thread_level = MPI_THREAD_MULTIPLE
 *     rc.finalize = 1             # <<<<<<<<<<<<<<
 *     #
 *     try: from mpi4py import rc as rcmod
 */
  __pyx_v_rc->finalize = 1;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":45
 *     rc.finalize = 1
 *     #
 *     try: from mpi4py import rc as rcmod             # <<<<<<<<<<<<<<
 *     except: return 0
 *     #
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __Pyx_INCREF(__pyx_kp_rc);
      PyList_SET_ITEM(__pyx_t_1, 0, __pyx_kp_rc);
      __Pyx_GIVEREF(__pyx_kp_rc);
      __pyx_1 = __Pyx_Import(__pyx_kp_93, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      /* __pyx_t_1 released */
      __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_rc); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_2);
      __Pyx_DECREF(__pyx_v_rcmod);
      __pyx_v_rcmod = __pyx_2;
      __pyx_2 = 0;
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_XDECREF(__pyx_2); __pyx_2 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":46
 *     #
 *     try: from mpi4py import rc as rcmod
 *     except: return 0             # <<<<<<<<<<<<<<
 *     #
 *     cdef object initialize = True
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.getRCParams");
      if (__Pyx_GetException(&__pyx_1, &__pyx_2, &__pyx_3) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_2);
      __Pyx_GOTREF(__pyx_3);
      __pyx_r = 0;
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      goto __pyx_L6_except_return;
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XDECREF(__pyx_save_exc_type);
    __Pyx_XDECREF(__pyx_save_exc_value);
    __Pyx_XDECREF(__pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L10_try_end:;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":48
 *     except: return 0
 *     #
 *     cdef object initialize = True             # <<<<<<<<<<<<<<
 *     cdef object threaded = True
 *     cdef object thread_level = u'multiple'
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_initialize = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":49
 *     #
 *     cdef object initialize = True
 *     cdef object threaded = True             # <<<<<<<<<<<<<<
 *     cdef object thread_level = u'multiple'
 *     cdef object finalize = True
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_threaded = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":50
 *     cdef object initialize = True
 *     cdef object threaded = True
 *     cdef object thread_level = u'multiple'             # <<<<<<<<<<<<<<
 *     cdef object finalize = True
 *     try: initialize = rcmod.initialize
 */
  __Pyx_INCREF(((PyObject *)__pyx_kp_94));
  __pyx_v_thread_level = ((PyObject *)__pyx_kp_94);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":51
 *     cdef object threaded = True
 *     cdef object thread_level = u'multiple'
 *     cdef object finalize = True             # <<<<<<<<<<<<<<
 *     try: initialize = rcmod.initialize
 *     except: pass
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_finalize = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":52
 *     cdef object thread_level = u'multiple'
 *     cdef object finalize = True
 *     try: initialize = rcmod.initialize             # <<<<<<<<<<<<<<
 *     except: pass
 *     try: threaded = rcmod.threaded
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = PyObject_GetAttr(__pyx_v_rcmod, __pyx_kp_initialize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_initialize);
      __pyx_v_initialize = __pyx_t_1;
      __pyx_t_1 = 0;
      /* __pyx_t_1 released */
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L20_try_end;
    __pyx_L13_error:;
    __Pyx_XDECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_XDECREF(__pyx_2); __pyx_2 = 0;
    __Pyx_XDECREF(__pyx_3); __pyx_3 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":53
 *     cdef object finalize = True
 *     try: initialize = rcmod.initialize
 *     except: pass             # <<<<<<<<<<<<<<
 *     try: threaded = rcmod.threaded
 *     except: pass
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.getRCParams");
      if (__Pyx_GetException(&__pyx_1, &__pyx_2, &__pyx_3) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_2);
      __Pyx_GOTREF(__pyx_3);
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      goto __pyx_L14_exception_handled;
    }
    __pyx_L15_except_error:;
    __Pyx_XDECREF(__pyx_save_exc_type);
    __Pyx_XDECREF(__pyx_save_exc_value);
    __Pyx_XDECREF(__pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L14_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L20_try_end:;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":54
 *     try: initialize = rcmod.initialize
 *     except: pass
 *     try: threaded = rcmod.threaded             # <<<<<<<<<<<<<<
 *     except: pass
 *     try: thread_level = rcmod.thread_level
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = PyObject_GetAttr(__pyx_v_rcmod, __pyx_kp_threaded); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L23_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_threaded);
      __pyx_v_threaded = __pyx_t_1;
      __pyx_t_1 = 0;
      /* __pyx_t_1 released */
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L30_try_end;
    __pyx_L23_error:;
    __Pyx_XDECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_XDECREF(__pyx_2); __pyx_2 = 0;
    __Pyx_XDECREF(__pyx_3); __pyx_3 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":55
 *     except: pass
 *     try: threaded = rcmod.threaded
 *     except: pass             # <<<<<<<<<<<<<<
 *     try: thread_level = rcmod.thread_level
 *     except: pass
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.getRCParams");
      if (__Pyx_GetException(&__pyx_1, &__pyx_2, &__pyx_3) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L25_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_2);
      __Pyx_GOTREF(__pyx_3);
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      goto __pyx_L24_exception_handled;
    }
    __pyx_L25_except_error:;
    __Pyx_XDECREF(__pyx_save_exc_type);
    __Pyx_XDECREF(__pyx_save_exc_value);
    __Pyx_XDECREF(__pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L24_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L30_try_end:;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":56
 *     try: threaded = rcmod.threaded
 *     except: pass
 *     try: thread_level = rcmod.thread_level             # <<<<<<<<<<<<<<
 *     except: pass
 *     try: finalize = rcmod.finalize
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = PyObject_GetAttr(__pyx_v_rcmod, __pyx_kp_thread_level); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L33_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_thread_level);
      __pyx_v_thread_level = __pyx_t_1;
      __pyx_t_1 = 0;
      /* __pyx_t_1 released */
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L40_try_end;
    __pyx_L33_error:;
    __Pyx_XDECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_XDECREF(__pyx_2); __pyx_2 = 0;
    __Pyx_XDECREF(__pyx_3); __pyx_3 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":57
 *     except: pass
 *     try: thread_level = rcmod.thread_level
 *     except: pass             # <<<<<<<<<<<<<<
 *     try: finalize = rcmod.finalize
 *     except: pass
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.getRCParams");
      if (__Pyx_GetException(&__pyx_1, &__pyx_2, &__pyx_3) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L35_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_2);
      __Pyx_GOTREF(__pyx_3);
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      goto __pyx_L34_exception_handled;
    }
    __pyx_L35_except_error:;
    __Pyx_XDECREF(__pyx_save_exc_type);
    __Pyx_XDECREF(__pyx_save_exc_value);
    __Pyx_XDECREF(__pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L34_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L40_try_end:;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":58
 *     try: thread_level = rcmod.thread_level
 *     except: pass
 *     try: finalize = rcmod.finalize             # <<<<<<<<<<<<<<
 *     except: pass
 *     #
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = PyObject_GetAttr(__pyx_v_rcmod, __pyx_kp_finalize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L43_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_finalize);
      __pyx_v_finalize = __pyx_t_1;
      __pyx_t_1 = 0;
      /* __pyx_t_1 released */
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L50_try_end;
    __pyx_L43_error:;
    __Pyx_XDECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_XDECREF(__pyx_2); __pyx_2 = 0;
    __Pyx_XDECREF(__pyx_3); __pyx_3 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":59
 *     except: pass
 *     try: finalize = rcmod.finalize
 *     except: pass             # <<<<<<<<<<<<<<
 *     #
 *     if initialize in (True, u'yes'):
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.getRCParams");
      if (__Pyx_GetException(&__pyx_1, &__pyx_2, &__pyx_3) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L45_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_2);
      __Pyx_GOTREF(__pyx_3);
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      goto __pyx_L44_exception_handled;
    }
    __pyx_L45_except_error:;
    __Pyx_XDECREF(__pyx_save_exc_type);
    __Pyx_XDECREF(__pyx_save_exc_value);
    __Pyx_XDECREF(__pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L44_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L50_try_end:;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":61
 *     except: pass
 *     #
 *     if initialize in (True, u'yes'):             # <<<<<<<<<<<<<<
 *         rc.initialize = 1
 *     elif initialize in (False, u'no'):
 */
  __Pyx_INCREF(__pyx_v_initialize);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_v_initialize;
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  if (!((int)__pyx_t_4)) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, ((PyObject *)__pyx_kp_95), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_5 allocated */
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_6 allocated */
    __pyx_t_6 = ((int)__pyx_t_5);
    /* __pyx_t_5 released */
  } else {
    __pyx_t_6 = ((int)__pyx_t_4);
    /* __pyx_t_4 released */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __pyx_t_6;
  /* __pyx_t_6 released */
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":62
 *     #
 *     if initialize in (True, u'yes'):
 *         rc.initialize = 1             # <<<<<<<<<<<<<<
 *     elif initialize in (False, u'no'):
 *         rc.initialize = 0
 */
    __pyx_v_rc->initialize = 1;
    goto __pyx_L53;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":63
 *     if initialize in (True, u'yes'):
 *         rc.initialize = 1
 *     elif initialize in (False, u'no'):             # <<<<<<<<<<<<<<
 *         rc.initialize = 0
 *     else:
 */
  __Pyx_INCREF(__pyx_v_initialize);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_v_initialize;
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!((int)__pyx_t_4)) {
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, ((PyObject *)__pyx_kp_96), Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = ((int)__pyx_t_6);
    /* __pyx_t_6 released */
  } else {
    __pyx_t_5 = ((int)__pyx_t_4);
    /* __pyx_t_4 released */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __pyx_t_5;
  /* __pyx_t_5 released */
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":64
 *         rc.initialize = 1
 *     elif initialize in (False, u'no'):
 *         rc.initialize = 0             # <<<<<<<<<<<<<<
 *     else:
 *         warnRC(u"initialize", initialize)
 */
    __pyx_v_rc->initialize = 0;
    goto __pyx_L53;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":66
 *         rc.initialize = 0
 *     else:
 *         warnRC(u"initialize", initialize)             # <<<<<<<<<<<<<<
 *     #
 *     if threaded in (True, u'yes'):
 */
    /* __pyx_t_7 allocated */
    __pyx_t_7 = __pyx_f_6mpi4py_3MPI_warnRC(((PyObject *)__pyx_kp_97), __pyx_v_initialize); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_7 released */
  }
  __pyx_L53:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":68
 *         warnRC(u"initialize", initialize)
 *     #
 *     if threaded in (True, u'yes'):             # <<<<<<<<<<<<<<
 *         rc.threaded = 1
 *     elif threaded in (False, u'no'):
 */
  __Pyx_INCREF(__pyx_v_threaded);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_v_threaded;
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  if (!((int)__pyx_t_4)) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, ((PyObject *)__pyx_kp_98), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_5 allocated */
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_6 allocated */
    __pyx_t_6 = ((int)__pyx_t_5);
    /* __pyx_t_5 released */
  } else {
    __pyx_t_6 = ((int)__pyx_t_4);
    /* __pyx_t_4 released */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __pyx_t_6;
  /* __pyx_t_6 released */
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":69
 *     #
 *     if threaded in (True, u'yes'):
 *         rc.threaded = 1             # <<<<<<<<<<<<<<
 *     elif threaded in (False, u'no'):
 *         rc.threaded = 0
 */
    __pyx_v_rc->threaded = 1;
    goto __pyx_L54;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":70
 *     if threaded in (True, u'yes'):
 *         rc.threaded = 1
 *     elif threaded in (False, u'no'):             # <<<<<<<<<<<<<<
 *         rc.threaded = 0
 *     else:
 */
  __Pyx_INCREF(__pyx_v_threaded);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_v_threaded;
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!((int)__pyx_t_4)) {
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, ((PyObject *)__pyx_kp_99), Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = ((int)__pyx_t_6);
    /* __pyx_t_6 released */
  } else {
    __pyx_t_5 = ((int)__pyx_t_4);
    /* __pyx_t_4 released */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __pyx_t_5;
  /* __pyx_t_5 released */
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":71
 *         rc.threaded = 1
 *     elif threaded in (False, u'no'):
 *         rc.threaded = 0             # <<<<<<<<<<<<<<
 *     else:
 *         warnRC(u"threaded", threaded)
 */
    __pyx_v_rc->threaded = 0;
    goto __pyx_L54;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":73
 *         rc.threaded = 0
 *     else:
 *         warnRC(u"threaded", threaded)             # <<<<<<<<<<<<<<
 *     #
 *     if thread_level == u'single':
 */
    /* __pyx_t_7 allocated */
    __pyx_t_7 = __pyx_f_6mpi4py_3MPI_warnRC(((PyObject *)__pyx_kp_100), __pyx_v_threaded); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_7 released */
  }
  __pyx_L54:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":75
 *         warnRC(u"threaded", threaded)
 *     #
 *     if thread_level == u'single':             # <<<<<<<<<<<<<<
 *         rc.thread_level = MPI_THREAD_SINGLE
 *     elif thread_level == u'funneled':
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_thread_level, ((PyObject *)__pyx_kp_101), Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":76
 *     #
 *     if thread_level == u'single':
 *         rc.thread_level = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 *     elif thread_level == u'funneled':
 *         rc.thread_level = MPI_THREAD_FUNNELED
 */
    __pyx_v_rc->thread_level = MPI_THREAD_SINGLE;
    goto __pyx_L55;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":77
 *     if thread_level == u'single':
 *         rc.thread_level = MPI_THREAD_SINGLE
 *     elif thread_level == u'funneled':             # <<<<<<<<<<<<<<
 *         rc.thread_level = MPI_THREAD_FUNNELED
 *     elif thread_level == u'serialized':
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_thread_level, ((PyObject *)__pyx_kp_102), Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":78
 *         rc.thread_level = MPI_THREAD_SINGLE
 *     elif thread_level == u'funneled':
 *         rc.thread_level = MPI_THREAD_FUNNELED             # <<<<<<<<<<<<<<
 *     elif thread_level == u'serialized':
 *         rc.thread_level = MPI_THREAD_SERIALIZED
 */
    __pyx_v_rc->thread_level = MPI_THREAD_FUNNELED;
    goto __pyx_L55;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":79
 *     elif thread_level == u'funneled':
 *         rc.thread_level = MPI_THREAD_FUNNELED
 *     elif thread_level == u'serialized':             # <<<<<<<<<<<<<<
 *         rc.thread_level = MPI_THREAD_SERIALIZED
 *     elif thread_level == u'multiple':
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_thread_level, ((PyObject *)__pyx_kp_103), Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":80
 *         rc.thread_level = MPI_THREAD_FUNNELED
 *     elif thread_level == u'serialized':
 *         rc.thread_level = MPI_THREAD_SERIALIZED             # <<<<<<<<<<<<<<
 *     elif thread_level == u'multiple':
 *         rc.thread_level = MPI_THREAD_MULTIPLE
 */
    __pyx_v_rc->thread_level = MPI_THREAD_SERIALIZED;
    goto __pyx_L55;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":81
 *     elif thread_level == u'serialized':
 *         rc.thread_level = MPI_THREAD_SERIALIZED
 *     elif thread_level == u'multiple':             # <<<<<<<<<<<<<<
 *         rc.thread_level = MPI_THREAD_MULTIPLE
 *     else:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_thread_level, ((PyObject *)__pyx_kp_104), Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":82
 *         rc.thread_level = MPI_THREAD_SERIALIZED
 *     elif thread_level == u'multiple':
 *         rc.thread_level = MPI_THREAD_MULTIPLE             # <<<<<<<<<<<<<<
 *     else:
 *         warnRC(u"thread_level", thread_level)
 */
    __pyx_v_rc->thread_level = MPI_THREAD_MULTIPLE;
    goto __pyx_L55;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":84
 *         rc.thread_level = MPI_THREAD_MULTIPLE
 *     else:
 *         warnRC(u"thread_level", thread_level)             # <<<<<<<<<<<<<<
 *     #
 *     if finalize in (True, u'yes'):
 */
    /* __pyx_t_7 allocated */
    __pyx_t_7 = __pyx_f_6mpi4py_3MPI_warnRC(((PyObject *)__pyx_kp_105), __pyx_v_thread_level); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_7 released */
  }
  __pyx_L55:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":86
 *         warnRC(u"thread_level", thread_level)
 *     #
 *     if finalize in (True, u'yes'):             # <<<<<<<<<<<<<<
 *         rc.finalize = 1
 *     elif finalize in (False, u'no'):
 */
  __Pyx_INCREF(__pyx_v_finalize);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_v_finalize;
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  if (!((int)__pyx_t_4)) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, ((PyObject *)__pyx_kp_106), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_5 allocated */
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_6 allocated */
    __pyx_t_6 = ((int)__pyx_t_5);
    /* __pyx_t_5 released */
  } else {
    __pyx_t_6 = ((int)__pyx_t_4);
    /* __pyx_t_4 released */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __pyx_t_6;
  /* __pyx_t_6 released */
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":87
 *     #
 *     if finalize in (True, u'yes'):
 *         rc.finalize = 1             # <<<<<<<<<<<<<<
 *     elif finalize in (False, u'no'):
 *         rc.finalize = 0
 */
    __pyx_v_rc->finalize = 1;
    goto __pyx_L56;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":88
 *     if finalize in (True, u'yes'):
 *         rc.finalize = 1
 *     elif finalize in (False, u'no'):             # <<<<<<<<<<<<<<
 *         rc.finalize = 0
 *     else:
 */
  __Pyx_INCREF(__pyx_v_finalize);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_v_finalize;
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!((int)__pyx_t_4)) {
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, ((PyObject *)__pyx_kp_107), Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = ((int)__pyx_t_6);
    /* __pyx_t_6 released */
  } else {
    __pyx_t_5 = ((int)__pyx_t_4);
    /* __pyx_t_4 released */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __pyx_t_5;
  /* __pyx_t_5 released */
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":89
 *         rc.finalize = 1
 *     elif finalize in (False, u'no'):
 *         rc.finalize = 0             # <<<<<<<<<<<<<<
 *     else:
 *         warnRC(u"finalize", finalize)
 */
    __pyx_v_rc->finalize = 0;
    goto __pyx_L56;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":91
 *         rc.finalize = 0
 *     else:
 *         warnRC(u"finalize", finalize)             # <<<<<<<<<<<<<<
 *     #
 *     return 0
 */
    /* __pyx_t_7 allocated */
    __pyx_t_7 = __pyx_f_6mpi4py_3MPI_warnRC(((PyObject *)__pyx_kp_108), __pyx_v_finalize); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_7 released */
  }
  __pyx_L56:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":93
 *         warnRC(u"finalize", finalize)
 *     #
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int initialize() except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.getRCParams");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":95
 *     return 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;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("initialize");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":98
 *     global inited_atimport
 *     global finalize_atexit
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     # MPI initialized ?
 *     cdef int initialized = 1
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":100
 *     cdef int ierr = MPI_SUCCESS
 *     # MPI initialized ?
 *     cdef int initialized = 1             # <<<<<<<<<<<<<<
 *     ierr = MPI_Initialized(&initialized)
 *     # MPI finalized ?
 */
  __pyx_v_initialized = 1;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":101
 *     # MPI initialized ?
 *     cdef int initialized = 1
 *     ierr = MPI_Initialized(&initialized)             # <<<<<<<<<<<<<<
 *     # MPI finalized ?
 *     cdef int finalized = 1
 */
  __pyx_v_ierr = MPI_Initialized((&__pyx_v_initialized));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":103
 *     ierr = MPI_Initialized(&initialized)
 *     # MPI finalized ?
 *     cdef int finalized = 1             # <<<<<<<<<<<<<<
 *     ierr = MPI_Finalized(&finalized)
 *     # Do we have to initialize MPI?
 */
  __pyx_v_finalized = 1;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":104
 *     # 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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":106
 *     ierr = MPI_Finalized(&finalized)
 *     # Do we have to initialize MPI?
 *     if initialized:             # <<<<<<<<<<<<<<
 *         if not finalized:
 *             # cleanup at (the very end of) Python exit
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_v_initialized;
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":107
 *     # Do we have to initialize MPI?
 *     if initialized:
 *         if not finalized:             # <<<<<<<<<<<<<<
 *             # cleanup at (the very end of) Python exit
 *             if Py_AtExit(atexit_py) < 0:
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = (!__pyx_v_finalized);
    if (__pyx_t_2) {
      /* __pyx_t_2 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":109
 *         if not finalized:
 *             # cleanup at (the very end of) Python exit
 *             if Py_AtExit(atexit_py) < 0:             # <<<<<<<<<<<<<<
 *                 PySys_WriteStderr("warning: could not register"
 *                                   "cleanup with Py_AtExit()")
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = (Py_AtExit(__pyx_f_6mpi4py_3MPI_atexit_py) < 0);
      if (__pyx_t_2) {
        /* __pyx_t_2 released */

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":110
 *             # cleanup at (the very end of) Python exit
 *             if Py_AtExit(atexit_py) < 0:
 *                 PySys_WriteStderr("warning: could not register"             # <<<<<<<<<<<<<<
 *                                   "cleanup with Py_AtExit()")
 *         return 0
 */
        PySys_WriteStderr(__pyx_k_109);
        goto __pyx_L5;
      }
      __pyx_L5:;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":112
 *                 PySys_WriteStderr("warning: could not register"
 *                                   "cleanup with Py_AtExit()")
 *         return 0             # <<<<<<<<<<<<<<
 *     # Use user parameters from 'mpi4py.rc' module
 *     cdef RCParams rc
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":115
 *     # 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_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getRCParams((&__pyx_v_rc)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":116
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":117
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":118
 *     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
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_v_rc.initialize;
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":119
 *     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)
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = __pyx_v_rc.threaded;
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":120
 *     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;

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

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":122
 *             required = rc.thread_level
 *             ierr = MPI_Init_thread(NULL, NULL, required, &provided)
 *             if ierr != MPI_SUCCESS: raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 u"MPI_Init_thread() failed [error code: %d]" % ierr)
 *         else:
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = (__pyx_v_ierr != MPI_SUCCESS);
      if (__pyx_t_2) {
        /* __pyx_t_2 released */

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":123
 *             ierr = MPI_Init_thread(NULL, NULL, required, &provided)
 *             if ierr != MPI_SUCCESS: raise RuntimeError(
 *                 u"MPI_Init_thread() failed [error code: %d]" % ierr)             # <<<<<<<<<<<<<<
 *         else:
 *             ierr = MPI_Init(NULL, NULL)
 */
        /* __pyx_t_3 allocated */
        __pyx_t_3 = PyInt_FromLong(__pyx_v_ierr); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        /* __pyx_t_4 allocated */
        __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_110), __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        /* __pyx_t_3 released */
        /* __pyx_t_3 allocated */
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_3));
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_4);
        __pyx_t_4 = 0;
        /* __pyx_t_4 released */
        /* __pyx_t_4 allocated */
        __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
        /* __pyx_t_3 released */
        __Pyx_Raise(__pyx_t_4, 0, 0);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        /* __pyx_t_4 released */
        {__pyx_filename = __pyx_f[9]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L8;
      }
      __pyx_L8:;
      goto __pyx_L7;
    }
    /*else*/ {

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

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":126
 *         else:
 *             ierr = MPI_Init(NULL, NULL)
 *             if ierr != MPI_SUCCESS: raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 u"MPI_Init() failed [error code: %d]" % ierr)
 *         inited_atimport = 1 # We initialized MPI
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = (__pyx_v_ierr != MPI_SUCCESS);
      if (__pyx_t_2) {
        /* __pyx_t_2 released */

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

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":128
 *             if ierr != MPI_SUCCESS: raise RuntimeError(
 *                 u"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;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":129
 *                 u"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
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = __pyx_v_rc.finalize;
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":130
 *         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_py) < 0:
 */
      __pyx_v_6mpi4py_3MPI_finalize_atexit = 1;
      goto __pyx_L10;
    }
    __pyx_L10:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":132
 *             finalize_atexit = 1
 *     # Cleanup at (the very end of) Python exit
 *     if Py_AtExit(atexit_py) < 0:             # <<<<<<<<<<<<<<
 *         PySys_WriteStderr("warning: could not register"
 *                           "cleanup with Py_AtExit()")
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (Py_AtExit(__pyx_f_6mpi4py_3MPI_atexit_py) < 0);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":133
 *     # Cleanup at (the very end of) Python exit
 *     if Py_AtExit(atexit_py) < 0:
 *         PySys_WriteStderr("warning: could not register"             # <<<<<<<<<<<<<<
 *                           "cleanup with Py_AtExit()")
 *     return 0
 */
    PySys_WriteStderr(__pyx_k_112);
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":135
 *         PySys_WriteStderr("warning: could not register"
 *                           "cleanup with Py_AtExit()")
 *     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_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":137
 *     return 0
 * 
 * cdef inline int mpi_active() nogil:             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     # MPI initialized ?
 */

static 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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":138
 * 
 * cdef inline int mpi_active() nogil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     # MPI initialized ?
 *     cdef int initialized = 0
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":140
 *     cdef int ierr = MPI_SUCCESS
 *     # MPI initialized ?
 *     cdef int initialized = 0             # <<<<<<<<<<<<<<
 *     ierr = MPI_Initialized(&initialized)
 *     if not initialized: return 0
 */
  __pyx_v_initialized = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":141
 *     # MPI initialized ?
 *     cdef int initialized = 0
 *     ierr = MPI_Initialized(&initialized)             # <<<<<<<<<<<<<<
 *     if not initialized: return 0
 *     # MPI finalized ?
 */
  __pyx_v_ierr = MPI_Initialized((&__pyx_v_initialized));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":142
 *     cdef int initialized = 0
 *     ierr = MPI_Initialized(&initialized)
 *     if not initialized: return 0             # <<<<<<<<<<<<<<
 *     # MPI finalized ?
 *     cdef int finalized = 1
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_v_initialized);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":144
 *     if not initialized: return 0
 *     # MPI finalized ?
 *     cdef int finalized = 1             # <<<<<<<<<<<<<<
 *     ierr = MPI_Finalized(&finalized)
 *     if finalized: return 0
 */
  __pyx_v_finalized = 1;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":145
 *     # MPI finalized ?
 *     cdef int finalized = 1
 *     ierr = MPI_Finalized(&finalized)             # <<<<<<<<<<<<<<
 *     if finalized: return 0
 *     # MPI should be active ...
 */
  __pyx_v_ierr = MPI_Finalized((&__pyx_v_finalized));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":146
 *     cdef int finalized = 1
 *     ierr = MPI_Finalized(&finalized)
 *     if finalized: return 0             # <<<<<<<<<<<<<<
 *     # MPI should be active ...
 *     return 1
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_finalized;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":148
 *     if finalized: 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;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":150
 *     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_v_keyval;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":151
 * 
 * cdef void startup() nogil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return
 *     #
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":152
 * cdef void startup() nogil:
 *     cdef int ierr = MPI_SUCCESS
 *     if not mpi_active(): return             # <<<<<<<<<<<<<<
 *     #
 *     global startup_done
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":155
 *     #
 *     global startup_done
 *     if startup_done: return             # <<<<<<<<<<<<<<
 *     startup_done = 1
 *     #DBG# fprintf(stderr, "statup: BEGIN\n"); fflush(stderr)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_6mpi4py_3MPI_startup_done;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":156
 *     global startup_done
 *     if startup_done: return
 *     startup_done = 1             # <<<<<<<<<<<<<<
 *     #DBG# fprintf(stderr, "statup: BEGIN\n"); fflush(stderr)
 *     # change error handlers for predefined communicators
 */
  __pyx_v_6mpi4py_3MPI_startup_done = 1;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":160
 *     # change error handlers for predefined communicators
 *     global comm_world_eh
 *     if comm_world_eh == MPI_ERRHANDLER_NULL:             # <<<<<<<<<<<<<<
 *         ierr = MPI_Comm_get_errhandler(MPI_COMM_WORLD, &comm_world_eh)
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_comm_world_eh == MPI_ERRHANDLER_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":161
 *     global comm_world_eh
 *     if comm_world_eh == MPI_ERRHANDLER_NULL:
 *         ierr = MPI_Comm_get_errhandler(MPI_COMM_WORLD, &comm_world_eh)             # <<<<<<<<<<<<<<
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN)
 *     global comm_self_eh
 */
    __pyx_v_ierr = MPI_Comm_get_errhandler(MPI_COMM_WORLD, (&__pyx_v_6mpi4py_3MPI_comm_world_eh));

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":162
 *     if comm_world_eh == MPI_ERRHANDLER_NULL:
 *         ierr = MPI_Comm_get_errhandler(MPI_COMM_WORLD, &comm_world_eh)
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN)             # <<<<<<<<<<<<<<
 *     global comm_self_eh
 *     if comm_self_eh == MPI_ERRHANDLER_NULL:
 */
    __pyx_v_ierr = MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":164
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN)
 *     global comm_self_eh
 *     if comm_self_eh == MPI_ERRHANDLER_NULL:             # <<<<<<<<<<<<<<
 *         ierr = MPI_Comm_get_errhandler(MPI_COMM_SELF,  &comm_self_eh)
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_SELF,  MPI_ERRORS_RETURN)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_comm_self_eh == MPI_ERRHANDLER_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":165
 *     global comm_self_eh
 *     if comm_self_eh == MPI_ERRHANDLER_NULL:
 *         ierr = MPI_Comm_get_errhandler(MPI_COMM_SELF,  &comm_self_eh)             # <<<<<<<<<<<<<<
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_SELF,  MPI_ERRORS_RETURN)
 *     # make the call to MPI_Finalize() run a cleanup function
 */
    __pyx_v_ierr = MPI_Comm_get_errhandler(MPI_COMM_SELF, (&__pyx_v_6mpi4py_3MPI_comm_self_eh));

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":166
 *     if comm_self_eh == MPI_ERRHANDLER_NULL:
 *         ierr = MPI_Comm_get_errhandler(MPI_COMM_SELF,  &comm_self_eh)
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_SELF,  MPI_ERRORS_RETURN)             # <<<<<<<<<<<<<<
 *     # make the call to MPI_Finalize() run a cleanup function
 *     global PyMPI_KEYVAL_ATEXIT_MPI
 */
    __pyx_v_ierr = MPI_Comm_set_errhandler(MPI_COMM_SELF, MPI_ERRORS_RETURN);
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":169
 *     # make the call to MPI_Finalize() run a cleanup function
 *     global PyMPI_KEYVAL_ATEXIT_MPI
 *     cdef int* keyval = &PyMPI_KEYVAL_ATEXIT_MPI             # <<<<<<<<<<<<<<
 *     if keyval[0] == MPI_KEYVAL_INVALID:
 *         ierr = MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN,
 */
  __pyx_v_keyval = (&PyMPI_KEYVAL_ATEXIT_MPI);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":170
 *     global PyMPI_KEYVAL_ATEXIT_MPI
 *     cdef int* keyval = &PyMPI_KEYVAL_ATEXIT_MPI
 *     if keyval[0] == MPI_KEYVAL_INVALID:             # <<<<<<<<<<<<<<
 *         ierr = MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN,
 *                                       atexit_mpi, keyval, NULL)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((__pyx_v_keyval[0]) == MPI_KEYVAL_INVALID);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":172
 *     if keyval[0] == MPI_KEYVAL_INVALID:
 *         ierr = MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN,
 *                                       atexit_mpi, keyval, NULL)             # <<<<<<<<<<<<<<
 *         ierr = MPI_Comm_set_attr(MPI_COMM_SELF, keyval[0], NULL)
 *     #DBG# fprintf(stderr, "statup: END\n"); fflush(stderr)
 */
    __pyx_v_ierr = MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN, __pyx_f_6mpi4py_3MPI_atexit_mpi, __pyx_v_keyval, NULL);

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":173
 *         ierr = MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN,
 *                                       atexit_mpi, keyval, NULL)
 *         ierr = MPI_Comm_set_attr(MPI_COMM_SELF, keyval[0], NULL)             # <<<<<<<<<<<<<<
 *     #DBG# fprintf(stderr, "statup: END\n"); fflush(stderr)
 * 
 */
    __pyx_v_ierr = MPI_Comm_set_attr(MPI_COMM_SELF, (__pyx_v_keyval[0]), NULL);
    goto __pyx_L7;
  }
  __pyx_L7:;

  __pyx_L0:;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":176
 *     #DBG# fprintf(stderr, "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;
  int __pyx_t_2;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":177
 * 
 * cdef void cleanup() nogil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return
 *     #
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":178
 * cdef void cleanup() nogil:
 *     cdef int ierr = MPI_SUCCESS
 *     if not mpi_active(): return             # <<<<<<<<<<<<<<
 *     #
 *     global cleanup_done
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":181
 *     #
 *     global cleanup_done
 *     if cleanup_done: return             # <<<<<<<<<<<<<<
 *     cleanup_done = 1
 *     #
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_6mpi4py_3MPI_cleanup_done;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":182
 *     global cleanup_done
 *     if cleanup_done: return
 *     cleanup_done = 1             # <<<<<<<<<<<<<<
 *     #
 *     #DBG# fprintf(stderr, "cleanup: BEGIN\n"); fflush(stderr)
 */
  __pyx_v_6mpi4py_3MPI_cleanup_done = 1;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":187
 *     # free cleanup keyval
 *     global PyMPI_KEYVAL_ATEXIT_MPI
 *     if PyMPI_KEYVAL_ATEXIT_MPI != MPI_KEYVAL_INVALID:             # <<<<<<<<<<<<<<
 *         ierr = MPI_Comm_free_keyval(&PyMPI_KEYVAL_ATEXIT_MPI)
 *         PyMPI_KEYVAL_ATEXIT_MPI = MPI_KEYVAL_INVALID
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (PyMPI_KEYVAL_ATEXIT_MPI != MPI_KEYVAL_INVALID);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":188
 *     global PyMPI_KEYVAL_ATEXIT_MPI
 *     if PyMPI_KEYVAL_ATEXIT_MPI != MPI_KEYVAL_INVALID:
 *         ierr = MPI_Comm_free_keyval(&PyMPI_KEYVAL_ATEXIT_MPI)             # <<<<<<<<<<<<<<
 *         PyMPI_KEYVAL_ATEXIT_MPI = MPI_KEYVAL_INVALID
 *     # free windows keyval
 */
    __pyx_v_ierr = MPI_Comm_free_keyval((&PyMPI_KEYVAL_ATEXIT_MPI));

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":189
 *     if PyMPI_KEYVAL_ATEXIT_MPI != MPI_KEYVAL_INVALID:
 *         ierr = MPI_Comm_free_keyval(&PyMPI_KEYVAL_ATEXIT_MPI)
 *         PyMPI_KEYVAL_ATEXIT_MPI = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 *     # free windows keyval
 *     global PyMPI_KEYVAL_WIN_MEMORY
 */
    PyMPI_KEYVAL_ATEXIT_MPI = MPI_KEYVAL_INVALID;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":192
 *     # free windows keyval
 *     global PyMPI_KEYVAL_WIN_MEMORY
 *     if PyMPI_KEYVAL_WIN_MEMORY != MPI_KEYVAL_INVALID:             # <<<<<<<<<<<<<<
 *         ierr = MPI_Win_free_keyval(&PyMPI_KEYVAL_WIN_MEMORY)
 *         PyMPI_KEYVAL_WIN_MEMORY = MPI_KEYVAL_INVALID
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_PyMPI_KEYVAL_WIN_MEMORY != MPI_KEYVAL_INVALID);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":193
 *     global PyMPI_KEYVAL_WIN_MEMORY
 *     if PyMPI_KEYVAL_WIN_MEMORY != MPI_KEYVAL_INVALID:
 *         ierr = MPI_Win_free_keyval(&PyMPI_KEYVAL_WIN_MEMORY)             # <<<<<<<<<<<<<<
 *         PyMPI_KEYVAL_WIN_MEMORY = MPI_KEYVAL_INVALID
 *     # restore default error handlers for predefined communicators
 */
    __pyx_v_ierr = MPI_Win_free_keyval((&__pyx_v_6mpi4py_3MPI_PyMPI_KEYVAL_WIN_MEMORY));

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":194
 *     if PyMPI_KEYVAL_WIN_MEMORY != MPI_KEYVAL_INVALID:
 *         ierr = MPI_Win_free_keyval(&PyMPI_KEYVAL_WIN_MEMORY)
 *         PyMPI_KEYVAL_WIN_MEMORY = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 *     # restore default error handlers for predefined communicators
 *     global comm_self_eh
 */
    __pyx_v_6mpi4py_3MPI_PyMPI_KEYVAL_WIN_MEMORY = MPI_KEYVAL_INVALID;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":197
 *     # restore default error handlers for predefined communicators
 *     global comm_self_eh
 *     if comm_self_eh != MPI_ERRHANDLER_NULL:             # <<<<<<<<<<<<<<
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_SELF, comm_self_eh)
 *         ierr = MPI_Errhandler_free(&comm_self_eh)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_comm_self_eh != MPI_ERRHANDLER_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":198
 *     global comm_self_eh
 *     if comm_self_eh != MPI_ERRHANDLER_NULL:
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_SELF, comm_self_eh)             # <<<<<<<<<<<<<<
 *         ierr = MPI_Errhandler_free(&comm_self_eh)
 *         comm_self_eh = MPI_ERRHANDLER_NULL
 */
    __pyx_v_ierr = MPI_Comm_set_errhandler(MPI_COMM_SELF, __pyx_v_6mpi4py_3MPI_comm_self_eh);

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":199
 *     if comm_self_eh != MPI_ERRHANDLER_NULL:
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_SELF, comm_self_eh)
 *         ierr = MPI_Errhandler_free(&comm_self_eh)             # <<<<<<<<<<<<<<
 *         comm_self_eh = MPI_ERRHANDLER_NULL
 *     global comm_world_eh
 */
    __pyx_v_ierr = MPI_Errhandler_free((&__pyx_v_6mpi4py_3MPI_comm_self_eh));

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":200
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_SELF, comm_self_eh)
 *         ierr = MPI_Errhandler_free(&comm_self_eh)
 *         comm_self_eh = MPI_ERRHANDLER_NULL             # <<<<<<<<<<<<<<
 *     global comm_world_eh
 *     if comm_world_eh != MPI_ERRHANDLER_NULL:
 */
    __pyx_v_6mpi4py_3MPI_comm_self_eh = MPI_ERRHANDLER_NULL;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":202
 *         comm_self_eh = MPI_ERRHANDLER_NULL
 *     global comm_world_eh
 *     if comm_world_eh != MPI_ERRHANDLER_NULL:             # <<<<<<<<<<<<<<
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_WORLD, comm_world_eh)
 *         ierr = MPI_Errhandler_free(&comm_world_eh)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_comm_world_eh != MPI_ERRHANDLER_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":203
 *     global comm_world_eh
 *     if comm_world_eh != MPI_ERRHANDLER_NULL:
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_WORLD, comm_world_eh)             # <<<<<<<<<<<<<<
 *         ierr = MPI_Errhandler_free(&comm_world_eh)
 *         comm_world_eh = MPI_ERRHANDLER_NULL
 */
    __pyx_v_ierr = MPI_Comm_set_errhandler(MPI_COMM_WORLD, __pyx_v_6mpi4py_3MPI_comm_world_eh);

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":204
 *     if comm_world_eh != MPI_ERRHANDLER_NULL:
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_WORLD, comm_world_eh)
 *         ierr = MPI_Errhandler_free(&comm_world_eh)             # <<<<<<<<<<<<<<
 *         comm_world_eh = MPI_ERRHANDLER_NULL
 *     #DBG# fprintf(stderr, "cleanup: END\n"); fflush(stderr)
 */
    __pyx_v_ierr = MPI_Errhandler_free((&__pyx_v_6mpi4py_3MPI_comm_world_eh));

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":205
 *         ierr = MPI_Comm_set_errhandler(MPI_COMM_WORLD, comm_world_eh)
 *         ierr = MPI_Errhandler_free(&comm_world_eh)
 *         comm_world_eh = MPI_ERRHANDLER_NULL             # <<<<<<<<<<<<<<
 *     #DBG# fprintf(stderr, "cleanup: END\n"); fflush(stderr)
 * 
 */
    __pyx_v_6mpi4py_3MPI_comm_world_eh = MPI_ERRHANDLER_NULL;
    goto __pyx_L8;
  }
  __pyx_L8:;

  __pyx_L0:;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":208
 *     #DBG# fprintf(stderr, "cleanup: END\n"); fflush(stderr)
 * 
 * cdef int atexit_mpi(MPI_Comm c,int k, void *v, void *xs) nogil:             # <<<<<<<<<<<<<<
 *     #DBG# fprintf(stderr, "atexit_mpi: BEGIN\n"); fflush(stderr)
 *     cleanup()
 */

static  int __pyx_f_6mpi4py_3MPI_atexit_mpi(MPI_Comm __pyx_v_c, int __pyx_v_k, void *__pyx_v_v, void *__pyx_v_xs) {
  int __pyx_r;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":210
 * cdef int atexit_mpi(MPI_Comm c,int k, void *v, void *xs) nogil:
 *     #DBG# fprintf(stderr, "atexit_mpi: BEGIN\n"); fflush(stderr)
 *     cleanup()             # <<<<<<<<<<<<<<
 *     #DBG# fprintf(stderr, "atexit_mpi: END\n"); fflush(stderr)
 *     return MPI_SUCCESS
 */
  __pyx_f_6mpi4py_3MPI_cleanup();

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":212
 *     cleanup()
 *     #DBG# fprintf(stderr, "atexit_mpi: END\n"); fflush(stderr)
 *     return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * cdef void atexit_py() nogil:
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":214
 *     return MPI_SUCCESS
 * 
 * cdef void atexit_py() nogil:             # <<<<<<<<<<<<<<
 *     global cleanup_done
 *     global finalize_atexit
 */

static  void __pyx_f_6mpi4py_3MPI_atexit_py(void) {
  int __pyx_v_ierr;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":217
 *     global cleanup_done
 *     global finalize_atexit
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return
 *     #DBG# fprintf(stderr, "atexit_py: BEGIN\n"); fflush(stderr)
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":218
 *     global finalize_atexit
 *     cdef int ierr = MPI_SUCCESS
 *     if not mpi_active(): return             # <<<<<<<<<<<<<<
 *     #DBG# fprintf(stderr, "atexit_py: BEGIN\n"); fflush(stderr)
 *     if not cleanup_done:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":220
 *     if not mpi_active(): return
 *     #DBG# fprintf(stderr, "atexit_py: BEGIN\n"); fflush(stderr)
 *     if not cleanup_done:             # <<<<<<<<<<<<<<
 *         cleanup()
 *     if finalize_atexit:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_v_6mpi4py_3MPI_cleanup_done);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":221
 *     #DBG# fprintf(stderr, "atexit_py: BEGIN\n"); fflush(stderr)
 *     if not cleanup_done:
 *         cleanup()             # <<<<<<<<<<<<<<
 *     if finalize_atexit:
 *         ierr = MPI_Finalize()
 */
    __pyx_f_6mpi4py_3MPI_cleanup();
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":222
 *     if not cleanup_done:
 *         cleanup()
 *     if finalize_atexit:             # <<<<<<<<<<<<<<
 *         ierr = MPI_Finalize()
 *     #DBG# fprintf(stderr, "atexit_py: END\n"); fflush(stderr)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_6mpi4py_3MPI_finalize_atexit;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":223
 *         cleanup()
 *     if finalize_atexit:
 *         ierr = MPI_Finalize()             # <<<<<<<<<<<<<<
 *     #DBG# fprintf(stderr, "atexit_py: END\n"); fflush(stderr)
 * 
 */
    __pyx_v_ierr = MPI_Finalize();
    goto __pyx_L5;
  }
  __pyx_L5:;

  __pyx_L0:;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":239
 * cdef object MPIException = <object>PyExc_RuntimeError
 * 
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:             # <<<<<<<<<<<<<<
 *     if ierr != -1:
 *         if (<void*>MPIException) != NULL:
 */

static  int __pyx_f_6mpi4py_3MPI_PyMPI_Raise(int __pyx_v_ierr) {
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_SetupRefcountContext("PyMPI_Raise");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":240
 * 
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:
 *     if ierr != -1:             # <<<<<<<<<<<<<<
 *         if (<void*>MPIException) != NULL:
 *             __Pyx_Raise(MPIException, ierr, NULL)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_ierr != -1);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":241
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:
 *     if ierr != -1:
 *         if (<void*>MPIException) != NULL:             # <<<<<<<<<<<<<<
 *             __Pyx_Raise(MPIException, ierr, NULL)
 *         else:
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = (((void *)__pyx_v_6mpi4py_3MPI_MPIException) != NULL);
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":242
 *     if ierr != -1:
 *         if (<void*>MPIException) != NULL:
 *             __Pyx_Raise(MPIException, ierr, NULL)             # <<<<<<<<<<<<<<
 *         else:
 *             __Pyx_Raise(<object>PyExc_RuntimeError, ierr, NULL)
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyInt_FromLong(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_v_6mpi4py_3MPI_MPIException, __pyx_t_2, NULL);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":244
 *             __Pyx_Raise(MPIException, ierr, NULL)
 *         else:
 *             __Pyx_Raise(<object>PyExc_RuntimeError, ierr, NULL)             # <<<<<<<<<<<<<<
 *     else:
 *         __Pyx_Raise(<object>PyExc_NotImplementedError, None, NULL)
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyInt_FromLong(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(((PyObject *)PyExc_RuntimeError), __pyx_t_2, NULL);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":246
 *             __Pyx_Raise(<object>PyExc_RuntimeError, ierr, NULL)
 *     else:
 *         __Pyx_Raise(<object>PyExc_NotImplementedError, None, NULL)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __Pyx_Raise(((PyObject *)PyExc_NotImplementedError), Py_None, NULL);
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":247
 *     else:
 *         __Pyx_Raise(<object>PyExc_NotImplementedError, None, NULL)
 *     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_AddTraceback("mpi4py.MPI.PyMPI_Raise");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  PyGILState_Release(_save);
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":249
 *     return 0
 * 
 * cdef inline int CHKERR(int ierr) nogil except -1:             # <<<<<<<<<<<<<<
 *     if ierr == 0: return 0
 *     PyMPI_Raise(ierr)
 */

static INLINE int __pyx_f_6mpi4py_3MPI_CHKERR(int __pyx_v_ierr) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":250
 * 
 * cdef inline int CHKERR(int ierr) nogil except -1:
 *     if ierr == 0: return 0             # <<<<<<<<<<<<<<
 *     PyMPI_Raise(ierr)
 *     return -1
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_ierr == 0);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":251
 * cdef inline int CHKERR(int ierr) nogil except -1:
 *     if ierr == 0: return 0
 *     PyMPI_Raise(ierr)             # <<<<<<<<<<<<<<
 *     return -1
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_Raise(__pyx_v_ierr); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":252
 *     if ierr == 0: return 0
 *     PyMPI_Raise(ierr)
 *     return -1             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  __pyx_r = -1;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.CHKERR");
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/allocate.pxi":10
 * #---------------------------------------------------------------------
 * 
 * cdef inline void *memnew(size_t n):             # <<<<<<<<<<<<<<
 *     return PyMem_Malloc(n)
 * 
 */

static INLINE void *__pyx_f_6mpi4py_3MPI_memnew(size_t __pyx_v_n) {
  void *__pyx_r;
  __Pyx_SetupRefcountContext("memnew");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/allocate.pxi":11
 * 
 * cdef inline void *memnew(size_t n):
 *     return PyMem_Malloc(n)             # <<<<<<<<<<<<<<
 * 
 * cdef inline void memdel(void *p):
 */
  __pyx_r = PyMem_Malloc(__pyx_v_n);
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/allocate.pxi":13
 *     return PyMem_Malloc(n)
 * 
 * cdef inline void memdel(void *p):             # <<<<<<<<<<<<<<
 *     PyMem_Free(p)
 * 
 */

static INLINE void __pyx_f_6mpi4py_3MPI_memdel(void *__pyx_v_p) {
  __Pyx_SetupRefcountContext("memdel");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/allocate.pxi":14
 * 
 * cdef inline void memdel(void *p):
 *     PyMem_Free(p)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object allocate(size_t n, void **pp):
 */
  PyMem_Free(__pyx_v_p);

  __Pyx_FinishRefcountContext();
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/allocate.pxi":16
 *     PyMem_Free(p)
 * 
 * cdef inline object allocate(size_t n, void **pp):             # <<<<<<<<<<<<<<
 *     cdef object cob
 *     cdef void *p = memnew(n)
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_allocate(size_t __pyx_v_n, void **__pyx_v_pp) {
  PyObject *__pyx_v_cob;
  void *__pyx_v_p;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("allocate");
  __pyx_v_cob = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/allocate.pxi":18
 * cdef inline object allocate(size_t n, void **pp):
 *     cdef object cob
 *     cdef void *p = memnew(n)             # <<<<<<<<<<<<<<
 *     if p == NULL: raise MemoryError
 *     try:    cob = PyCObject_FromVoidPtr(p, memdel)
 */
  __pyx_v_p = __pyx_f_6mpi4py_3MPI_memnew(__pyx_v_n);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/allocate.pxi":19
 *     cdef object cob
 *     cdef void *p = memnew(n)
 *     if p == NULL: raise MemoryError             # <<<<<<<<<<<<<<
 *     try:    cob = PyCObject_FromVoidPtr(p, memdel)
 *     except: memdel(p); raise
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_p == NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_Raise(__pyx_builtin_MemoryError, 0, 0);
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/allocate.pxi":20
 *     cdef void *p = memnew(n)
 *     if p == NULL: raise MemoryError
 *     try:    cob = PyCObject_FromVoidPtr(p, memdel)             # <<<<<<<<<<<<<<
 *     except: memdel(p); raise
 *     pp[0] = p
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyCObject_FromVoidPtr(__pyx_v_p, __pyx_f_6mpi4py_3MPI_memdel); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_cob);
      __pyx_v_cob = __pyx_t_2;
      __pyx_t_2 = 0;
      /* __pyx_t_2 released */
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/allocate.pxi":21
 *     if p == NULL: raise MemoryError
 *     try:    cob = PyCObject_FromVoidPtr(p, memdel)
 *     except: memdel(p); raise             # <<<<<<<<<<<<<<
 *     pp[0] = p
 *     return cob
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.allocate");
      if (__Pyx_GetException(&__pyx_1, &__pyx_2, &__pyx_3) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_2);
      __Pyx_GOTREF(__pyx_3);
      __pyx_f_6mpi4py_3MPI_memdel(__pyx_v_p);
      __Pyx_Raise(__pyx_1, __pyx_2, __pyx_3);
      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      goto __pyx_L5_exception_handled;
    }
    __pyx_L6_except_error:;
    __Pyx_XDECREF(__pyx_save_exc_type);
    __Pyx_XDECREF(__pyx_save_exc_value);
    __Pyx_XDECREF(__pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L11_try_end:;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/allocate.pxi":22
 *     try:    cob = PyCObject_FromVoidPtr(p, memdel)
 *     except: memdel(p); raise
 *     pp[0] = p             # <<<<<<<<<<<<<<
 *     return cob
 * 
 */
  (__pyx_v_pp[0]) = __pyx_v_p;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/allocate.pxi":23
 *     except: memdel(p); raise
 *     pp[0] = p
 *     return cob             # <<<<<<<<<<<<<<
 * 
 * #---------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_cob);
  __pyx_r = __pyx_v_cob;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.allocate");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_cob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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
 */

static 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;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("asmpistr");
  __Pyx_INCREF(__pyx_v_ob);

  /* "/u/dalcinl/Devel/mpi4py-dev/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
 *     ob = PyMPIString_AsStringAndSize(ob, &sbuf, &slen)
 */
  __pyx_v_sbuf = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/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             # <<<<<<<<<<<<<<
 *     ob = PyMPIString_AsStringAndSize(ob, &sbuf, &slen)
 *     if s: s[0] = <char*> sbuf
 */
  __pyx_v_slen = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmpistr.pxi":14
 *     cdef const_char *sbuf = NULL
 *     cdef Py_ssize_t slen = 0
 *     ob = PyMPIString_AsStringAndSize(ob, &sbuf, &slen)             # <<<<<<<<<<<<<<
 *     if s: s[0] = <char*> sbuf
 *     if n: n[0] = <int>   slen
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyMPIString_AsStringAndSize(__pyx_v_ob, (&__pyx_v_sbuf), (&__pyx_v_slen)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_ob);
  __pyx_v_ob = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmpistr.pxi":15
 *     cdef Py_ssize_t slen = 0
 *     ob = PyMPIString_AsStringAndSize(ob, &sbuf, &slen)
 *     if s: s[0] = <char*> sbuf             # <<<<<<<<<<<<<<
 *     if n: n[0] = <int>   slen
 *     return ob
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (__pyx_v_s != 0);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    (__pyx_v_s[0]) = ((char *)__pyx_v_sbuf);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmpistr.pxi":16
 *     ob = PyMPIString_AsStringAndSize(ob, &sbuf, &slen)
 *     if s: s[0] = <char*> sbuf
 *     if n: n[0] = <int>   slen             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (__pyx_v_n != 0);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    (__pyx_v_n[0]) = ((int)__pyx_v_slen);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmpistr.pxi":17
 *     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_1);
  __Pyx_AddTraceback("mpi4py.MPI.asmpistr");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmpistr.pxi":19
 *     return ob
 * 
 * cdef inline object tompistr(const_char *s, int n):             # <<<<<<<<<<<<<<
 *     return PyMPIString_FromStringAndSize(s, n)
 * 
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_tompistr(const char *__pyx_v_s, int __pyx_v_n) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("tompistr");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmpistr.pxi":20
 * 
 * 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 allocated */
  __pyx_t_1 = PyMPIString_FromStringAndSize(__pyx_v_s, __pyx_v_n); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmpistr.pxi":22
 *     return PyMPIString_FromStringAndSize(s, n)
 * 
 * cdef inline object mpistr(const_char *s):             # <<<<<<<<<<<<<<
 *     return PyMPIString_FromString(s)
 * 
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_mpistr(const char *__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("mpistr");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmpistr.pxi":23
 * 
 * cdef inline object mpistr(const_char *s):
 *     return PyMPIString_FromString(s)             # <<<<<<<<<<<<<<
 * 
 * #---------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyMPIString_FromString(__pyx_v_s); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":17
 * #---------------------------------------------------------------------
 * 
 * cdef inline object asbuffer_r(object ob, void** bptr, MPI_Aint* blen):             # <<<<<<<<<<<<<<
 *     cdef const_void *p = NULL
 *     cdef Py_ssize_t n = 0
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asbuffer_r(PyObject *__pyx_v_ob, void **__pyx_v_bptr, MPI_Aint *__pyx_v_blen) {
  const void *__pyx_v_p;
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("asbuffer_r");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":18
 * 
 * cdef inline object asbuffer_r(object ob, void** bptr, MPI_Aint* blen):
 *     cdef const_void *p = NULL             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t n = 0
 *     PyObject_AsReadBuffer(ob, &p, &n)
 */
  __pyx_v_p = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":19
 * cdef inline object asbuffer_r(object ob, void** bptr, MPI_Aint* blen):
 *     cdef const_void *p = NULL
 *     cdef Py_ssize_t n = 0             # <<<<<<<<<<<<<<
 *     PyObject_AsReadBuffer(ob, &p, &n)
 *     if bptr: bptr[0] = <void *>p
 */
  __pyx_v_n = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":20
 *     cdef const_void *p = NULL
 *     cdef Py_ssize_t n = 0
 *     PyObject_AsReadBuffer(ob, &p, &n)             # <<<<<<<<<<<<<<
 *     if bptr: bptr[0] = <void *>p
 *     if blen: blen[0] = <MPI_Aint>n
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_AsReadBuffer(__pyx_v_ob, (&__pyx_v_p), (&__pyx_v_n)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":21
 *     cdef Py_ssize_t n = 0
 *     PyObject_AsReadBuffer(ob, &p, &n)
 *     if bptr: bptr[0] = <void *>p             # <<<<<<<<<<<<<<
 *     if blen: blen[0] = <MPI_Aint>n
 *     return ob
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (__pyx_v_bptr != 0);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    (__pyx_v_bptr[0]) = ((void *)__pyx_v_p);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":22
 *     PyObject_AsReadBuffer(ob, &p, &n)
 *     if bptr: bptr[0] = <void *>p
 *     if blen: blen[0] = <MPI_Aint>n             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (__pyx_v_blen != 0);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    (__pyx_v_blen[0]) = ((MPI_Aint)__pyx_v_n);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":23
 *     if bptr: bptr[0] = <void *>p
 *     if blen: blen[0] = <MPI_Aint>n
 *     return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asbuffer_w(object ob, void** bptr, MPI_Aint* blen):
 */
  __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_AddTraceback("mpi4py.MPI.asbuffer_r");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":25
 *     return ob
 * 
 * cdef inline object asbuffer_w(object ob, void** bptr, MPI_Aint* blen):             # <<<<<<<<<<<<<<
 *     cdef void *p = NULL
 *     cdef Py_ssize_t n = 0
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asbuffer_w(PyObject *__pyx_v_ob, void **__pyx_v_bptr, MPI_Aint *__pyx_v_blen) {
  void *__pyx_v_p;
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("asbuffer_w");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":26
 * 
 * cdef inline object asbuffer_w(object ob, void** bptr, MPI_Aint* blen):
 *     cdef void *p = NULL             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t n = 0
 *     PyObject_AsWriteBuffer(ob, &p, &n)
 */
  __pyx_v_p = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":27
 * cdef inline object asbuffer_w(object ob, void** bptr, MPI_Aint* blen):
 *     cdef void *p = NULL
 *     cdef Py_ssize_t n = 0             # <<<<<<<<<<<<<<
 *     PyObject_AsWriteBuffer(ob, &p, &n)
 *     if bptr: bptr[0] = p
 */
  __pyx_v_n = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":28
 *     cdef void *p = NULL
 *     cdef Py_ssize_t n = 0
 *     PyObject_AsWriteBuffer(ob, &p, &n)             # <<<<<<<<<<<<<<
 *     if bptr: bptr[0] = p
 *     if blen: blen[0] = <MPI_Aint>n
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_AsWriteBuffer(__pyx_v_ob, (&__pyx_v_p), (&__pyx_v_n)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":29
 *     cdef Py_ssize_t n = 0
 *     PyObject_AsWriteBuffer(ob, &p, &n)
 *     if bptr: bptr[0] = p             # <<<<<<<<<<<<<<
 *     if blen: blen[0] = <MPI_Aint>n
 *     return ob
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (__pyx_v_bptr != 0);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    (__pyx_v_bptr[0]) = __pyx_v_p;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":30
 *     PyObject_AsWriteBuffer(ob, &p, &n)
 *     if bptr: bptr[0] = p
 *     if blen: blen[0] = <MPI_Aint>n             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (__pyx_v_blen != 0);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    (__pyx_v_blen[0]) = ((MPI_Aint)__pyx_v_n);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asbuffer.pxi":31
 *     if bptr: bptr[0] = p
 *     if blen: blen[0] = <MPI_Aint>n
 *     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_AddTraceback("mpi4py.MPI.asbuffer_w");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmemory.pxi":3
 * #---------------------------------------------------------------------
 * 
 * cdef inline object asmemory(object ob, void** base, MPI_Aint* size):             # <<<<<<<<<<<<<<
 *     cdef void *p = NULL
 *     cdef Py_ssize_t n = 0
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asmemory(PyObject *__pyx_v_ob, void **__pyx_v_base, MPI_Aint *__pyx_v_size) {
  void *__pyx_v_p;
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("asmemory");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmemory.pxi":4
 * 
 * cdef inline object asmemory(object ob, void** base, MPI_Aint* size):
 *     cdef void *p = NULL             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t n = 0
 *     PyObject_AsWriteBuffer(ob, &p, &n)
 */
  __pyx_v_p = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmemory.pxi":5
 * cdef inline object asmemory(object ob, void** base, MPI_Aint* size):
 *     cdef void *p = NULL
 *     cdef Py_ssize_t n = 0             # <<<<<<<<<<<<<<
 *     PyObject_AsWriteBuffer(ob, &p, &n)
 *     if base: base[0] = p
 */
  __pyx_v_n = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmemory.pxi":6
 *     cdef void *p = NULL
 *     cdef Py_ssize_t n = 0
 *     PyObject_AsWriteBuffer(ob, &p, &n)             # <<<<<<<<<<<<<<
 *     if base: base[0] = p
 *     if size: size[0] = n
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_AsWriteBuffer(__pyx_v_ob, (&__pyx_v_p), (&__pyx_v_n)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmemory.pxi":7
 *     cdef Py_ssize_t n = 0
 *     PyObject_AsWriteBuffer(ob, &p, &n)
 *     if base: base[0] = p             # <<<<<<<<<<<<<<
 *     if size: size[0] = n
 *     return ob
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (__pyx_v_base != 0);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    (__pyx_v_base[0]) = __pyx_v_p;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmemory.pxi":8
 *     PyObject_AsWriteBuffer(ob, &p, &n)
 *     if base: base[0] = p
 *     if size: size[0] = n             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (__pyx_v_size != 0);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    (__pyx_v_size[0]) = __pyx_v_n;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmemory.pxi":9
 *     if base: base[0] = p
 *     if size: size[0] = n
 *     return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object tomemory(void *base, MPI_Aint size):
 */
  __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_AddTraceback("mpi4py.MPI.asmemory");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmemory.pxi":11
 *     return ob
 * 
 * cdef inline object tomemory(void *base, MPI_Aint size):             # <<<<<<<<<<<<<<
 *     return PyBuffer_FromReadWriteMemory(base, <Py_ssize_t>size)
 * 
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_tomemory(void *__pyx_v_base, MPI_Aint __pyx_v_size) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("tomemory");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asmemory.pxi":12
 * 
 * cdef inline object tomemory(void *base, MPI_Aint size):
 *     return PyBuffer_FromReadWriteMemory(base, <Py_ssize_t>size)             # <<<<<<<<<<<<<<
 * 
 * #---------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyBuffer_FromReadWriteMemory(__pyx_v_base, ((Py_ssize_t)__pyx_v_size)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":3
 * #---------------------------------------------------------------------
 * 
 * cdef inline object newarray_int(int n, int **p):             # <<<<<<<<<<<<<<
 *      if n < 0: n = 0
 *      cdef int *array = NULL
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_newarray_int(int __pyx_v_n, int **__pyx_v_p) {
  int *__pyx_v_array;
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("newarray_int");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":4
 * 
 * cdef inline object newarray_int(int n, int **p):
 *      if n < 0: n = 0             # <<<<<<<<<<<<<<
 *      cdef int *array = NULL
 *      cdef object ob = allocate(n*sizeof(int), <void**>&array)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_n < 0);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_v_n = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":5
 * cdef inline object newarray_int(int n, int **p):
 *      if n < 0: n = 0
 *      cdef int *array = NULL             # <<<<<<<<<<<<<<
 *      cdef object ob = allocate(n*sizeof(int), <void**>&array)
 *      p[0] = array
 */
  __pyx_v_array = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":6
 *      if n < 0: n = 0
 *      cdef int *array = NULL
 *      cdef object ob = allocate(n*sizeof(int), <void**>&array)             # <<<<<<<<<<<<<<
 *      p[0] = array
 *      return ob
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_allocate((__pyx_v_n * (sizeof(int))), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":7
 *      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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":8
 *      cdef object ob = allocate(n*sizeof(int), <void**>&array)
 *      p[0] = array
 *      return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object newarray_int3(int n, int (**p)[3]):
 */
  __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.newarray_int");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":10
 *      return ob
 * 
 * cdef inline object newarray_int3(int n, int (**p)[3]):             # <<<<<<<<<<<<<<
 *      if n < 0: n = 0
 *      cdef int (*array)[3] # = NULL ## XXX
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_newarray_int3(int __pyx_v_n, int (**__pyx_v_p)[3]) {
  int (*__pyx_v_array)[3];
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("newarray_int3");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":11
 * 
 * cdef inline object newarray_int3(int n, int (**p)[3]):
 *      if n < 0: n = 0             # <<<<<<<<<<<<<<
 *      cdef int (*array)[3] # = NULL ## XXX
 *      cdef object ob = allocate(n*sizeof(int[3]), <void**>&array)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_n < 0);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_v_n = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":13
 *      if n < 0: n = 0
 *      cdef int (*array)[3] # = NULL ## XXX
 *      cdef object ob = allocate(n*sizeof(int[3]), <void**>&array)             # <<<<<<<<<<<<<<
 *      p[0] = array
 *      return ob
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_allocate((__pyx_v_n * (sizeof(int [3]))), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":14
 *      cdef int (*array)[3] # = NULL ## XXX
 *      cdef object ob = allocate(n*sizeof(int[3]), <void**>&array)
 *      p[0] = array             # <<<<<<<<<<<<<<
 *      return ob
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":15
 *      cdef object ob = allocate(n*sizeof(int[3]), <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_2);
  __Pyx_AddTraceback("mpi4py.MPI.newarray_int3");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":19
 * #---------------------------------------------------------------------
 * 
 * cdef inline object asarray_int(object sequence, int **p, Py_ssize_t size):             # <<<<<<<<<<<<<<
 *      cdef int *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_int(PyObject *__pyx_v_sequence, int **__pyx_v_p, Py_ssize_t __pyx_v_size) {
  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;
  PyObject *__pyx_1 = 0;
  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;
  __Pyx_SetupRefcountContext("asarray_int");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":20
 * 
 * cdef inline object asarray_int(object sequence, int **p, Py_ssize_t size):
 *      cdef int *array = NULL             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size > 0: assert n == size, "expecting %d items, got %d" % (size, n)
 */
  __pyx_v_array = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":21
 * cdef inline object asarray_int(object sequence, int **p, Py_ssize_t size):
 *      cdef int *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)             # <<<<<<<<<<<<<<
 *      if size > 0: assert n == size, "expecting %d items, got %d" % (size, n)
 *      cdef object ob = allocate(n*sizeof(int), <void**>&array)
 */
  __pyx_v_i = 0;
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":22
 *      cdef int *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size > 0: assert n == size, "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_2 allocated */
  __pyx_t_2 = (__pyx_v_size > 0);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    #ifndef PYREX_WITHOUT_ASSERTIONS
    if (unlikely(!(__pyx_v_n == __pyx_v_size))) {
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      /* __pyx_t_4 allocated */
      __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      /* __pyx_t_5 allocated */
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 22; __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_3 released */
      /* __pyx_t_4 released */
      /* __pyx_t_4 allocated */
      __pyx_t_4 = PyNumber_Remainder(__pyx_kp_113, ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      /* __pyx_t_5 released */
      PyErr_SetObject(PyExc_AssertionError, __pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      /* __pyx_t_4 released */
      {__pyx_filename = __pyx_f[13]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":23
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size > 0: assert n == size, "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_4 allocated */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_allocate((__pyx_v_n * (sizeof(int))), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_ob = __pyx_t_4;
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":24
 *      if size > 0: assert n == size, "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
 *      return ob
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_1) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = __pyx_PyInt_int(__pyx_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    (__pyx_v_array[__pyx_v_i]) = __pyx_t_6;
    /* __pyx_t_6 released */
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":25
 *      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_v_p[0]) = __pyx_v_array;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":26
 *      for i from 0 <= i < n: array[i] = sequence[i]
 *      p[0] = array
 *      return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_Aint(object sequence, MPI_Aint **p, Py_ssize_t size):
 */
  __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_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_int");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":28
 *      return ob
 * 
 * cdef inline object asarray_Aint(object sequence, MPI_Aint **p, Py_ssize_t size):             # <<<<<<<<<<<<<<
 *      cdef MPI_Aint *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Aint(PyObject *__pyx_v_sequence, MPI_Aint **__pyx_v_p, Py_ssize_t __pyx_v_size) {
  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;
  PyObject *__pyx_1 = 0;
  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;
  __Pyx_SetupRefcountContext("asarray_Aint");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":29
 * 
 * cdef inline object asarray_Aint(object sequence, MPI_Aint **p, Py_ssize_t size):
 *      cdef MPI_Aint *array = NULL             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size > 0: assert n == size, "expecting %d items, got %d" % (size, n)
 */
  __pyx_v_array = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":30
 * cdef inline object asarray_Aint(object sequence, MPI_Aint **p, Py_ssize_t size):
 *      cdef MPI_Aint *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)             # <<<<<<<<<<<<<<
 *      if size > 0: assert n == size, "expecting %d items, got %d" % (size, n)
 *      cdef object ob = allocate(n*sizeof(MPI_Aint), <void**>&array)
 */
  __pyx_v_i = 0;
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":31
 *      cdef MPI_Aint *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size > 0: assert n == size, "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_2 allocated */
  __pyx_t_2 = (__pyx_v_size > 0);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    #ifndef PYREX_WITHOUT_ASSERTIONS
    if (unlikely(!(__pyx_v_n == __pyx_v_size))) {
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      /* __pyx_t_4 allocated */
      __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      /* __pyx_t_5 allocated */
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __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_3 released */
      /* __pyx_t_4 released */
      /* __pyx_t_4 allocated */
      __pyx_t_4 = PyNumber_Remainder(__pyx_kp_114, ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      /* __pyx_t_5 released */
      PyErr_SetObject(PyExc_AssertionError, __pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      /* __pyx_t_4 released */
      {__pyx_filename = __pyx_f[13]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":32
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size > 0: assert n == size, "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_4 allocated */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_allocate((__pyx_v_n * (sizeof(MPI_Aint))), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_ob = __pyx_t_4;
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":33
 *      if size > 0: assert n == size, "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
 *      return ob
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_1) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = __pyx_PyInt_long(__pyx_1); if (unlikely((__pyx_t_6 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    (__pyx_v_array[__pyx_v_i]) = __pyx_t_6;
    /* __pyx_t_6 released */
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":34
 *      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_v_p[0]) = __pyx_v_array;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":35
 *      for i from 0 <= i < n: array[i] = sequence[i]
 *      p[0] = array
 *      return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_Datatype(object sequence, MPI_Datatype **p, Py_ssize_t size):
 */
  __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_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_Aint");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":37
 *      return ob
 * 
 * cdef inline object asarray_Datatype(object sequence, MPI_Datatype **p, Py_ssize_t size):             # <<<<<<<<<<<<<<
 *      cdef MPI_Datatype *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Datatype(PyObject *__pyx_v_sequence, MPI_Datatype **__pyx_v_p, Py_ssize_t __pyx_v_size) {
  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;
  PyObject *__pyx_1 = 0;
  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;
  __Pyx_SetupRefcountContext("asarray_Datatype");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":38
 * 
 * cdef inline object asarray_Datatype(object sequence, MPI_Datatype **p, Py_ssize_t size):
 *      cdef MPI_Datatype *array = NULL             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size >= 0: assert n == size, "expecting %d items, got %d" % (size, n)
 */
  __pyx_v_array = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":39
 * cdef inline object asarray_Datatype(object sequence, MPI_Datatype **p, Py_ssize_t size):
 *      cdef MPI_Datatype *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)             # <<<<<<<<<<<<<<
 *      if size >= 0: assert n == size, "expecting %d items, got %d" % (size, n)
 *      cdef object ob = allocate(n*sizeof(MPI_Datatype), <void**>&array)
 */
  __pyx_v_i = 0;
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":40
 *      cdef MPI_Datatype *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size >= 0: assert n == size, "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_2 allocated */
  __pyx_t_2 = (__pyx_v_size >= 0);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    #ifndef PYREX_WITHOUT_ASSERTIONS
    if (unlikely(!(__pyx_v_n == __pyx_v_size))) {
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      /* __pyx_t_4 allocated */
      __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      /* __pyx_t_5 allocated */
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 40; __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_3 released */
      /* __pyx_t_4 released */
      /* __pyx_t_4 allocated */
      __pyx_t_4 = PyNumber_Remainder(__pyx_kp_115, ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      /* __pyx_t_5 released */
      PyErr_SetObject(PyExc_AssertionError, __pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      /* __pyx_t_4 released */
      {__pyx_filename = __pyx_f[13]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":41
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size >= 0: assert n == size, "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_4 allocated */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_allocate((__pyx_v_n * (sizeof(MPI_Datatype))), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_ob = __pyx_t_4;
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":42
 *      if size >= 0: assert n == size, "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
 *      return ob
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_1) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    if (!(__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    (__pyx_v_array[__pyx_v_i]) = ((PyMPIDatatypeObject *)__pyx_1)->ob_mpi;
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":43
 *      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_v_p[0]) = __pyx_v_array;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":44
 *      for i from 0 <= i < n: array[i] = (<Datatype?>sequence[i]).ob_mpi
 *      p[0] = array
 *      return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_Request(object sequence, MPI_Request **p, Py_ssize_t size):
 */
  __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_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_Datatype");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":46
 *      return ob
 * 
 * cdef inline object asarray_Request(object sequence, MPI_Request **p, Py_ssize_t size):             # <<<<<<<<<<<<<<
 *      cdef MPI_Request *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Request(PyObject *__pyx_v_sequence, MPI_Request **__pyx_v_p, Py_ssize_t __pyx_v_size) {
  MPI_Request *__pyx_v_array;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  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;
  __Pyx_SetupRefcountContext("asarray_Request");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":47
 * 
 * cdef inline object asarray_Request(object sequence, MPI_Request **p, Py_ssize_t size):
 *      cdef MPI_Request *array = NULL             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size >= 0: assert n == size, "expecting %d items, got %d" % (size, n)
 */
  __pyx_v_array = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":48
 * cdef inline object asarray_Request(object sequence, MPI_Request **p, Py_ssize_t size):
 *      cdef MPI_Request *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)             # <<<<<<<<<<<<<<
 *      if size >= 0: assert n == size, "expecting %d items, got %d" % (size, n)
 *      cdef object ob = allocate(n*sizeof(MPI_Request), <void**>&array)
 */
  __pyx_v_i = 0;
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":49
 *      cdef MPI_Request *array = NULL
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size >= 0: assert n == size, "expecting %d items, got %d" % (size, n)             # <<<<<<<<<<<<<<
 *      cdef object ob = allocate(n*sizeof(MPI_Request), <void**>&array)
 *      for i from 0 <= i < n: array[i] = (<Request?>sequence[i]).ob_mpi
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (__pyx_v_size >= 0);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    #ifndef PYREX_WITHOUT_ASSERTIONS
    if (unlikely(!(__pyx_v_n == __pyx_v_size))) {
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      /* __pyx_t_4 allocated */
      __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      /* __pyx_t_5 allocated */
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 49; __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_3 released */
      /* __pyx_t_4 released */
      /* __pyx_t_4 allocated */
      __pyx_t_4 = PyNumber_Remainder(__pyx_kp_116, ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
      /* __pyx_t_5 released */
      PyErr_SetObject(PyExc_AssertionError, __pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      /* __pyx_t_4 released */
      {__pyx_filename = __pyx_f[13]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":50
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      if size >= 0: assert n == size, "expecting %d items, got %d" % (size, n)
 *      cdef object ob = allocate(n*sizeof(MPI_Request), <void**>&array)             # <<<<<<<<<<<<<<
 *      for i from 0 <= i < n: array[i] = (<Request?>sequence[i]).ob_mpi
 *      p[0] = array
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_allocate((__pyx_v_n * (sizeof(MPI_Request))), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_ob = __pyx_t_4;
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":51
 *      if size >= 0: assert n == size, "expecting %d items, got %d" % (size, n)
 *      cdef object ob = allocate(n*sizeof(MPI_Request), <void**>&array)
 *      for i from 0 <= i < n: array[i] = (<Request?>sequence[i]).ob_mpi             # <<<<<<<<<<<<<<
 *      p[0] = array
 *      return ob
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_1) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    if (!(__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    (__pyx_v_array[__pyx_v_i]) = ((PyMPIRequestObject *)__pyx_1)->ob_mpi;
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":52
 *      cdef object ob = allocate(n*sizeof(MPI_Request), <void**>&array)
 *      for i from 0 <= i < n: array[i] = (<Request?>sequence[i]).ob_mpi
 *      p[0] = array             # <<<<<<<<<<<<<<
 *      return ob
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":53
 *      for i from 0 <= i < n: array[i] = (<Request?>sequence[i]).ob_mpi
 *      p[0] = array
 *      return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline int restore_Request(object sequence, MPI_Request **p, Py_ssize_t size) except -1:
 */
  __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_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_Request");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":55
 *      return ob
 * 
 * cdef inline int restore_Request(object sequence, MPI_Request **p, Py_ssize_t size) except -1:             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t i
 *      cdef MPI_Request *array = p[0]
 */

static INLINE int __pyx_f_6mpi4py_3MPI_restore_Request(PyObject *__pyx_v_sequence, MPI_Request **__pyx_v_p, Py_ssize_t __pyx_v_size) {
  Py_ssize_t __pyx_v_i;
  MPI_Request *__pyx_v_array;
  int __pyx_r;
  PyObject *__pyx_1 = 0;
  __Pyx_SetupRefcountContext("restore_Request");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":57
 * cdef inline int restore_Request(object sequence, MPI_Request **p, Py_ssize_t size) except -1:
 *      cdef Py_ssize_t i
 *      cdef MPI_Request *array = p[0]             # <<<<<<<<<<<<<<
 *      for i from 0 <= i < size: (<Request?>sequence[i]).ob_mpi = array[i]
 *      return 0
 */
  __pyx_v_array = (__pyx_v_p[0]);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":58
 *      cdef Py_ssize_t i
 *      cdef MPI_Request *array = p[0]
 *      for i from 0 <= i < size: (<Request?>sequence[i]).ob_mpi = array[i]             # <<<<<<<<<<<<<<
 *      return 0
 * 
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_size; __pyx_v_i++) {
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_1) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    if (!(__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    ((PyMPIRequestObject *)__pyx_1)->ob_mpi = (__pyx_v_array[__pyx_v_i]);
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":59
 *      cdef MPI_Request *array = p[0]
 *      for i from 0 <= i < size: (<Request?>sequence[i]).ob_mpi = array[i]
 *      return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_Status(object sequence, MPI_Status **p, Py_ssize_t n):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_AddTraceback("mpi4py.MPI.restore_Request");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":61
 *      return 0
 * 
 * cdef inline object asarray_Status(object sequence, MPI_Status **p, Py_ssize_t n):             # <<<<<<<<<<<<<<
 *      if sequence is None: return None
 *      cdef MPI_Status *array = NULL
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Status(PyObject *__pyx_v_sequence, MPI_Status **__pyx_v_p, Py_ssize_t __pyx_v_n) {
  MPI_Status *__pyx_v_array;
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("asarray_Status");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":62
 * 
 * cdef inline object asarray_Status(object sequence, MPI_Status **p, Py_ssize_t n):
 *      if sequence is None: return None             # <<<<<<<<<<<<<<
 *      cdef MPI_Status *array = NULL
 *      cdef object ob = allocate(n*sizeof(MPI_Status), <void**>&array)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_sequence == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":63
 * cdef inline object asarray_Status(object sequence, MPI_Status **p, Py_ssize_t n):
 *      if sequence is None: return None
 *      cdef MPI_Status *array = NULL             # <<<<<<<<<<<<<<
 *      cdef object ob = allocate(n*sizeof(MPI_Status), <void**>&array)
 *      p[0] = array
 */
  __pyx_v_array = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":64
 *      if sequence is None: return None
 *      cdef MPI_Status *array = NULL
 *      cdef object ob = allocate(n*sizeof(MPI_Status), <void**>&array)             # <<<<<<<<<<<<<<
 *      p[0] = array
 *      return ob
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_allocate((__pyx_v_n * (sizeof(MPI_Status))), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":65
 *      cdef MPI_Status *array = NULL
 *      cdef object ob = allocate(n*sizeof(MPI_Status), <void**>&array)
 *      p[0] = array             # <<<<<<<<<<<<<<
 *      return ob
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":66
 *      cdef object ob = allocate(n*sizeof(MPI_Status), <void**>&array)
 *      p[0] = array
 *      return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline int restore_Status(object sequence, MPI_Status **p, Py_ssize_t n)  except -1:
 */
  __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.asarray_Status");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":68
 *      return ob
 * 
 * cdef inline int restore_Status(object sequence, MPI_Status **p, Py_ssize_t n)  except -1:             # <<<<<<<<<<<<<<
 *      if sequence is None: return 0
 *      cdef Py_ssize_t i = 0, m = n - len(sequence)
 */

static INLINE int __pyx_f_6mpi4py_3MPI_restore_Status(PyObject *__pyx_v_sequence, MPI_Status **__pyx_v_p, Py_ssize_t __pyx_v_n) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_m;
  MPI_Status *__pyx_v_array;
  int __pyx_r;
  PyObject *__pyx_1 = 0;
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_SetupRefcountContext("restore_Status");
  __Pyx_INCREF(__pyx_v_sequence);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":69
 * 
 * cdef inline int restore_Status(object sequence, MPI_Status **p, Py_ssize_t n)  except -1:
 *      if sequence is None: return 0             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t i = 0, m = n - len(sequence)
 *      if m > 0:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_sequence == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":70
 * cdef inline int restore_Status(object sequence, MPI_Status **p, Py_ssize_t n)  except -1:
 *      if sequence is None: return 0
 *      cdef Py_ssize_t i = 0, m = n - len(sequence)             # <<<<<<<<<<<<<<
 *      if m > 0:
 *           if isinstance(sequence, list):
 */
  __pyx_v_i = 0;
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_m = (__pyx_v_n - __pyx_t_2);
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":71
 *      if sequence is None: return 0
 *      cdef Py_ssize_t i = 0, m = n - len(sequence)
 *      if m > 0:             # <<<<<<<<<<<<<<
 *           if isinstance(sequence, list):
 *                sequence += [Status() for i from 0 <= i < m]
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_m > 0);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":72
 *      cdef Py_ssize_t i = 0, m = n - len(sequence)
 *      if m > 0:
 *           if isinstance(sequence, list):             # <<<<<<<<<<<<<<
 *                sequence += [Status() for i from 0 <= i < m]
 *           else:
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = PyObject_TypeCheck(__pyx_v_sequence, ((PyTypeObject *)((PyObject*)&PyList_Type))); 
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":73
 *      if m > 0:
 *           if isinstance(sequence, list):
 *                sequence += [Status() for i from 0 <= i < m]             # <<<<<<<<<<<<<<
 *           else:
 *                n = n - m
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_m; __pyx_v_i++) {
        /* __pyx_t_4 allocated */
        __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Status)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        /* __pyx_t_5 allocated */
        __pyx_t_5 = PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_4); if (unlikely(__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        /* __pyx_t_4 released */
        /* __pyx_t_5 released */
      }
      __pyx_1 = PyNumber_InPlaceAdd(__pyx_v_sequence, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
      __Pyx_DECREF(__pyx_v_sequence);
      __pyx_v_sequence = __pyx_1;
      __pyx_1 = 0;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":75
 *                sequence += [Status() for i from 0 <= i < m]
 *           else:
 *                n = n - m             # <<<<<<<<<<<<<<
 *      cdef MPI_Status *array = p[0]
 *      for i from 0 <= i < n: (<Status?>sequence[i]).ob_mpi = array[i]
 */
      __pyx_v_n = (__pyx_v_n - __pyx_v_m);
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":76
 *           else:
 *                n = n - m
 *      cdef MPI_Status *array = p[0]             # <<<<<<<<<<<<<<
 *      for i from 0 <= i < n: (<Status?>sequence[i]).ob_mpi = array[i]
 *      return 0
 */
  __pyx_v_array = (__pyx_v_p[0]);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":77
 *                n = n - m
 *      cdef MPI_Status *array = p[0]
 *      for i from 0 <= i < n: (<Status?>sequence[i]).ob_mpi = array[i]             # <<<<<<<<<<<<<<
 *      return 0
 * 
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_1) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    if (!(__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mpi4py_3MPI_Status))) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    ((PyMPIStatusObject *)__pyx_1)->ob_mpi = (__pyx_v_array[__pyx_v_i]);
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":78
 *      cdef MPI_Status *array = p[0]
 *      for i from 0 <= i < n: (<Status?>sequence[i]).ob_mpi = array[i]
 *      return 0             # <<<<<<<<<<<<<<
 * 
 * #---------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.restore_Status");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_sequence);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":82
 * #---------------------------------------------------------------------
 * 
 * cdef inline object asarray_argv(object sequence, char ***p):             # <<<<<<<<<<<<<<
 *      sequence = list(sequence)
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_argv(PyObject *__pyx_v_sequence, 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;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  __Pyx_SetupRefcountContext("asarray_argv");
  __Pyx_INCREF(__pyx_v_sequence);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":83
 * 
 * cdef inline object asarray_argv(object sequence, char ***p):
 *      sequence = list(sequence)             # <<<<<<<<<<<<<<
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      cdef char** array = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_sequence);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_sequence);
  __Pyx_GIVEREF(__pyx_v_sequence);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyList_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 83; __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 released */
  __Pyx_DECREF(__pyx_v_sequence);
  __pyx_v_sequence = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":84
 * cdef inline object asarray_argv(object sequence, char ***p):
 *      sequence = list(sequence)
 *      cdef Py_ssize_t i = 0, n = len(sequence)             # <<<<<<<<<<<<<<
 *      cdef char** array = NULL
 *      cdef object ob = allocate((n+1)*sizeof(char*), <void**>&array)
 */
  __pyx_v_i = 0;
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_3;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":85
 *      sequence = list(sequence)
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      cdef char** array = NULL             # <<<<<<<<<<<<<<
 *      cdef object ob = allocate((n+1)*sizeof(char*), <void**>&array)
 *      for i from 0 <= i < n:
 */
  __pyx_v_array = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":86
 *      cdef Py_ssize_t i = 0, n = len(sequence)
 *      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_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_allocate(((__pyx_v_n + 1) * (sizeof(char *))), ((void **)(&__pyx_v_array))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __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;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":87
 *      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
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":88
 *      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_1 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, sizeof(Py_ssize_t), PyInt_FromSsize_t); if (!__pyx_1) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_1, (&(__pyx_v_array[__pyx_v_i])), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    if (__Pyx_SetItemInt(__pyx_v_sequence, __pyx_v_i, __pyx_t_2, sizeof(Py_ssize_t), PyInt_FromSsize_t) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":89
 *      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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":90
 *           sequence[i] = asmpistr(sequence[i], &array[i], NULL)
 *      array[n] = NULL
 *      p[0] = array             # <<<<<<<<<<<<<<
 *      return (sequence, ob)
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/asarray.pxi":91
 *      array[n] = NULL
 *      p[0] = array
 *      return (sequence, ob)             # <<<<<<<<<<<<<<
 * 
 * #---------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_sequence);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_sequence);
  __Pyx_GIVEREF(__pyx_v_sequence);
  __Pyx_INCREF(__pyx_v_ob);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_ob);
  __Pyx_GIVEREF(__pyx_v_ob);
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_argv");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_DECREF(__pyx_v_sequence);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":9
 * # Status
 * 
 * cdef inline MPI_Status *_arg_Status(object status):             # <<<<<<<<<<<<<<
 *     if status is None: return MPI_STATUS_IGNORE
 *     return &((<Status>status).ob_mpi)
 */

static INLINE MPI_Status *__pyx_f_6mpi4py_3MPI__arg_Status(PyObject *__pyx_v_status) {
  MPI_Status *__pyx_r;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("_arg_Status");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":10
 * 
 * cdef inline MPI_Status *_arg_Status(object status):
 *     if status is None: return MPI_STATUS_IGNORE             # <<<<<<<<<<<<<<
 *     return &((<Status>status).ob_mpi)
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_status == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = MPI_STATUS_IGNORE;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":11
 * cdef inline MPI_Status *_arg_Status(object status):
 *     if status is None: return MPI_STATUS_IGNORE
 *     return &((<Status>status).ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int _eq_Status(MPI_Status* s1, MPI_Status* s2) nogil:
 */
  __pyx_r = (&((PyMPIStatusObject *)__pyx_v_status)->ob_mpi);
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":13
 *     return &((<Status>status).ob_mpi)
 * 
 * cdef inline int _eq_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 INLINE int __pyx_f_6mpi4py_3MPI__eq_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;
  int __pyx_t_1;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":14
 * 
 * cdef inline int _eq_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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":15
 * cdef inline int _eq_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);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":16
 *    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);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":17
 *    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
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":18
 *    cdef unsigned char* b = <unsigned char*>s2
 *    for i from 0 <= i < n:
 *        if a[i] != b[i]:             # <<<<<<<<<<<<<<
 *            return 0
 *    return 1
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((__pyx_v_a[__pyx_v_i]) != (__pyx_v_b[__pyx_v_i]));
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":19
 *    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:;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":20
 *        if a[i] != b[i]:
 *            return 0
 *    return 1             # <<<<<<<<<<<<<<
 * 
 * #---------------------------------------------------------------------
 */
  __pyx_r = 1;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":25
 * # Datatype
 * 
 * cdef inline Datatype _new_Datatype(MPI_Datatype ob):             # <<<<<<<<<<<<<<
 *     cdef Datatype datatype = Datatype()
 *     datatype.ob_mpi = ob
 */

static INLINE PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_Datatype __pyx_v_ob) {
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyMPIDatatypeObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_new_Datatype");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":26
 * 
 * cdef inline Datatype _new_Datatype(MPI_Datatype ob):
 *     cdef Datatype datatype = Datatype()             # <<<<<<<<<<<<<<
 *     datatype.ob_mpi = ob
 *     return datatype
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype = ((PyMPIDatatypeObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":27
 * cdef inline Datatype _new_Datatype(MPI_Datatype ob):
 *     cdef Datatype datatype = Datatype()
 *     datatype.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return datatype
 * 
 */
  __pyx_v_datatype->ob_mpi = __pyx_v_ob;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":28
 *     cdef Datatype datatype = 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 = ((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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":30
 *     return datatype
 * 
 * cdef inline int _del_Datatype(MPI_Datatype* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL              : return 0
 */

static INLINE int __pyx_f_6mpi4py_3MPI__del_Datatype(MPI_Datatype *__pyx_v_ob) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("_del_Datatype");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":32
 * 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 allocated */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":33
 *     #
 *     if ob    == NULL              : return 0
 *     if ob[0] == MPI_DATATYPE_NULL : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()           : return 0
 *     #
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":34
 *     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 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":36
 *     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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":38
 *     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 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;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("_named_Datatype");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":39
 * 
 * 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 allocated */
  __pyx_t_1 = (__pyx_v_ob == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":40
 * 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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":41
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":42
 *     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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":43
 *     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_t_2 allocated */
  __pyx_t_2 = __pyx_v_ierr;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":44
 *     ierr = MPI_Type_get_envelope(ob, &ni, &na, &nt, &combiner)
 *     if ierr: return 0 # XXX
 *     return combiner == MPI_COMBINER_NAMED             # <<<<<<<<<<<<<<
 * 
 * cdef void _fix_Datatype(Datatype datatype):
 */
  __pyx_r = (__pyx_v_combiner == MPI_COMBINER_NAMED);
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":46
 *     return combiner == MPI_COMBINER_NAMED
 * 
 * cdef void _fix_Datatype(Datatype datatype):             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype ob = datatype.ob_mpi
 *     if ob == MPI_DATATYPE_NULL: return
 */

static  void __pyx_f_6mpi4py_3MPI__fix_Datatype(PyMPIDatatypeObject *__pyx_v_datatype) {
  MPI_Datatype __pyx_v_ob;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("_fix_Datatype");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":47
 * 
 * cdef void _fix_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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":48
 * cdef void _fix_Datatype(Datatype datatype):
 *     cdef MPI_Datatype ob = datatype.ob_mpi
 *     if ob == MPI_DATATYPE_NULL: return             # <<<<<<<<<<<<<<
 *     if _named_Datatype(ob): pass
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_ob == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":49
 *     cdef MPI_Datatype ob = datatype.ob_mpi
 *     if ob == MPI_DATATYPE_NULL: return
 *     if _named_Datatype(ob): pass             # <<<<<<<<<<<<<<
 * 
 * #---------------------------------------------------------------------
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI__named_Datatype(__pyx_v_ob);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    goto __pyx_L4;
  }
  __pyx_L4:;

  __pyx_L0:;
  __Pyx_FinishRefcountContext();
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":10
 *     cdef object args, kargs
 * 
 *     def __cinit__(self, query_fn, free_fn, cancel_fn,             # <<<<<<<<<<<<<<
 *                   args=None, kargs=None):
 *         self.query_fn  = query_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;
  PyObject *__pyx_1 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_query_fn,&__pyx_kp_free_fn,&__pyx_kp_cancel_fn,&__pyx_kp_args,&__pyx_kp_kargs,0};
  __Pyx_SetupRefcountContext("__cinit__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[5] = {0,0,0,0,0};
    values[3] = Py_None;
    values[4] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_query_fn);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_free_fn);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 1); {__pyx_filename = __pyx_f[15]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_cancel_fn);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, 2); {__pyx_filename = __pyx_f[15]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_args);
        if (unlikely(value)) { values[3] = value; kw_args--; }
      }
      case  4:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_kargs);
        if (unlikely(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), "__cinit__") < 0)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L3_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];
  } else {
    __pyx_v_args = Py_None;
    __pyx_v_kargs = Py_None;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  5:
      __pyx_v_kargs = PyTuple_GET_ITEM(__pyx_args, 4);
      case  4:
      __pyx_v_args = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3:
      __pyx_v_cancel_fn = PyTuple_GET_ITEM(__pyx_args, 2);
      __pyx_v_free_fn = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_query_fn = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[15]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.__cinit__");
  return -1;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":12
 *     def __cinit__(self, query_fn, free_fn, cancel_fn,
 *                   args=None, kargs=None):
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":13
 *                   args=None, kargs=None):
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":14
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":15
 *         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_1 allocated */
  __pyx_t_1 = (__pyx_v_args != Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(__pyx_v_args);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_args);
    __Pyx_GIVEREF(__pyx_v_args);
    __pyx_1 = PyObject_Call(((PyObject *)((PyObject*)&PyTuple_Type)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
  } else {
    __pyx_1 = ((PyObject *)__pyx_empty_tuple);
    __Pyx_INCREF(__pyx_1);
  }
  /* __pyx_t_1 released */
  __Pyx_GIVEREF(__pyx_1);
  __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->args);
  __Pyx_DECREF(((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->args);
  ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->args = __pyx_1;
  __pyx_1 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":16
 *         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_1 allocated */
  __pyx_t_1 = (__pyx_v_kargs != Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(__pyx_v_kargs);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_kargs);
    __Pyx_GIVEREF(__pyx_v_kargs);
    __pyx_1 = PyObject_Call(((PyObject *)((PyObject*)&PyDict_Type)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
  } else {
    __pyx_1 = PyDict_New(); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_1));
  }
  /* __pyx_t_1 released */
  __Pyx_GIVEREF(__pyx_1);
  __Pyx_GOTREF(((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->kargs);
  __Pyx_DECREF(((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->kargs);
  ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self)->kargs = __pyx_1;
  __pyx_1 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.__cinit__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":18
 *         self.kargs = dict(kargs) if kargs is not None else {}
 * 
 *     cdef int query(self, MPI_Status *status) except -1:             # <<<<<<<<<<<<<<
 *         cdef Status sts = Status()
 *         if self.query_fn is not None:
 */

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) {
  PyMPIStatusObject *__pyx_v_sts = 0;
  int __pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_SetupRefcountContext("query");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":19
 * 
 *     cdef int query(self, MPI_Status *status) except -1:
 *         cdef Status sts = Status()             # <<<<<<<<<<<<<<
 *         if self.query_fn is not None:
 *             self.query_fn(sts, *self.args, **self.kargs)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Status)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Status))) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_sts = ((PyMPIStatusObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":20
 *     cdef int query(self, MPI_Status *status) except -1:
 *         cdef Status sts = Status()
 *         if self.query_fn is not None:             # <<<<<<<<<<<<<<
 *             self.query_fn(sts, *self.args, **self.kargs)
 *         if (status != NULL and
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (__pyx_v_self->query_fn != Py_None);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":21
 *         cdef Status sts = Status()
 *         if self.query_fn is not None:
 *             self.query_fn(sts, *self.args, **self.kargs)             # <<<<<<<<<<<<<<
 *         if (status != NULL and
 *             status != MPI_STATUS_IGNORE and
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __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_1 = PySequence_Tuple(__pyx_v_self->args); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_1));
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyNumber_Add(((PyObject *)__pyx_t_1), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
    /* __pyx_t_1 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = PyEval_CallObjectWithKeywords(__pyx_v_self->query_fn, __pyx_t_3, __pyx_v_self->kargs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /* __pyx_t_1 released */
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":22
 *         if self.query_fn is not None:
 *             self.query_fn(sts, *self.args, **self.kargs)
 *         if (status != NULL and             # <<<<<<<<<<<<<<
 *             status != MPI_STATUS_IGNORE and
 *             status != MPI_STATUSES_IGNORE): # just in case ...
 */
  if ((__pyx_v_status != NULL)) {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":23
 *             self.query_fn(sts, *self.args, **self.kargs)
 *         if (status != NULL and
 *             status != MPI_STATUS_IGNORE and             # <<<<<<<<<<<<<<
 *             status != MPI_STATUSES_IGNORE): # just in case ...
 *             status[0] = sts.ob_mpi
 */
    if ((__pyx_v_status != MPI_STATUS_IGNORE)) {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":24
 *         if (status != NULL and
 *             status != MPI_STATUS_IGNORE and
 *             status != MPI_STATUSES_IGNORE): # just in case ...             # <<<<<<<<<<<<<<
 *             status[0] = sts.ob_mpi
 *         return MPI_SUCCESS
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = (__pyx_v_status != MPI_STATUSES_IGNORE);
    } else {
      __pyx_t_2 = (__pyx_v_status != MPI_STATUS_IGNORE);
    }
    /* __pyx_t_4 allocated */
    __pyx_t_4 = __pyx_t_2;
    /* __pyx_t_2 released */
  } else {
    __pyx_t_4 = (__pyx_v_status != NULL);
  }
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":25
 *             status != MPI_STATUS_IGNORE and
 *             status != MPI_STATUSES_IGNORE): # just in case ...
 *             status[0] = sts.ob_mpi             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 * 
 */
    (__pyx_v_status[0]) = __pyx_v_sts->ob_mpi;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":26
 *             status != MPI_STATUSES_IGNORE): # just in case ...
 *             status[0] = sts.ob_mpi
 *         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_1);
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.query");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_sts);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":28
 *         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;
  PyObject *__pyx_1 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("free");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":29
 * 
 *     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 allocated */
  __pyx_t_1 = (__pyx_v_self->free_fn != Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":30
 *     cdef int free(self) except -1:
 *         if self.free_fn is not None:
 *             self.free_fn(*self.args, **self.kargs)             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 * 
 */
    __pyx_1 = PySequence_Tuple(__pyx_v_self->args); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_1));
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_v_self->free_fn, ((PyObject *)__pyx_1), __pyx_v_self->kargs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":31
 *         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_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.free");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":33
 *         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;
  PyObject *__pyx_1 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("cancel");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":34
 * 
 *     cdef int cancel(self, bint completed) except -1:
 *         if self.cancel_fn is not None:             # <<<<<<<<<<<<<<
 *             self.cancel_fn(completed, *self.args, **self.kargs)
 *         elif not completed:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_self->cancel_fn != Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":35
 *     cdef int cancel(self, bint completed) except -1:
 *         if self.cancel_fn is not None:
 *             self.cancel_fn(completed, *self.args, **self.kargs)             # <<<<<<<<<<<<<<
 *         elif not completed:
 *             return MPI_ERR_PENDING
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_completed); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 35; __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 released */
    __pyx_1 = PySequence_Tuple(__pyx_v_self->args); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_1));
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_t_3), ((PyObject *)__pyx_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_1)); __pyx_1 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_v_self->cancel_fn, __pyx_t_2, __pyx_v_self->kargs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":36
 *         if self.cancel_fn is not None:
 *             self.cancel_fn(completed, *self.args, **self.kargs)
 *         elif not completed:             # <<<<<<<<<<<<<<
 *             return MPI_ERR_PENDING
 *         return MPI_SUCCESS
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_v_completed);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":37
 *             self.cancel_fn(completed, *self.args, **self.kargs)
 *         elif not completed:
 *             return MPI_ERR_PENDING             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 * 
 */
    __pyx_r = MPI_ERR_PENDING;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":38
 *         elif not completed:
 *             return MPI_ERR_PENDING
 *         return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * # ---
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.cancel");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":42
 * # ---
 * 
 * cdef int greq_query(void *extra_state, MPI_Status *status) with gil:             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_greq state = <_p_greq>extra_state
 */

static  int __pyx_f_6mpi4py_3MPI_greq_query(void *__pyx_v_extra_state, MPI_Status *__pyx_v_status) {
  int __pyx_v_ierr;
  struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_state = 0;
  PyObject *__pyx_v_exc;
  int __pyx_r;
  PyObject *__pyx_1 = 0;
  int __pyx_2;
  PyObject *__pyx_3 = 0;
  PyObject *__pyx_4 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_SetupRefcountContext("greq_query");
  __pyx_v_exc = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":43
 * 
 * cdef int greq_query(void *extra_state, MPI_Status *status) with gil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef _p_greq state = <_p_greq>extra_state
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":44
 * cdef int greq_query(void *extra_state, MPI_Status *status) with gil:
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_greq state = <_p_greq>extra_state             # <<<<<<<<<<<<<<
 *     try:
 *         ierr = state.query(status)
 */
  __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);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":45
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_greq state = <_p_greq>extra_state
 *     try:             # <<<<<<<<<<<<<<
 *         ierr = state.query(status)
 *     except Exception, exc:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":46
 *     cdef _p_greq state = <_p_greq>extra_state
 *     try:
 *         ierr = state.query(status)             # <<<<<<<<<<<<<<
 *     except Exception, exc:
 *         ierr = exc.Get_error_code()
 */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq *)__pyx_v_state->__pyx_vtab)->query(__pyx_v_state, __pyx_v_status); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_v_ierr = __pyx_t_1;
      /* __pyx_t_1 released */
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":47
 *     try:
 *         ierr = state.query(status)
 *     except Exception, exc:             # <<<<<<<<<<<<<<
 *         ierr = exc.Get_error_code()
 *     except:
 */
    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_Exception); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
    __Pyx_GOTREF(__pyx_1);
    __pyx_2 = PyErr_ExceptionMatches(__pyx_1);
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    if (__pyx_2) {
      __Pyx_AddTraceback("mpi4py.MPI.greq_query");
      if (__Pyx_GetException(&__pyx_1, &__pyx_3, &__pyx_4) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_3);
      __Pyx_GOTREF(__pyx_4);
      __Pyx_INCREF(__pyx_3);
      __Pyx_DECREF(__pyx_v_exc);
      __pyx_v_exc = __pyx_3;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":48
 *         ierr = state.query(status)
 *     except Exception, exc:
 *         ierr = exc.Get_error_code()             # <<<<<<<<<<<<<<
 *     except:
 *         ierr = MPI_ERR_OTHER
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyObject_GetAttr(__pyx_v_exc, __pyx_kp_Get_error_code); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_PyInt_int(__pyx_t_3); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
      __pyx_v_ierr = __pyx_t_1;
      /* __pyx_t_1 released */
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
      goto __pyx_L4_exception_handled;
    }

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":49
 *     except Exception, exc:
 *         ierr = exc.Get_error_code()
 *     except:             # <<<<<<<<<<<<<<
 *         ierr = MPI_ERR_OTHER
 *     return ierr
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.greq_query");
      if (__Pyx_GetException(&__pyx_1, &__pyx_3, &__pyx_4) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_3);
      __Pyx_GOTREF(__pyx_4);

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":50
 *         ierr = exc.Get_error_code()
 *     except:
 *         ierr = MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
      __pyx_v_ierr = MPI_ERR_OTHER;
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XDECREF(__pyx_save_exc_type);
    __Pyx_XDECREF(__pyx_save_exc_value);
    __Pyx_XDECREF(__pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L10_try_end:;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":51
 *     except:
 *         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_1);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_4);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("mpi4py.MPI.greq_query");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_DECREF(__pyx_v_exc);
  __Pyx_FinishRefcountContext();
  PyGILState_Release(_save);
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":53
 *     return ierr
 * 
 * cdef int greq_free(void *extra_state) with gil:             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_greq state = <object>extra_state
 */

static  int __pyx_f_6mpi4py_3MPI_greq_free(void *__pyx_v_extra_state) {
  int __pyx_v_ierr;
  struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_state = 0;
  PyObject *__pyx_v_exc;
  int __pyx_r;
  PyObject *__pyx_1 = 0;
  int __pyx_2;
  PyObject *__pyx_3 = 0;
  PyObject *__pyx_4 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_SetupRefcountContext("greq_free");
  __pyx_v_exc = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":54
 * 
 * cdef int greq_free(void *extra_state) with gil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef _p_greq state = <object>extra_state
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":55
 * cdef int greq_free(void *extra_state) with gil:
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_greq state = <object>extra_state             # <<<<<<<<<<<<<<
 *     try:
 *         ierr = state.free()
 */
  if (!(__Pyx_TypeTest(((PyObject *)__pyx_v_extra_state), __pyx_ptype_6mpi4py_3MPI__p_greq))) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(((PyObject *)__pyx_v_extra_state));
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)((PyObject *)__pyx_v_extra_state));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":56
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_greq state = <object>extra_state
 *     try:             # <<<<<<<<<<<<<<
 *         ierr = state.free()
 *     except Exception, exc:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":57
 *     cdef _p_greq state = <object>extra_state
 *     try:
 *         ierr = state.free()             # <<<<<<<<<<<<<<
 *     except Exception, exc:
 *         ierr = exc.Get_error_code()
 */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq *)__pyx_v_state->__pyx_vtab)->free(__pyx_v_state); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_v_ierr = __pyx_t_1;
      /* __pyx_t_1 released */
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":58
 *     try:
 *         ierr = state.free()
 *     except Exception, exc:             # <<<<<<<<<<<<<<
 *         ierr = exc.Get_error_code()
 *     except:
 */
    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_Exception); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
    __Pyx_GOTREF(__pyx_1);
    __pyx_2 = PyErr_ExceptionMatches(__pyx_1);
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    if (__pyx_2) {
      __Pyx_AddTraceback("mpi4py.MPI.greq_free");
      if (__Pyx_GetException(&__pyx_1, &__pyx_3, &__pyx_4) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_3);
      __Pyx_GOTREF(__pyx_4);
      __Pyx_INCREF(__pyx_3);
      __Pyx_DECREF(__pyx_v_exc);
      __pyx_v_exc = __pyx_3;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":59
 *         ierr = state.free()
 *     except Exception, exc:
 *         ierr = exc.Get_error_code()             # <<<<<<<<<<<<<<
 *     except:
 *         ierr = MPI_ERR_OTHER
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyObject_GetAttr(__pyx_v_exc, __pyx_kp_Get_error_code); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_PyInt_int(__pyx_t_3); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
      __pyx_v_ierr = __pyx_t_1;
      /* __pyx_t_1 released */
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
      goto __pyx_L4_exception_handled;
    }

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":60
 *     except Exception, exc:
 *         ierr = exc.Get_error_code()
 *     except:             # <<<<<<<<<<<<<<
 *         ierr = MPI_ERR_OTHER
 *     Py_DECREF(<object>extra_state)
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.greq_free");
      if (__Pyx_GetException(&__pyx_1, &__pyx_3, &__pyx_4) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_3);
      __Pyx_GOTREF(__pyx_4);

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":61
 *         ierr = exc.Get_error_code()
 *     except:
 *         ierr = MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 *     Py_DECREF(<object>extra_state)
 *     return ierr
 */
      __pyx_v_ierr = MPI_ERR_OTHER;
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XDECREF(__pyx_save_exc_type);
    __Pyx_XDECREF(__pyx_save_exc_value);
    __Pyx_XDECREF(__pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L10_try_end:;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":62
 *     except:
 *         ierr = MPI_ERR_OTHER
 *     Py_DECREF(<object>extra_state)             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
  Py_DECREF(((PyObject *)__pyx_v_extra_state)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":63
 *         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_1);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_4);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("mpi4py.MPI.greq_free");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_DECREF(__pyx_v_exc);
  __Pyx_FinishRefcountContext();
  PyGILState_Release(_save);
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":65
 *     return ierr
 * 
 * cdef int greq_cancel(void *extra_state, int completed) with gil:             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_greq state = <object>extra_state
 */

static  int __pyx_f_6mpi4py_3MPI_greq_cancel(void *__pyx_v_extra_state, int __pyx_v_completed) {
  int __pyx_v_ierr;
  struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_state = 0;
  PyObject *__pyx_v_exc;
  int __pyx_r;
  PyObject *__pyx_1 = 0;
  int __pyx_2;
  PyObject *__pyx_3 = 0;
  PyObject *__pyx_4 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_SetupRefcountContext("greq_cancel");
  __pyx_v_exc = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":66
 * 
 * cdef int greq_cancel(void *extra_state, int completed) with gil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef _p_greq state = <object>extra_state
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":67
 * cdef int greq_cancel(void *extra_state, int completed) with gil:
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_greq state = <object>extra_state             # <<<<<<<<<<<<<<
 *     try:
 *         ierr = state.cancel(completed)
 */
  if (!(__Pyx_TypeTest(((PyObject *)__pyx_v_extra_state), __pyx_ptype_6mpi4py_3MPI__p_greq))) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(((PyObject *)__pyx_v_extra_state));
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)((PyObject *)__pyx_v_extra_state));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":68
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_greq state = <object>extra_state
 *     try:             # <<<<<<<<<<<<<<
 *         ierr = state.cancel(completed)
 *     except Exception, exc:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":69
 *     cdef _p_greq state = <object>extra_state
 *     try:
 *         ierr = state.cancel(completed)             # <<<<<<<<<<<<<<
 *     except Exception, exc:
 *         ierr = exc.Get_error_code()
 */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq *)__pyx_v_state->__pyx_vtab)->cancel(__pyx_v_state, __pyx_v_completed); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_v_ierr = __pyx_t_1;
      /* __pyx_t_1 released */
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":70
 *     try:
 *         ierr = state.cancel(completed)
 *     except Exception, exc:             # <<<<<<<<<<<<<<
 *         ierr = exc.Get_error_code()
 *     except:
 */
    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_Exception); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
    __Pyx_GOTREF(__pyx_1);
    __pyx_2 = PyErr_ExceptionMatches(__pyx_1);
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    if (__pyx_2) {
      __Pyx_AddTraceback("mpi4py.MPI.greq_cancel");
      if (__Pyx_GetException(&__pyx_1, &__pyx_3, &__pyx_4) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_3);
      __Pyx_GOTREF(__pyx_4);
      __Pyx_INCREF(__pyx_3);
      __Pyx_DECREF(__pyx_v_exc);
      __pyx_v_exc = __pyx_3;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":71
 *         ierr = state.cancel(completed)
 *     except Exception, exc:
 *         ierr = exc.Get_error_code()             # <<<<<<<<<<<<<<
 *     except:
 *         ierr = MPI_ERR_OTHER
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyObject_GetAttr(__pyx_v_exc, __pyx_kp_Get_error_code); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_PyInt_int(__pyx_t_3); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
      __pyx_v_ierr = __pyx_t_1;
      /* __pyx_t_1 released */
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
      goto __pyx_L4_exception_handled;
    }

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":72
 *     except Exception, exc:
 *         ierr = exc.Get_error_code()
 *     except:             # <<<<<<<<<<<<<<
 *         ierr = MPI_ERR_OTHER
 *     return ierr
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.greq_cancel");
      if (__Pyx_GetException(&__pyx_1, &__pyx_3, &__pyx_4) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_3);
      __Pyx_GOTREF(__pyx_4);

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":73
 *         ierr = exc.Get_error_code()
 *     except:
 *         ierr = MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
      __pyx_v_ierr = MPI_ERR_OTHER;
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XDECREF(__pyx_save_exc_type);
    __Pyx_XDECREF(__pyx_save_exc_value);
    __Pyx_XDECREF(__pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L10_try_end:;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":74
 *     except:
 *         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_1);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_4);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("mpi4py.MPI.greq_cancel");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_DECREF(__pyx_v_exc);
  __Pyx_FinishRefcountContext();
  PyGILState_Release(_save);
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":78
 * # ---
 * 
 * cdef int greq_query_fn(void *extra_state, MPI_Status *status) nogil:             # <<<<<<<<<<<<<<
 *     if Py_IsInitialized():
 *         if extra_state == NULL: return MPI_ERR_INTERN
 */

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

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":79
 * 
 * cdef int greq_query_fn(void *extra_state, MPI_Status *status) nogil:
 *     if Py_IsInitialized():             # <<<<<<<<<<<<<<
 *         if extra_state == NULL: return MPI_ERR_INTERN
 *         return greq_query(extra_state, status)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = Py_IsInitialized();
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":80
 * cdef int greq_query_fn(void *extra_state, MPI_Status *status) nogil:
 *     if Py_IsInitialized():
 *         if extra_state == NULL: return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *         return greq_query(extra_state, status)
 *     if status != MPI_STATUS_IGNORE: # just in case ...
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = (__pyx_v_extra_state == NULL);
    if (__pyx_t_2) {
      /* __pyx_t_2 released */
      __pyx_r = MPI_ERR_INTERN;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":81
 *     if Py_IsInitialized():
 *         if extra_state == NULL: return MPI_ERR_INTERN
 *         return greq_query(extra_state, status)             # <<<<<<<<<<<<<<
 *     if status != MPI_STATUS_IGNORE: # just in case ...
 *         status.MPI_SOURCE = MPI_ANY_SOURCE
 */
    __pyx_r = __pyx_f_6mpi4py_3MPI_greq_query(__pyx_v_extra_state, __pyx_v_status);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":82
 *         if extra_state == NULL: return MPI_ERR_INTERN
 *         return greq_query(extra_state, status)
 *     if status != MPI_STATUS_IGNORE: # just in case ...             # <<<<<<<<<<<<<<
 *         status.MPI_SOURCE = MPI_ANY_SOURCE
 *         status.MPI_TAG    = MPI_ANY_TAG
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (__pyx_v_status != MPI_STATUS_IGNORE);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":83
 *         return greq_query(extra_state, status)
 *     if status != MPI_STATUS_IGNORE: # just in case ...
 *         status.MPI_SOURCE = MPI_ANY_SOURCE             # <<<<<<<<<<<<<<
 *         status.MPI_TAG    = MPI_ANY_TAG
 *         status.MPI_ERROR  = MPI_SUCCESS
 */
    __pyx_v_status->MPI_SOURCE = MPI_ANY_SOURCE;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":84
 *     if status != MPI_STATUS_IGNORE: # just in case ...
 *         status.MPI_SOURCE = MPI_ANY_SOURCE
 *         status.MPI_TAG    = MPI_ANY_TAG             # <<<<<<<<<<<<<<
 *         status.MPI_ERROR  = MPI_SUCCESS
 *         MPI_Status_set_elements(status, MPI_BYTE, 0)
 */
    __pyx_v_status->MPI_TAG = MPI_ANY_TAG;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":85
 *         status.MPI_SOURCE = MPI_ANY_SOURCE
 *         status.MPI_TAG    = MPI_ANY_TAG
 *         status.MPI_ERROR  = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *         MPI_Status_set_elements(status, MPI_BYTE, 0)
 *         MPI_Status_set_cancelled(status, 1)
 */
    __pyx_v_status->MPI_ERROR = MPI_SUCCESS;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":86
 *         status.MPI_TAG    = MPI_ANY_TAG
 *         status.MPI_ERROR  = MPI_SUCCESS
 *         MPI_Status_set_elements(status, MPI_BYTE, 0)             # <<<<<<<<<<<<<<
 *         MPI_Status_set_cancelled(status, 1)
 *     return MPI_SUCCESS # XXX or MPI_ERR_OTHER ?
 */
    MPI_Status_set_elements(__pyx_v_status, MPI_BYTE, 0);

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":87
 *         status.MPI_ERROR  = MPI_SUCCESS
 *         MPI_Status_set_elements(status, MPI_BYTE, 0)
 *         MPI_Status_set_cancelled(status, 1)             # <<<<<<<<<<<<<<
 *     return MPI_SUCCESS # XXX or MPI_ERR_OTHER ?
 * 
 */
    MPI_Status_set_cancelled(__pyx_v_status, 1);
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":88
 *         MPI_Status_set_elements(status, MPI_BYTE, 0)
 *         MPI_Status_set_cancelled(status, 1)
 *     return MPI_SUCCESS # XXX or MPI_ERR_OTHER ?             # <<<<<<<<<<<<<<
 * 
 * cdef int greq_free_fn(void *extra_state) nogil:
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":90
 *     return MPI_SUCCESS # XXX or MPI_ERR_OTHER ?
 * 
 * cdef int greq_free_fn(void *extra_state) nogil:             # <<<<<<<<<<<<<<
 *     if Py_IsInitialized():
 *         if extra_state == NULL: return MPI_ERR_INTERN
 */

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

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":91
 * 
 * cdef int greq_free_fn(void *extra_state) nogil:
 *     if Py_IsInitialized():             # <<<<<<<<<<<<<<
 *         if extra_state == NULL: return MPI_ERR_INTERN
 *         return greq_free(extra_state)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = Py_IsInitialized();
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":92
 * cdef int greq_free_fn(void *extra_state) nogil:
 *     if Py_IsInitialized():
 *         if extra_state == NULL: return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *         return greq_free(extra_state)
 *     return MPI_SUCCESS # XXX or MPI_ERR_OTHER ?
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = (__pyx_v_extra_state == NULL);
    if (__pyx_t_2) {
      /* __pyx_t_2 released */
      __pyx_r = MPI_ERR_INTERN;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":93
 *     if Py_IsInitialized():
 *         if extra_state == NULL: return MPI_ERR_INTERN
 *         return greq_free(extra_state)             # <<<<<<<<<<<<<<
 *     return MPI_SUCCESS # XXX or MPI_ERR_OTHER ?
 * 
 */
    __pyx_r = __pyx_f_6mpi4py_3MPI_greq_free(__pyx_v_extra_state);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":94
 *         if extra_state == NULL: return MPI_ERR_INTERN
 *         return greq_free(extra_state)
 *     return MPI_SUCCESS # XXX or MPI_ERR_OTHER ?             # <<<<<<<<<<<<<<
 * 
 * cdef int greq_cancel_fn(void *extra_state, int completed) nogil:
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":96
 *     return MPI_SUCCESS # XXX or MPI_ERR_OTHER ?
 * 
 * cdef int greq_cancel_fn(void *extra_state, int completed) nogil:             # <<<<<<<<<<<<<<
 *     if Py_IsInitialized():
 *         if extra_state == NULL: return MPI_ERR_INTERN
 */

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

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":97
 * 
 * cdef int greq_cancel_fn(void *extra_state, int completed) nogil:
 *     if Py_IsInitialized():             # <<<<<<<<<<<<<<
 *         if extra_state == NULL: return MPI_ERR_INTERN
 *         return greq_cancel(extra_state, completed)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = Py_IsInitialized();
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":98
 * cdef int greq_cancel_fn(void *extra_state, int completed) nogil:
 *     if Py_IsInitialized():
 *         if extra_state == NULL: return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *         return greq_cancel(extra_state, completed)
 *     return MPI_SUCCESS # XXX or MPI_ERR_OTHER ?
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = (__pyx_v_extra_state == NULL);
    if (__pyx_t_2) {
      /* __pyx_t_2 released */
      __pyx_r = MPI_ERR_INTERN;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":99
 *     if Py_IsInitialized():
 *         if extra_state == NULL: return MPI_ERR_INTERN
 *         return greq_cancel(extra_state, completed)             # <<<<<<<<<<<<<<
 *     return MPI_SUCCESS # XXX or MPI_ERR_OTHER ?
 * 
 */
    __pyx_r = __pyx_f_6mpi4py_3MPI_greq_cancel(__pyx_v_extra_state, __pyx_v_completed);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/reqimpl.pxi":100
 *         if extra_state == NULL: return MPI_ERR_INTERN
 *         return greq_cancel(extra_state, completed)
 *     return MPI_SUCCESS # XXX or MPI_ERR_OTHER ?             # <<<<<<<<<<<<<<
 * 
 * # ---
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":56
 * include "reqimpl.pxi"
 * 
 * cdef inline Request _new_Request(MPI_Request ob):             # <<<<<<<<<<<<<<
 *     cdef Request request = Request()
 *     request.ob_mpi = ob
 */

static INLINE PyMPIRequestObject *__pyx_f_6mpi4py_3MPI__new_Request(MPI_Request __pyx_v_ob) {
  PyMPIRequestObject *__pyx_v_request = 0;
  PyMPIRequestObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_new_Request");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":57
 * 
 * cdef inline Request _new_Request(MPI_Request ob):
 *     cdef Request request = Request()             # <<<<<<<<<<<<<<
 *     request.ob_mpi = ob
 *     return request
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":58
 * cdef inline Request _new_Request(MPI_Request ob):
 *     cdef Request request = Request()
 *     request.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return request
 * 
 */
  __pyx_v_request->ob_mpi = __pyx_v_ob;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":59
 *     cdef Request request = 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 = ((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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":61
 *     return request
 * 
 * cdef inline int _del_Request(MPI_Request* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL             : return 0
 */

static INLINE int __pyx_f_6mpi4py_3MPI__del_Request(MPI_Request *__pyx_v_ob) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("_del_Request");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":63
 * 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 allocated */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":64
 *     #
 *     if ob    == NULL             : return 0
 *     if ob[0] == MPI_REQUEST_NULL : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()          : return 0
 *     #
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_REQUEST_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":65
 *     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 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":67
 *     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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":1
 * 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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("_op_MAX");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":3
 * 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_t_1 allocated */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_x);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_x);
  __Pyx_GIVEREF(__pyx_v_x);
  __Pyx_INCREF(__pyx_v_y);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_y);
  __Pyx_GIVEREF(__pyx_v_y);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 3; __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 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_MAX");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":5
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("_op_MIN");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":7
 * 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_t_1 allocated */
  __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_x);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_x);
  __Pyx_GIVEREF(__pyx_v_x);
  __Pyx_INCREF(__pyx_v_y);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_y);
  __Pyx_GIVEREF(__pyx_v_y);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 7; __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 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_MIN");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":9
 *     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;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_op_SUM");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":11
 * 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 allocated */
  __pyx_t_1 = PyNumber_Add(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":13
 *     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;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_op_PROD");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":15
 * 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 allocated */
  __pyx_t_1 = PyNumber_Multiply(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":17
 *     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;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_op_BAND");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":19
 * 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 allocated */
  __pyx_t_1 = PyNumber_And(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":21
 *     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;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_op_BOR");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":23
 * 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 allocated */
  __pyx_t_1 = PyNumber_Or(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":25
 *     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;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_op_BXOR");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":27
 * 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 allocated */
  __pyx_t_1 = PyNumber_Xor(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":29
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("_op_LAND");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":31
 * 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 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_x);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_x);
  __Pyx_GIVEREF(__pyx_v_x);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyBool_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_y);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_y);
  __Pyx_GIVEREF(__pyx_v_y);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyBool_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyNumber_And(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_3 released */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_LAND");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":33
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("_op_LOR");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":35
 * 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 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_x);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_x);
  __Pyx_GIVEREF(__pyx_v_x);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyBool_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 35; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_y);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_y);
  __Pyx_GIVEREF(__pyx_v_y);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyBool_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyNumber_Or(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_3 released */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_LOR");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":37
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("_op_LXOR");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":39
 * 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 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_x);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_x);
  __Pyx_GIVEREF(__pyx_v_x);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyBool_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 39; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_y);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_y);
  __Pyx_GIVEREF(__pyx_v_y);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyBool_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyNumber_Xor(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_3 released */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_LXOR");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":41
 *     return bool(x) ^ bool(y)
 * 
 * cdef object _op_MAXLOC(object x, object y):             # <<<<<<<<<<<<<<
 *     """maximum and location"""
 *     u, i = x
 */

static  PyObject *__pyx_f_6mpi4py_3MPI__op_MAXLOC(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_v_u;
  PyObject *__pyx_v_i;
  PyObject *__pyx_v_v;
  PyObject *__pyx_v_j;
  PyObject *__pyx_v_w;
  PyObject *__pyx_v_k;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("_op_MAXLOC");
  __pyx_v_u = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_v = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_j = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_w = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_k = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":43
 * cdef object _op_MAXLOC(object x, object y):
 *     """maximum and location"""
 *     u, i = x             # <<<<<<<<<<<<<<
 *     v, j = y
 *     w = max(u, v)
 */
  if (PyTuple_CheckExact(__pyx_v_x) && PyTuple_GET_SIZE(__pyx_v_x) == 2) {
    PyObject* tuple = __pyx_v_x;
    __pyx_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_2);
    __pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
    __Pyx_DECREF(__pyx_v_u);
    __pyx_v_u = __pyx_2;
    __pyx_2 = 0;
    __Pyx_DECREF(__pyx_v_i);
    __pyx_v_i = __pyx_3;
    __pyx_3 = 0;
  } else {
    __pyx_1 = PyObject_GetIter(__pyx_v_x); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_2);
    __pyx_3 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_3);
    if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_DECREF(__pyx_v_u);
    __pyx_v_u = __pyx_2;
    __pyx_2 = 0;
    __Pyx_DECREF(__pyx_v_i);
    __pyx_v_i = __pyx_3;
    __pyx_3 = 0;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":44
 *     """maximum and location"""
 *     u, i = x
 *     v, j = y             # <<<<<<<<<<<<<<
 *     w = max(u, v)
 *     k = None
 */
  if (PyTuple_CheckExact(__pyx_v_y) && PyTuple_GET_SIZE(__pyx_v_y) == 2) {
    PyObject* tuple = __pyx_v_y;
    __pyx_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_2);
    __pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
    __Pyx_DECREF(__pyx_v_v);
    __pyx_v_v = __pyx_2;
    __pyx_2 = 0;
    __Pyx_DECREF(__pyx_v_j);
    __pyx_v_j = __pyx_3;
    __pyx_3 = 0;
  } else {
    __pyx_1 = PyObject_GetIter(__pyx_v_y); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_2);
    __pyx_3 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_3);
    if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_DECREF(__pyx_v_v);
    __pyx_v_v = __pyx_2;
    __pyx_2 = 0;
    __Pyx_DECREF(__pyx_v_j);
    __pyx_v_j = __pyx_3;
    __pyx_3 = 0;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":45
 *     u, i = x
 *     v, j = y
 *     w = max(u, v)             # <<<<<<<<<<<<<<
 *     k = None
 *     if u == v:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_u);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_u);
  __Pyx_GIVEREF(__pyx_v_u);
  __Pyx_INCREF(__pyx_v_v);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_v);
  __Pyx_GIVEREF(__pyx_v_v);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_builtin_max, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 45; __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 released */
  __Pyx_DECREF(__pyx_v_w);
  __pyx_v_w = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":46
 *     v, j = y
 *     w = max(u, v)
 *     k = None             # <<<<<<<<<<<<<<
 *     if u == v:
 *         k = min(i, j)
 */
  __Pyx_INCREF(Py_None);
  __Pyx_DECREF(__pyx_v_k);
  __pyx_v_k = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":47
 *     w = max(u, v)
 *     k = None
 *     if u == v:             # <<<<<<<<<<<<<<
 *         k = min(i, j)
 *     elif u <  v:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_u, __pyx_v_v, Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (__pyx_t_3) {
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":48
 *     k = None
 *     if u == v:
 *         k = min(i, j)             # <<<<<<<<<<<<<<
 *     elif u <  v:
 *         k = j
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(__pyx_v_i);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i);
    __Pyx_GIVEREF(__pyx_v_i);
    __Pyx_INCREF(__pyx_v_j);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_j);
    __Pyx_GIVEREF(__pyx_v_j);
    /* __pyx_t_1 allocated */
    __pyx_t_1 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    __Pyx_DECREF(__pyx_v_k);
    __pyx_v_k = __pyx_t_1;
    __pyx_t_1 = 0;
    /* __pyx_t_1 released */
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":49
 *     if u == v:
 *         k = min(i, j)
 *     elif u <  v:             # <<<<<<<<<<<<<<
 *         k = j
 *     else:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_u, __pyx_v_v, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  if (__pyx_t_3) {
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":50
 *         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_L3;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":52
 *         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_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":53
 *     else:
 *         k = i
 *     return (w, k)             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_MINLOC(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_w);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_w);
  __Pyx_GIVEREF(__pyx_v_w);
  __Pyx_INCREF(__pyx_v_k);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_k);
  __Pyx_GIVEREF(__pyx_v_k);
  __pyx_r = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._op_MAXLOC");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_u);
  __Pyx_DECREF(__pyx_v_i);
  __Pyx_DECREF(__pyx_v_v);
  __Pyx_DECREF(__pyx_v_j);
  __Pyx_DECREF(__pyx_v_w);
  __Pyx_DECREF(__pyx_v_k);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":55
 *     return (w, k)
 * 
 * cdef object _op_MINLOC(object x, object y):             # <<<<<<<<<<<<<<
 *     """minimum and location"""
 *     u, i = x
 */

static  PyObject *__pyx_f_6mpi4py_3MPI__op_MINLOC(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_v_u;
  PyObject *__pyx_v_i;
  PyObject *__pyx_v_v;
  PyObject *__pyx_v_j;
  PyObject *__pyx_v_w;
  PyObject *__pyx_v_k;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("_op_MINLOC");
  __pyx_v_u = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_v = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_j = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_w = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_k = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":57
 * cdef object _op_MINLOC(object x, object y):
 *     """minimum and location"""
 *     u, i = x             # <<<<<<<<<<<<<<
 *     v, j = y
 *     w = min(u, v)
 */
  if (PyTuple_CheckExact(__pyx_v_x) && PyTuple_GET_SIZE(__pyx_v_x) == 2) {
    PyObject* tuple = __pyx_v_x;
    __pyx_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_2);
    __pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
    __Pyx_DECREF(__pyx_v_u);
    __pyx_v_u = __pyx_2;
    __pyx_2 = 0;
    __Pyx_DECREF(__pyx_v_i);
    __pyx_v_i = __pyx_3;
    __pyx_3 = 0;
  } else {
    __pyx_1 = PyObject_GetIter(__pyx_v_x); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_2);
    __pyx_3 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_3);
    if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_DECREF(__pyx_v_u);
    __pyx_v_u = __pyx_2;
    __pyx_2 = 0;
    __Pyx_DECREF(__pyx_v_i);
    __pyx_v_i = __pyx_3;
    __pyx_3 = 0;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":58
 *     """minimum and location"""
 *     u, i = x
 *     v, j = y             # <<<<<<<<<<<<<<
 *     w = min(u, v)
 *     k = None
 */
  if (PyTuple_CheckExact(__pyx_v_y) && PyTuple_GET_SIZE(__pyx_v_y) == 2) {
    PyObject* tuple = __pyx_v_y;
    __pyx_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_2);
    __pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
    __Pyx_DECREF(__pyx_v_v);
    __pyx_v_v = __pyx_2;
    __pyx_2 = 0;
    __Pyx_DECREF(__pyx_v_j);
    __pyx_v_j = __pyx_3;
    __pyx_3 = 0;
  } else {
    __pyx_1 = PyObject_GetIter(__pyx_v_y); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_2);
    __pyx_3 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_3);
    if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_DECREF(__pyx_v_v);
    __pyx_v_v = __pyx_2;
    __pyx_2 = 0;
    __Pyx_DECREF(__pyx_v_j);
    __pyx_v_j = __pyx_3;
    __pyx_3 = 0;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":59
 *     u, i = x
 *     v, j = y
 *     w = min(u, v)             # <<<<<<<<<<<<<<
 *     k = None
 *     if u == v:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_u);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_u);
  __Pyx_GIVEREF(__pyx_v_u);
  __Pyx_INCREF(__pyx_v_v);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_v);
  __Pyx_GIVEREF(__pyx_v_v);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __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 released */
  __Pyx_DECREF(__pyx_v_w);
  __pyx_v_w = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":60
 *     v, j = y
 *     w = min(u, v)
 *     k = None             # <<<<<<<<<<<<<<
 *     if u == v:
 *         k = min(i, j)
 */
  __Pyx_INCREF(Py_None);
  __Pyx_DECREF(__pyx_v_k);
  __pyx_v_k = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":61
 *     w = min(u, v)
 *     k = None
 *     if u == v:             # <<<<<<<<<<<<<<
 *         k = min(i, j)
 *     elif u <  v:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_u, __pyx_v_v, Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (__pyx_t_3) {
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":62
 *     k = None
 *     if u == v:
 *         k = min(i, j)             # <<<<<<<<<<<<<<
 *     elif u <  v:
 *         k = i
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(__pyx_v_i);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i);
    __Pyx_GIVEREF(__pyx_v_i);
    __Pyx_INCREF(__pyx_v_j);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_j);
    __Pyx_GIVEREF(__pyx_v_j);
    /* __pyx_t_1 allocated */
    __pyx_t_1 = PyObject_Call(__pyx_builtin_min, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    __Pyx_DECREF(__pyx_v_k);
    __pyx_v_k = __pyx_t_1;
    __pyx_t_1 = 0;
    /* __pyx_t_1 released */
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":63
 *     if u == v:
 *         k = min(i, j)
 *     elif u <  v:             # <<<<<<<<<<<<<<
 *         k = i
 *     else:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_u, __pyx_v_v, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  if (__pyx_t_3) {
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":64
 *         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_L3;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":66
 *         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_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":67
 *     else:
 *         k = j
 *     return (w, k)             # <<<<<<<<<<<<<<
 * 
 * cdef object _op_REPLACE(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_w);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_w);
  __Pyx_GIVEREF(__pyx_v_w);
  __Pyx_INCREF(__pyx_v_k);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_k);
  __Pyx_GIVEREF(__pyx_v_k);
  __pyx_r = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._op_MINLOC");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_u);
  __Pyx_DECREF(__pyx_v_i);
  __Pyx_DECREF(__pyx_v_v);
  __Pyx_DECREF(__pyx_v_j);
  __Pyx_DECREF(__pyx_v_w);
  __Pyx_DECREF(__pyx_v_k);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":69
 *     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_SetupRefcountContext("_op_REPLACE");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/opimpl.pxi":71
 * 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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":74
 * include "opimpl.pxi"
 * 
 * cdef inline Op _new_Op(MPI_Op ob):             # <<<<<<<<<<<<<<
 *     cdef Op op = Op()
 *     op.ob_mpi = ob
 */

static INLINE PyMPIOpObject *__pyx_f_6mpi4py_3MPI__new_Op(MPI_Op __pyx_v_ob) {
  PyMPIOpObject *__pyx_v_op = 0;
  PyMPIOpObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("_new_Op");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":75
 * 
 * cdef inline Op _new_Op(MPI_Op ob):
 *     cdef Op op = Op()             # <<<<<<<<<<<<<<
 *     op.ob_mpi = ob
 *     if   ob == MPI_OP_NULL : op.ob_func = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Op)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Op))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_op = ((PyMPIOpObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":76
 * cdef inline Op _new_Op(MPI_Op ob):
 *     cdef Op op = 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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":77
 *     cdef Op op = 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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_OP_NULL);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = NULL;
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":78
 *     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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_MAX);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_MAX;
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":79
 *     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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_MIN);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_MIN;
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":80
 *     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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_SUM);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_SUM;
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":81
 *     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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_PROD);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_PROD;
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":82
 *     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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_LAND);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_LAND;
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":83
 *     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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_BAND);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_BAND;
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":84
 *     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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_LOR);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_LOR;
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":85
 *     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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_BOR);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_BOR;
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":86
 *     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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_LXOR);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_LXOR;
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":87
 *     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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_BXOR);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_BXOR;
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":88
 *     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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_MAXLOC);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_MAXLOC;
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":89
 *     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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_MINLOC);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_MINLOC;
    goto __pyx_L3;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":90
 *     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 allocated */
  __pyx_t_2 = (__pyx_v_ob == MPI_REPLACE);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_op->ob_func = __pyx_f_6mpi4py_3MPI__op_REPLACE;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":91
 *     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 = ((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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_op);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":93
 *     return op
 * 
 * cdef inline int _del_Op(MPI_Op* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL        : return 0
 */

static INLINE int __pyx_f_6mpi4py_3MPI__del_Op(MPI_Op *__pyx_v_ob) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("_del_Op");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":95
 * 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 allocated */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":96
 *     #
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_OP_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":97
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_MAX);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":98
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_MIN);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":99
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_SUM);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":100
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_PROD);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":101
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_LAND);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":102
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_BAND);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":103
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_LOR);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":104
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_BOR);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L12;
  }
  __pyx_L12:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":105
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_LXOR);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":106
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_BXOR);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L14;
  }
  __pyx_L14:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":107
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_MAXLOC);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":108
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_MINLOC);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":109
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_REPLACE);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L17;
  }
  __pyx_L17:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":110
 *     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 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L18;
  }
  __pyx_L18:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":112
 *     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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":117
 * # Info
 * 
 * cdef inline Info _new_Info(MPI_Info ob):             # <<<<<<<<<<<<<<
 *     cdef Info info = Info()
 *     info.ob_mpi = ob
 */

static INLINE PyMPIInfoObject *__pyx_f_6mpi4py_3MPI__new_Info(MPI_Info __pyx_v_ob) {
  PyMPIInfoObject *__pyx_v_info = 0;
  PyMPIInfoObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_new_Info");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":118
 * 
 * cdef inline Info _new_Info(MPI_Info ob):
 *     cdef Info info = Info()             # <<<<<<<<<<<<<<
 *     info.ob_mpi = ob
 *     return info
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Info)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_info = ((PyMPIInfoObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":119
 * cdef inline Info _new_Info(MPI_Info ob):
 *     cdef Info info = Info()
 *     info.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return info
 * 
 */
  __pyx_v_info->ob_mpi = __pyx_v_ob;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":120
 *     cdef Info info = 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 = ((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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":122
 *     return info
 * 
 * cdef inline int _del_Info(MPI_Info* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL          : return 0
 */

static INLINE int __pyx_f_6mpi4py_3MPI__del_Info(MPI_Info *__pyx_v_ob) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("_del_Info");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":124
 * 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 allocated */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":125
 *     #
 *     if ob    == NULL          : return 0
 *     if ob[0] == MPI_INFO_NULL : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()       : return 0
 *     #
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_INFO_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":126
 *     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 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":128
 *     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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":130
 *     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 INLINE MPI_Info __pyx_f_6mpi4py_3MPI__arg_Info(PyObject *__pyx_v_info) {
  MPI_Info __pyx_r;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("_arg_Info");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":131
 * 
 * cdef inline MPI_Info _arg_Info(object info):
 *     if info is None: return MPI_INFO_NULL             # <<<<<<<<<<<<<<
 *     return (<Info>info).ob_mpi
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_info == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = MPI_INFO_NULL;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":132
 * cdef inline MPI_Info _arg_Info(object info):
 *     if info is None: return MPI_INFO_NULL
 *     return (<Info>info).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * #---------------------------------------------------------------------
 */
  __pyx_r = ((PyMPIInfoObject *)__pyx_v_info)->ob_mpi;
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":137
 * # Group
 * 
 * cdef inline Group _new_Group(MPI_Group ob):             # <<<<<<<<<<<<<<
 *     cdef Group group = Group()
 *     group.ob_mpi = ob
 */

static INLINE PyMPIGroupObject *__pyx_f_6mpi4py_3MPI__new_Group(MPI_Group __pyx_v_ob) {
  PyMPIGroupObject *__pyx_v_group = 0;
  PyMPIGroupObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_new_Group");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":138
 * 
 * cdef inline Group _new_Group(MPI_Group ob):
 *     cdef Group group = Group()             # <<<<<<<<<<<<<<
 *     group.ob_mpi = ob
 *     return group
 */
  /* __pyx_t_1 allocated */
  __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[14]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":139
 * cdef inline Group _new_Group(MPI_Group ob):
 *     cdef Group group = Group()
 *     group.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return group
 * 
 */
  __pyx_v_group->ob_mpi = __pyx_v_ob;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":140
 *     cdef Group group = 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 = ((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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":143
 * 
 * 
 * cdef inline int _del_Group(MPI_Group* ob):             # <<<<<<<<<<<<<<
 *      #
 *      if ob    == NULL            : return 0
 */

static INLINE int __pyx_f_6mpi4py_3MPI__del_Group(MPI_Group *__pyx_v_ob) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("_del_Group");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":145
 * 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 allocated */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":146
 *      #
 *      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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_GROUP_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":147
 *      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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_GROUP_EMPTY);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":148
 *      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 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":150
 *      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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":155
 * # Comm
 * 
 * cdef inline Comm _new_Comm(MPI_Comm ob):             # <<<<<<<<<<<<<<
 *     cdef Comm comm = Comm()
 *     comm.ob_mpi = ob
 */

static INLINE PyMPICommObject *__pyx_f_6mpi4py_3MPI__new_Comm(MPI_Comm __pyx_v_ob) {
  PyMPICommObject *__pyx_v_comm = 0;
  PyMPICommObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_new_Comm");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":156
 * 
 * cdef inline Comm _new_Comm(MPI_Comm ob):
 *     cdef Comm comm = Comm()             # <<<<<<<<<<<<<<
 *     comm.ob_mpi = ob
 *     return comm
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Comm)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPICommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":157
 * cdef inline Comm _new_Comm(MPI_Comm ob):
 *     cdef Comm comm = Comm()
 *     comm.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return comm
 * 
 */
  __pyx_v_comm->ob_mpi = __pyx_v_ob;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":158
 *     cdef Comm comm = 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 = ((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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":160
 *     return comm
 * 
 * cdef inline Intracomm _new_Intracomm(MPI_Comm ob):             # <<<<<<<<<<<<<<
 *     cdef Intracomm comm = Intracomm()
 *     comm.ob_mpi = ob
 */

static INLINE PyMPIIntracommObject *__pyx_f_6mpi4py_3MPI__new_Intracomm(MPI_Comm __pyx_v_ob) {
  PyMPIIntracommObject *__pyx_v_comm = 0;
  PyMPIIntracommObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_new_Intracomm");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":161
 * 
 * cdef inline Intracomm _new_Intracomm(MPI_Comm ob):
 *     cdef Intracomm comm = Intracomm()             # <<<<<<<<<<<<<<
 *     comm.ob_mpi = ob
 *     return comm
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intracomm)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intracomm))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntracommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":162
 * cdef inline Intracomm _new_Intracomm(MPI_Comm ob):
 *     cdef Intracomm comm = Intracomm()
 *     comm.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return comm
 * 
 */
  __pyx_v_comm->__pyx_base.ob_mpi = __pyx_v_ob;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":163
 *     cdef Intracomm comm = 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 = ((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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":165
 *     return comm
 * 
 * cdef inline Intercomm _new_Intercomm(MPI_Comm ob):             # <<<<<<<<<<<<<<
 *     cdef Intercomm comm = Intercomm()
 *     comm.ob_mpi = ob
 */

static INLINE PyMPIIntercommObject *__pyx_f_6mpi4py_3MPI__new_Intercomm(MPI_Comm __pyx_v_ob) {
  PyMPIIntercommObject *__pyx_v_comm = 0;
  PyMPIIntercommObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_new_Intercomm");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":166
 * 
 * cdef inline Intercomm _new_Intercomm(MPI_Comm ob):
 *     cdef Intercomm comm = Intercomm()             # <<<<<<<<<<<<<<
 *     comm.ob_mpi = ob
 *     return comm
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intercomm))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntercommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":167
 * cdef inline Intercomm _new_Intercomm(MPI_Comm ob):
 *     cdef Intercomm comm = Intercomm()
 *     comm.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return comm
 * 
 */
  __pyx_v_comm->__pyx_base.ob_mpi = __pyx_v_ob;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":168
 *     cdef Intercomm comm = 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 = ((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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":170
 *     return comm
 * 
 * cdef inline int _del_Comm(MPI_Comm* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL           : return 0
 */

static INLINE int __pyx_f_6mpi4py_3MPI__del_Comm(MPI_Comm *__pyx_v_ob) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("_del_Comm");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":172
 * 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 allocated */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":173
 *     #
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_COMM_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":174
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_COMM_SELF);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":175
 *     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 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_COMM_WORLD);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":176
 *     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 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":178
 *     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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":1
 * cdef void win_memory_pydecref(void *ob) with gil:             # <<<<<<<<<<<<<<
 *     Py_DECREF(<object>ob)
 * 
 */

static  void __pyx_f_6mpi4py_3MPI_win_memory_pydecref(void *__pyx_v_ob) {
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_SetupRefcountContext("win_memory_pydecref");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":2
 * cdef void win_memory_pydecref(void *ob) with gil:
 *     Py_DECREF(<object>ob)             # <<<<<<<<<<<<<<
 * 
 * cdef int PyMPI_Win_memory_del(MPI_Win w, int k, void *v, void *xs) nogil:
 */
  Py_DECREF(((PyObject *)__pyx_v_ob)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("mpi4py.MPI.win_memory_pydecref");
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  PyGILState_Release(_save);
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":4
 *     Py_DECREF(<object>ob)
 * 
 * cdef int PyMPI_Win_memory_del(MPI_Win w, int k, void *v, void *xs) nogil:             # <<<<<<<<<<<<<<
 *     if  v != NULL:
 *         if Py_IsInitialized():
 */

static  int __pyx_f_6mpi4py_3MPI_PyMPI_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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":5
 * 
 * cdef int PyMPI_Win_memory_del(MPI_Win w, int k, void *v, void *xs) nogil:
 *     if  v != NULL:             # <<<<<<<<<<<<<<
 *         if Py_IsInitialized():
 *             win_memory_pydecref(v)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_v != NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":6
 * cdef int PyMPI_Win_memory_del(MPI_Win w, int k, void *v, void *xs) nogil:
 *     if  v != NULL:
 *         if Py_IsInitialized():             # <<<<<<<<<<<<<<
 *             win_memory_pydecref(v)
 *     return 0
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = Py_IsInitialized();
    if (__pyx_t_2) {
      /* __pyx_t_2 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":7
 *     if  v != NULL:
 *         if Py_IsInitialized():
 *             win_memory_pydecref(v)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
      __pyx_f_6mpi4py_3MPI_win_memory_pydecref(__pyx_v_v);
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":8
 *         if Py_IsInitialized():
 *             win_memory_pydecref(v)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int PyMPI_Win_set_attr_memory(MPI_Win win, object memory) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":10
 *     return 0
 * 
 * cdef int PyMPI_Win_set_attr_memory(MPI_Win win, object memory) except -1:             # <<<<<<<<<<<<<<
 *     if memory is None: return 0
 *     # create keyval for memory object
 */

static  int __pyx_f_6mpi4py_3MPI_PyMPI_Win_set_attr_memory(MPI_Win __pyx_v_win, PyObject *__pyx_v_memory) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("PyMPI_Win_set_attr_memory");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":11
 * 
 * cdef int PyMPI_Win_set_attr_memory(MPI_Win win, object memory) except -1:
 *     if memory is None: return 0             # <<<<<<<<<<<<<<
 *     # create keyval for memory object
 *     global PyMPI_KEYVAL_WIN_MEMORY
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_memory == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":14
 *     # create keyval for memory object
 *     global PyMPI_KEYVAL_WIN_MEMORY
 *     if PyMPI_KEYVAL_WIN_MEMORY == MPI_KEYVAL_INVALID:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_create_keyval(MPI_WIN_NULL_COPY_FN,
 *                                       PyMPI_Win_memory_del,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_PyMPI_KEYVAL_WIN_MEMORY == MPI_KEYVAL_INVALID);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":17
 *         CHKERR( MPI_Win_create_keyval(MPI_WIN_NULL_COPY_FN,
 *                                       PyMPI_Win_memory_del,
 *                                       &PyMPI_KEYVAL_WIN_MEMORY, NULL) )             # <<<<<<<<<<<<<<
 *     # hold a reference to the object exposing windows memory
 *     CHKERR( MPI_Win_set_attr(win, PyMPI_KEYVAL_WIN_MEMORY, <void*>memory) )
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_create_keyval(MPI_WIN_NULL_COPY_FN, __pyx_f_6mpi4py_3MPI_PyMPI_Win_memory_del, (&__pyx_v_6mpi4py_3MPI_PyMPI_KEYVAL_WIN_MEMORY), NULL)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":19
 *                                       &PyMPI_KEYVAL_WIN_MEMORY, NULL) )
 *     # hold a reference to the object exposing windows memory
 *     CHKERR( MPI_Win_set_attr(win, PyMPI_KEYVAL_WIN_MEMORY, <void*>memory) )             # <<<<<<<<<<<<<<
 *     Py_INCREF(memory)
 *     return 0
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_attr(__pyx_v_win, __pyx_v_6mpi4py_3MPI_PyMPI_KEYVAL_WIN_MEMORY, ((void *)__pyx_v_memory))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":20
 *     # hold a reference to the object exposing windows memory
 *     CHKERR( MPI_Win_set_attr(win, PyMPI_KEYVAL_WIN_MEMORY, <void*>memory) )
 *     Py_INCREF(memory)             # <<<<<<<<<<<<<<
 *     return 0
 */
  Py_INCREF(__pyx_v_memory); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/winimpl.pxi":21
 *     CHKERR( MPI_Win_set_attr(win, PyMPI_KEYVAL_WIN_MEMORY, <void*>memory) )
 *     Py_INCREF(memory)
 *     return 0             # <<<<<<<<<<<<<<
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_Win_set_attr_memory");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":185
 * include "winimpl.pxi"
 * 
 * cdef inline Win _new_Win(MPI_Win ob):             # <<<<<<<<<<<<<<
 *     cdef Win win = Win()
 *     win.ob_mpi = ob
 */

static INLINE PyMPIWinObject *__pyx_f_6mpi4py_3MPI__new_Win(MPI_Win __pyx_v_ob) {
  PyMPIWinObject *__pyx_v_win = 0;
  PyMPIWinObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_new_Win");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":186
 * 
 * cdef inline Win _new_Win(MPI_Win ob):
 *     cdef Win win = Win()             # <<<<<<<<<<<<<<
 *     win.ob_mpi = ob
 *     return win
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Win)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Win))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_win = ((PyMPIWinObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":187
 * cdef inline Win _new_Win(MPI_Win ob):
 *     cdef Win win = Win()
 *     win.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return win
 * 
 */
  __pyx_v_win->ob_mpi = __pyx_v_ob;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":188
 *     cdef Win win = 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 = ((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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_win);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":190
 *     return win
 * 
 * cdef inline int _del_Win(MPI_Win* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL         : return 0
 */

static INLINE int __pyx_f_6mpi4py_3MPI__del_Win(MPI_Win *__pyx_v_ob) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("_del_Win");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":192
 * 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 allocated */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":193
 *     #
 *     if ob    == NULL         : return 0
 *     if ob[0] == MPI_WIN_NULL : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()      : return 0
 *     #
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_WIN_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":194
 *     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 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":196
 *     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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":201
 * # File
 * 
 * cdef inline File _new_File(MPI_File ob):             # <<<<<<<<<<<<<<
 *     cdef File file = File()
 *     file.ob_mpi = ob
 */

static INLINE PyMPIFileObject *__pyx_f_6mpi4py_3MPI__new_File(MPI_File __pyx_v_ob) {
  PyMPIFileObject *__pyx_v_file = 0;
  PyMPIFileObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_new_File");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":202
 * 
 * cdef inline File _new_File(MPI_File ob):
 *     cdef File file = File()             # <<<<<<<<<<<<<<
 *     file.ob_mpi = ob
 *     return file
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_File)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_File))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_file = ((PyMPIFileObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":203
 * cdef inline File _new_File(MPI_File ob):
 *     cdef File file = File()
 *     file.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return file
 * 
 */
  __pyx_v_file->ob_mpi = __pyx_v_ob;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":204
 *     cdef File file = 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 = ((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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_file);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":206
 *     return file
 * 
 * cdef inline int _del_File(MPI_File* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL          : return 0
 */

static INLINE int __pyx_f_6mpi4py_3MPI__del_File(MPI_File *__pyx_v_ob) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("_del_File");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":208
 * 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 allocated */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":209
 *     #
 *     if ob    == NULL          : return 0
 *     if ob[0] == MPI_FILE_NULL : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()       : return 0
 *     #
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_FILE_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":210
 *     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 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":212
 *     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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":217
 * # Errhandler
 * 
 * cdef inline Errhandler _new_Errhandler(MPI_Errhandler ob):             # <<<<<<<<<<<<<<
 *     cdef Errhandler errhandler = Errhandler()
 *     errhandler.ob_mpi = ob
 */

static INLINE PyMPIErrhandlerObject *__pyx_f_6mpi4py_3MPI__new_Errhandler(MPI_Errhandler __pyx_v_ob) {
  PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyMPIErrhandlerObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("_new_Errhandler");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":218
 * 
 * cdef inline Errhandler _new_Errhandler(MPI_Errhandler ob):
 *     cdef Errhandler errhandler = Errhandler()             # <<<<<<<<<<<<<<
 *     errhandler.ob_mpi = ob
 *     return errhandler
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Errhandler))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_errhandler = ((PyMPIErrhandlerObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":219
 * cdef inline Errhandler _new_Errhandler(MPI_Errhandler ob):
 *     cdef Errhandler errhandler = Errhandler()
 *     errhandler.ob_mpi = ob             # <<<<<<<<<<<<<<
 *     return errhandler
 * 
 */
  __pyx_v_errhandler->ob_mpi = __pyx_v_ob;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":220
 *     cdef Errhandler errhandler = 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 = ((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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":222
 *     return errhandler
 * 
 * cdef inline int _del_Errhandler(MPI_Errhandler* ob):             # <<<<<<<<<<<<<<
 *     #
 *     if ob    == NULL                : return 0
 */

static INLINE int __pyx_f_6mpi4py_3MPI__del_Errhandler(MPI_Errhandler *__pyx_v_ob) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("_del_Errhandler");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":224
 * 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 allocated */
  __pyx_t_1 = (__pyx_v_ob == NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":225
 *     #
 *     if ob    == NULL                : return 0
 *     if ob[0] == MPI_ERRHANDLER_NULL : return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active()             : return 0
 *     #
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((__pyx_v_ob[0]) == MPI_ERRHANDLER_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":226
 *     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 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/helpers.pxi":228
 *     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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":11
 * cdef object __IN_PLACE__ = <MPI_Aint>MPI_IN_PLACE
 * 
 * cdef inline int is_BOTTOM(object msg):             # <<<<<<<<<<<<<<
 *     return (msg is None or msg is __BOTTOM__)
 * 
 */

static INLINE int __pyx_f_6mpi4py_3MPI_is_BOTTOM(PyObject *__pyx_v_msg) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("is_BOTTOM");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":12
 * 
 * cdef inline int is_BOTTOM(object msg):
 *     return (msg is None or msg is __BOTTOM__)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int is_IN_PLACE(object msg):
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_msg == Py_None);
  if (!__pyx_t_1) {
    /* __pyx_t_2 allocated */
    __pyx_t_2 = (__pyx_v_msg == __pyx_v_6mpi4py_3MPI___BOTTOM__);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_t_2;
    /* __pyx_t_2 released */
  } else {
    __pyx_t_3 = __pyx_t_1;
    /* __pyx_t_1 released */
  }
  __pyx_r = __pyx_t_3;
  /* __pyx_t_3 released */
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":14
 *     return (msg is None or msg is __BOTTOM__)
 * 
 * cdef inline int is_IN_PLACE(object msg):             # <<<<<<<<<<<<<<
 *     return (msg is None or msg is __IN_PLACE__)
 * 
 */

static INLINE int __pyx_f_6mpi4py_3MPI_is_IN_PLACE(PyObject *__pyx_v_msg) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("is_IN_PLACE");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":15
 * 
 * cdef inline int is_IN_PLACE(object msg):
 *     return (msg is None or msg is __IN_PLACE__)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object message_simple(int readonly,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_msg == Py_None);
  if (!__pyx_t_1) {
    /* __pyx_t_2 allocated */
    __pyx_t_2 = (__pyx_v_msg == __pyx_v_6mpi4py_3MPI___IN_PLACE__);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_t_2;
    /* __pyx_t_2 released */
  } else {
    __pyx_t_3 = __pyx_t_1;
    /* __pyx_t_1 released */
  }
  __pyx_r = __pyx_t_3;
  /* __pyx_t_3 released */
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":17
 *     return (msg is None or msg is __IN_PLACE__)
 * 
 * cdef inline object message_simple(int readonly,             # <<<<<<<<<<<<<<
 *                                   object msg,
 *                                   int rank, int size,
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_message_simple(int __pyx_v_readonly, PyObject *__pyx_v_msg, int __pyx_v_rank, int __pyx_v_size, void **__pyx_v__buf, int *__pyx_v__count, MPI_Datatype *__pyx_v__dtype) {
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_v_obuf;
  PyObject *__pyx_v_ocount;
  PyObject *__pyx_v_odtype;
  void *__pyx_v_bptr;
  MPI_Aint __pyx_v_blen;
  MPI_Datatype __pyx_v_dtype;
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_ex;
  int __pyx_v_count;
  MPI_Aint __pyx_v_nitems;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __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;
  __Pyx_SetupRefcountContext("message_simple");
  __pyx_v_obuf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ocount = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_odtype = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":24
 *                                   MPI_Datatype *_dtype):
 *     # special case
 *     if rank == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         if msg is None:
 *             _buf[0]   = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_rank == MPI_PROC_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":25
 *     # special case
 *     if rank == MPI_PROC_NULL:
 *         if msg is None:             # <<<<<<<<<<<<<<
 *             _buf[0]   = NULL
 *             _count[0] = 0
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = (__pyx_v_msg == Py_None);
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":26
 *     if rank == MPI_PROC_NULL:
 *         if msg is None:
 *             _buf[0]   = NULL             # <<<<<<<<<<<<<<
 *             _count[0] = 0
 *             _dtype[0] = MPI_BYTE # XXX explain
 */
      (__pyx_v__buf[0]) = NULL;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":27
 *         if msg is None:
 *             _buf[0]   = NULL
 *             _count[0] = 0             # <<<<<<<<<<<<<<
 *             _dtype[0] = MPI_BYTE # XXX explain
 *             return None
 */
      (__pyx_v__count[0]) = 0;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":28
 *             _buf[0]   = NULL
 *             _count[0] = 0
 *             _dtype[0] = MPI_BYTE # XXX explain             # <<<<<<<<<<<<<<
 *             return None
 *     # check argument containing message
 */
      (__pyx_v__dtype[0]) = MPI_BYTE;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":29
 *             _count[0] = 0
 *             _dtype[0] = MPI_BYTE # XXX explain
 *             return None             # <<<<<<<<<<<<<<
 *     # check argument containing message
 *     cdef Py_ssize_t n = 0
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_None);
      __pyx_r = Py_None;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":31
 *             return None
 *     # check argument containing message
 *     cdef Py_ssize_t n = 0             # <<<<<<<<<<<<<<
 *     if not is_list(msg) and not is_tuple(msg):
 *         raise TypeError(mpistr("message: expecting a list or tuple"))
 */
  __pyx_v_n = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":32
 *     # check argument containing message
 *     cdef Py_ssize_t n = 0
 *     if not is_list(msg) and not is_tuple(msg):             # <<<<<<<<<<<<<<
 *         raise TypeError(mpistr("message: expecting a list or tuple"))
 *     n = len(msg)
 */
  if ((!PyList_CheckExact(__pyx_v_msg))) {
    /* __pyx_t_1 allocated */
    __pyx_t_1 = (!PyTuple_CheckExact(__pyx_v_msg));
  } else {
    __pyx_t_1 = (!PyList_CheckExact(__pyx_v_msg));
  }
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":33
 *     cdef Py_ssize_t n = 0
 *     if not is_list(msg) and not is_tuple(msg):
 *         raise TypeError(mpistr("message: expecting a list or tuple"))             # <<<<<<<<<<<<<<
 *     n = len(msg)
 *     if n < 2 or n > 3:
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_117); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 33; __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 released */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    __Pyx_Raise(__pyx_t_2, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    {__pyx_filename = __pyx_f[5]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":34
 *     if not is_list(msg) and not is_tuple(msg):
 *         raise TypeError(mpistr("message: expecting a list or tuple"))
 *     n = len(msg)             # <<<<<<<<<<<<<<
 *     if n < 2 or n > 3:
 *         raise ValueError(mpistr("message: expecting 2 or 3 items"))
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_Length(__pyx_v_msg); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_4;
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":35
 *         raise TypeError(mpistr("message: expecting a list or tuple"))
 *     n = len(msg)
 *     if n < 2 or n > 3:             # <<<<<<<<<<<<<<
 *         raise ValueError(mpistr("message: expecting 2 or 3 items"))
 *     # unpack message list/tuple
 */
  if (!(__pyx_v_n < 2)) {
    /* __pyx_t_1 allocated */
    __pyx_t_1 = (__pyx_v_n > 3);
  } else {
    __pyx_t_1 = (__pyx_v_n < 2);
  }
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":36
 *     n = len(msg)
 *     if n < 2 or n > 3:
 *         raise ValueError(mpistr("message: expecting 2 or 3 items"))             # <<<<<<<<<<<<<<
 *     # unpack message list/tuple
 *     cdef object obuf, ocount, odtype
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_118); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __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 released */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    __Pyx_Raise(__pyx_t_2, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":39
 *     # unpack message list/tuple
 *     cdef object obuf, ocount, odtype
 *     if n == 2:             # <<<<<<<<<<<<<<
 *         obuf   = msg[0]
 *         ocount = None
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_n == 2);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":40
 *     cdef object obuf, ocount, odtype
 *     if n == 2:
 *         obuf   = msg[0]             # <<<<<<<<<<<<<<
 *         ocount = None
 *         odtype = msg[1]
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_msg, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_obuf);
    __pyx_v_obuf = __pyx_1;
    __pyx_1 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":41
 *     if n == 2:
 *         obuf   = msg[0]
 *         ocount = None             # <<<<<<<<<<<<<<
 *         odtype = msg[1]
 *     else:
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF(__pyx_v_ocount);
    __pyx_v_ocount = Py_None;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":42
 *         obuf   = msg[0]
 *         ocount = None
 *         odtype = msg[1]             # <<<<<<<<<<<<<<
 *     else:
 *         obuf   = msg[0]
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_msg, 1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_odtype);
    __pyx_v_odtype = __pyx_1;
    __pyx_1 = 0;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":44
 *         odtype = msg[1]
 *     else:
 *         obuf   = msg[0]             # <<<<<<<<<<<<<<
 *         ocount = msg[1]
 *         odtype = msg[2]
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_msg, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_obuf);
    __pyx_v_obuf = __pyx_1;
    __pyx_1 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":45
 *     else:
 *         obuf   = msg[0]
 *         ocount = msg[1]             # <<<<<<<<<<<<<<
 *         odtype = msg[2]
 *     # buffer pointer and length
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_msg, 1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_ocount);
    __pyx_v_ocount = __pyx_1;
    __pyx_1 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":46
 *         obuf   = msg[0]
 *         ocount = msg[1]
 *         odtype = msg[2]             # <<<<<<<<<<<<<<
 *     # buffer pointer and length
 *     cdef void *bptr = NULL
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_msg, 2, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_odtype);
    __pyx_v_odtype = __pyx_1;
    __pyx_1 = 0;
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":48
 *         odtype = msg[2]
 *     # buffer pointer and length
 *     cdef void *bptr = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint blen = 0
 *     if is_BOTTOM(obuf):
 */
  __pyx_v_bptr = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":49
 *     # buffer pointer and length
 *     cdef void *bptr = NULL
 *     cdef MPI_Aint blen = 0             # <<<<<<<<<<<<<<
 *     if is_BOTTOM(obuf):
 *         bptr = MPI_BOTTOM; blen = 0
 */
  __pyx_v_blen = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":50
 *     cdef void *bptr = NULL
 *     cdef MPI_Aint blen = 0
 *     if is_BOTTOM(obuf):             # <<<<<<<<<<<<<<
 *         bptr = MPI_BOTTOM; blen = 0
 *     elif readonly:
 */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_is_BOTTOM(__pyx_v_obuf);
  if (__pyx_t_5) {
    /* __pyx_t_5 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":51
 *     cdef MPI_Aint blen = 0
 *     if is_BOTTOM(obuf):
 *         bptr = MPI_BOTTOM; blen = 0             # <<<<<<<<<<<<<<
 *     elif readonly:
 *         asbuffer_r(obuf, &bptr, &blen)
 */
    __pyx_v_bptr = MPI_BOTTOM;
    __pyx_v_blen = 0;
    goto __pyx_L8;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":52
 *     if is_BOTTOM(obuf):
 *         bptr = MPI_BOTTOM; blen = 0
 *     elif readonly:             # <<<<<<<<<<<<<<
 *         asbuffer_r(obuf, &bptr, &blen)
 *     else:
 */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = __pyx_v_readonly;
  if (__pyx_t_5) {
    /* __pyx_t_5 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":53
 *         bptr = MPI_BOTTOM; blen = 0
 *     elif readonly:
 *         asbuffer_r(obuf, &bptr, &blen)             # <<<<<<<<<<<<<<
 *     else:
 *         asbuffer_w(obuf, &bptr, &blen)
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_obuf, (&__pyx_v_bptr), (&__pyx_v_blen)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    goto __pyx_L8;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":55
 *         asbuffer_r(obuf, &bptr, &blen)
 *     else:
 *         asbuffer_w(obuf, &bptr, &blen)             # <<<<<<<<<<<<<<
 *     # datatype
 *     cdef MPI_Datatype dtype = MPI_DATATYPE_NULL
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_obuf, (&__pyx_v_bptr), (&__pyx_v_blen)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
  }
  __pyx_L8:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":57
 *         asbuffer_w(obuf, &bptr, &blen)
 *     # datatype
 *     cdef MPI_Datatype dtype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint lb = 0, ex = 0
 *     dtype = (<Datatype?>odtype).ob_mpi
 */
  __pyx_v_dtype = MPI_DATATYPE_NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":58
 *     # datatype
 *     cdef MPI_Datatype dtype = MPI_DATATYPE_NULL
 *     cdef MPI_Aint lb = 0, ex = 0             # <<<<<<<<<<<<<<
 *     dtype = (<Datatype?>odtype).ob_mpi
 *     # number of entries
 */
  __pyx_v_lb = 0;
  __pyx_v_ex = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":59
 *     cdef MPI_Datatype dtype = MPI_DATATYPE_NULL
 *     cdef MPI_Aint lb = 0, ex = 0
 *     dtype = (<Datatype?>odtype).ob_mpi             # <<<<<<<<<<<<<<
 *     # number of entries
 *     cdef int count = 0
 */
  if (!(__Pyx_TypeTest(__pyx_v_odtype, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_dtype = ((PyMPIDatatypeObject *)__pyx_v_odtype)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":61
 *     dtype = (<Datatype?>odtype).ob_mpi
 *     # number of entries
 *     cdef int count = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint nitems = 0
 *     if ocount is not None: # user-provided
 */
  __pyx_v_count = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":62
 *     # number of entries
 *     cdef int count = 0
 *     cdef MPI_Aint nitems = 0             # <<<<<<<<<<<<<<
 *     if ocount is not None: # user-provided
 *         count = <int> ocount
 */
  __pyx_v_nitems = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":63
 *     cdef int count = 0
 *     cdef MPI_Aint nitems = 0
 *     if ocount is not None: # user-provided             # <<<<<<<<<<<<<<
 *         count = <int> ocount
 *     elif blen > 0: # try to guess
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_ocount != Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":64
 *     cdef MPI_Aint nitems = 0
 *     if ocount is not None: # user-provided
 *         count = <int> ocount             # <<<<<<<<<<<<<<
 *     elif blen > 0: # try to guess
 *         CHKERR( MPI_Type_get_extent(dtype, &lb, &ex) )
 */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = __pyx_PyInt_int(__pyx_v_ocount); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_count = ((int)__pyx_t_5);
    /* __pyx_t_5 released */
    goto __pyx_L9;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":65
 *     if ocount is not None: # user-provided
 *         count = <int> ocount
 *     elif blen > 0: # try to guess             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_extent(dtype, &lb, &ex) )
 *         if (blen % ex) != 0:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_blen > 0);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":66
 *         count = <int> ocount
 *     elif blen > 0: # try to guess
 *         CHKERR( MPI_Type_get_extent(dtype, &lb, &ex) )             # <<<<<<<<<<<<<<
 *         if (blen % ex) != 0:
 *             raise ValueError(mpistr(
 */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(__pyx_v_dtype, (&__pyx_v_lb), (&__pyx_v_ex))); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_5 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":67
 *     elif blen > 0: # try to guess
 *         CHKERR( MPI_Type_get_extent(dtype, &lb, &ex) )
 *         if (blen % ex) != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError(mpistr(
 *                 "message: buffer length %d is not a multiple " \
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((__pyx_v_blen % __pyx_v_ex) != 0);
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":69
 *         if (blen % ex) != 0:
 *             raise ValueError(mpistr(
 *                 "message: buffer length %d is not a multiple " \             # <<<<<<<<<<<<<<
 *                 "of datatype extent %d (lb:%d, ub:%d)") %  \
 *                 (blen, ex, lb, lb+ex))
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_119); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":71
 *                 "message: buffer length %d is not a multiple " \
 *                 "of datatype extent %d (lb:%d, ub:%d)") %  \
 *                 (blen, ex, lb, lb+ex))             # <<<<<<<<<<<<<<
 *         nitems = blen/ex
 *         if size <= 1:
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyInt_FromLong(__pyx_v_blen); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      /* __pyx_t_6 allocated */
      __pyx_t_6 = PyInt_FromLong(__pyx_v_ex); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      /* __pyx_t_7 allocated */
      __pyx_t_7 = PyInt_FromLong(__pyx_v_lb); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      /* __pyx_t_8 allocated */
      __pyx_t_8 = PyInt_FromLong((__pyx_v_lb + __pyx_v_ex)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      /* __pyx_t_9 allocated */
      __pyx_t_9 = PyTuple_New(4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_9));
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_8);
      __pyx_t_3 = 0;
      __pyx_t_6 = 0;
      __pyx_t_7 = 0;
      __pyx_t_8 = 0;
      /* __pyx_t_3 released */
      /* __pyx_t_6 released */
      /* __pyx_t_7 released */
      /* __pyx_t_8 released */
      /* __pyx_t_8 allocated */
      __pyx_t_8 = PyNumber_Remainder(__pyx_t_2, ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
      /* __pyx_t_2 released */
      /* __pyx_t_9 released */
      /* __pyx_t_9 allocated */
      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_9));
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_8);
      __pyx_t_8 = 0;
      /* __pyx_t_8 released */
      /* __pyx_t_8 allocated */
      __pyx_t_8 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
      /* __pyx_t_9 released */
      __Pyx_Raise(__pyx_t_8, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      /* __pyx_t_8 released */
      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L10;
    }
    __pyx_L10:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":72
 *                 "of datatype extent %d (lb:%d, ub:%d)") %  \
 *                 (blen, ex, lb, lb+ex))
 *         nitems = blen/ex             # <<<<<<<<<<<<<<
 *         if size <= 1:
 *             count = <int> nitems
 */
    __pyx_v_nitems = (__pyx_v_blen / __pyx_v_ex);

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":73
 *                 (blen, ex, lb, lb+ex))
 *         nitems = blen/ex
 *         if size <= 1:             # <<<<<<<<<<<<<<
 *             count = <int> nitems
 *         else:
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = (__pyx_v_size <= 1);
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":74
 *         nitems = blen/ex
 *         if size <= 1:
 *             count = <int> nitems             # <<<<<<<<<<<<<<
 *         else:
 *             if (nitems % size) != 0:
 */
      __pyx_v_count = ((int)__pyx_v_nitems);
      goto __pyx_L11;
    }
    /*else*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":76
 *             count = <int> nitems
 *         else:
 *             if (nitems % size) != 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(mpistr(
 *                     "message: number of datatype items %d is not " \
 */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = ((__pyx_v_nitems % __pyx_v_size) != 0);
      if (__pyx_t_1) {
        /* __pyx_t_1 released */

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":78
 *             if (nitems % size) != 0:
 *                 raise ValueError(mpistr(
 *                     "message: number of datatype items %d is not " \             # <<<<<<<<<<<<<<
 *                     "a multiple of the required number " \
 *                     "of blocks %d") %  (nitems, size))
 */
        /* __pyx_t_8 allocated */
        __pyx_t_8 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_120); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":80
 *                     "message: number of datatype items %d is not " \
 *                     "a multiple of the required number " \
 *                     "of blocks %d") %  (nitems, size))             # <<<<<<<<<<<<<<
 *             count = <int> (nitems/size)
 *     # return collected message data
 */
        /* __pyx_t_9 allocated */
        __pyx_t_9 = PyInt_FromLong(__pyx_v_nitems); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        /* __pyx_t_2 allocated */
        __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        /* __pyx_t_7 allocated */
        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_7));
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_t_9 = 0;
        __pyx_t_2 = 0;
        /* __pyx_t_9 released */
        /* __pyx_t_2 released */
        /* __pyx_t_2 allocated */
        __pyx_t_2 = PyNumber_Remainder(__pyx_t_8, ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
        /* __pyx_t_8 released */
        /* __pyx_t_7 released */
        /* __pyx_t_7 allocated */
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 77; __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);
        __pyx_t_2 = 0;
        /* __pyx_t_2 released */
        /* __pyx_t_2 allocated */
        __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
        /* __pyx_t_7 released */
        __Pyx_Raise(__pyx_t_2, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        /* __pyx_t_2 released */
        {__pyx_filename = __pyx_f[5]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L12;
      }
      __pyx_L12:;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":81
 *                     "a multiple of the required number " \
 *                     "of blocks %d") %  (nitems, size))
 *             count = <int> (nitems/size)             # <<<<<<<<<<<<<<
 *     # return collected message data
 *     _buf[0]   = bptr
 */
      __pyx_v_count = ((int)(__pyx_v_nitems / __pyx_v_size));
    }
    __pyx_L11:;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":83
 *             count = <int> (nitems/size)
 *     # return collected message data
 *     _buf[0]   = bptr             # <<<<<<<<<<<<<<
 *     _count[0] = count
 *     _dtype[0] = dtype
 */
  (__pyx_v__buf[0]) = __pyx_v_bptr;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":84
 *     # return collected message data
 *     _buf[0]   = bptr
 *     _count[0] = count             # <<<<<<<<<<<<<<
 *     _dtype[0] = dtype
 *     return (obuf, ocount, odtype)
 */
  (__pyx_v__count[0]) = __pyx_v_count;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":85
 *     _buf[0]   = bptr
 *     _count[0] = count
 *     _dtype[0] = dtype             # <<<<<<<<<<<<<<
 *     return (obuf, ocount, odtype)
 * 
 */
  (__pyx_v__dtype[0]) = __pyx_v_dtype;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":86
 *     _count[0] = count
 *     _dtype[0] = dtype
 *     return (obuf, ocount, odtype)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_obuf);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obuf);
  __Pyx_GIVEREF(__pyx_v_obuf);
  __Pyx_INCREF(__pyx_v_ocount);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_ocount);
  __Pyx_GIVEREF(__pyx_v_ocount);
  __Pyx_INCREF(__pyx_v_odtype);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_odtype);
  __Pyx_GIVEREF(__pyx_v_odtype);
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.message_simple");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_obuf);
  __Pyx_DECREF(__pyx_v_ocount);
  __Pyx_DECREF(__pyx_v_odtype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":89
 * 
 * 
 * cdef inline object message_vector(int readonly,             # <<<<<<<<<<<<<<
 *                                   object msg,
 *                                   int rank, int size,
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_message_vector(int __pyx_v_readonly, PyObject *__pyx_v_msg, int __pyx_v_rank, int __pyx_v_size, void **__pyx_v__buf, int **__pyx_v__counts, int **__pyx_v__displs, MPI_Datatype *__pyx_v__dtype) {
  void *__pyx_v_buf;
  int *__pyx_v_counts;
  int *__pyx_v_displs;
  MPI_Datatype __pyx_v_dtype;
  PyObject *__pyx_v_obuf;
  PyObject *__pyx_v_ocounts;
  PyObject *__pyx_v_odispls;
  PyObject *__pyx_v_odtype;
  Py_ssize_t __pyx_v_n;
  int __pyx_v_i;
  int __pyx_v_val;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  __Pyx_SetupRefcountContext("message_vector");
  __pyx_v_obuf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ocounts = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_odispls = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_odtype = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":97
 *                                   MPI_Datatype *_dtype):
 *     # special case
 *     if rank == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         if msg is None:
 *             _buf[0]    = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_rank == MPI_PROC_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":98
 *     # special case
 *     if rank == MPI_PROC_NULL:
 *         if msg is None:             # <<<<<<<<<<<<<<
 *             _buf[0]    = NULL
 *             _counts[0] = NULL
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = (__pyx_v_msg == Py_None);
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":99
 *     if rank == MPI_PROC_NULL:
 *         if msg is None:
 *             _buf[0]    = NULL             # <<<<<<<<<<<<<<
 *             _counts[0] = NULL
 *             _displs[0] = NULL
 */
      (__pyx_v__buf[0]) = NULL;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":100
 *         if msg is None:
 *             _buf[0]    = NULL
 *             _counts[0] = NULL             # <<<<<<<<<<<<<<
 *             _displs[0] = NULL
 *             _dtype[0]  = MPI_BYTE # XXX explain
 */
      (__pyx_v__counts[0]) = NULL;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":101
 *             _buf[0]    = NULL
 *             _counts[0] = NULL
 *             _displs[0] = NULL             # <<<<<<<<<<<<<<
 *             _dtype[0]  = MPI_BYTE # XXX explain
 *             return None
 */
      (__pyx_v__displs[0]) = NULL;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":102
 *             _counts[0] = NULL
 *             _displs[0] = NULL
 *             _dtype[0]  = MPI_BYTE # XXX explain             # <<<<<<<<<<<<<<
 *             return None
 *     #
 */
      (__pyx_v__dtype[0]) = MPI_BYTE;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":103
 *             _displs[0] = NULL
 *             _dtype[0]  = MPI_BYTE # XXX explain
 *             return None             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *buf = NULL
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_None);
      __pyx_r = Py_None;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":105
 *             return None
 *     #
 *     cdef void *buf = NULL             # <<<<<<<<<<<<<<
 *     cdef int *counts = NULL
 *     cdef int *displs = NULL
 */
  __pyx_v_buf = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":106
 *     #
 *     cdef void *buf = NULL
 *     cdef int *counts = NULL             # <<<<<<<<<<<<<<
 *     cdef int *displs = NULL
 *     cdef MPI_Datatype dtype = MPI_DATATYPE_NULL
 */
  __pyx_v_counts = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":107
 *     cdef void *buf = NULL
 *     cdef int *counts = NULL
 *     cdef int *displs = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype dtype = MPI_DATATYPE_NULL
 *     cdef object obuf, ocounts, odispls, odtype
 */
  __pyx_v_displs = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":108
 *     cdef int *counts = NULL
 *     cdef int *displs = NULL
 *     cdef MPI_Datatype dtype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *     cdef object obuf, ocounts, odispls, odtype
 *     # check argument containing message
 */
  __pyx_v_dtype = MPI_DATATYPE_NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":111
 *     cdef object obuf, ocounts, odispls, odtype
 *     # check argument containing message
 *     cdef Py_ssize_t n = 0             # <<<<<<<<<<<<<<
 *     if not is_list(msg) and not is_tuple(msg):
 *         raise TypeError(mpistr("message: expecting a list or tuple"))
 */
  __pyx_v_n = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":112
 *     # check argument containing message
 *     cdef Py_ssize_t n = 0
 *     if not is_list(msg) and not is_tuple(msg):             # <<<<<<<<<<<<<<
 *         raise TypeError(mpistr("message: expecting a list or tuple"))
 *     n = len(msg)
 */
  if ((!PyList_CheckExact(__pyx_v_msg))) {
    /* __pyx_t_1 allocated */
    __pyx_t_1 = (!PyTuple_CheckExact(__pyx_v_msg));
  } else {
    __pyx_t_1 = (!PyList_CheckExact(__pyx_v_msg));
  }
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":113
 *     cdef Py_ssize_t n = 0
 *     if not is_list(msg) and not is_tuple(msg):
 *         raise TypeError(mpistr("message: expecting a list or tuple"))             # <<<<<<<<<<<<<<
 *     n = len(msg)
 *     if n < 3 or n > 4:
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_121); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 113; __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 released */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    __Pyx_Raise(__pyx_t_2, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    {__pyx_filename = __pyx_f[5]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":114
 *     if not is_list(msg) and not is_tuple(msg):
 *         raise TypeError(mpistr("message: expecting a list or tuple"))
 *     n = len(msg)             # <<<<<<<<<<<<<<
 *     if n < 3 or n > 4:
 *         raise ValueError(mpistr("message: expecting 3 or 4 items"))
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_Length(__pyx_v_msg); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_4;
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":115
 *         raise TypeError(mpistr("message: expecting a list or tuple"))
 *     n = len(msg)
 *     if n < 3 or n > 4:             # <<<<<<<<<<<<<<
 *         raise ValueError(mpistr("message: expecting 3 or 4 items"))
 *     # unpack message list/tuple
 */
  if (!(__pyx_v_n < 3)) {
    /* __pyx_t_1 allocated */
    __pyx_t_1 = (__pyx_v_n > 4);
  } else {
    __pyx_t_1 = (__pyx_v_n < 3);
  }
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":116
 *     n = len(msg)
 *     if n < 3 or n > 4:
 *         raise ValueError(mpistr("message: expecting 3 or 4 items"))             # <<<<<<<<<<<<<<
 *     # unpack message list/tuple
 *     if n == 4:
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_122); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 116; __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 released */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    __Pyx_Raise(__pyx_t_2, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    {__pyx_filename = __pyx_f[5]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":118
 *         raise ValueError(mpistr("message: expecting 3 or 4 items"))
 *     # unpack message list/tuple
 *     if n == 4:             # <<<<<<<<<<<<<<
 *         obuf    = msg[0]
 *         ocounts = msg[1]
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_n == 4);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":119
 *     # unpack message list/tuple
 *     if n == 4:
 *         obuf    = msg[0]             # <<<<<<<<<<<<<<
 *         ocounts = msg[1]
 *         odispls = msg[2]
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_msg, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_obuf);
    __pyx_v_obuf = __pyx_1;
    __pyx_1 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":120
 *     if n == 4:
 *         obuf    = msg[0]
 *         ocounts = msg[1]             # <<<<<<<<<<<<<<
 *         odispls = msg[2]
 *         odtype  = msg[3]
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_msg, 1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_ocounts);
    __pyx_v_ocounts = __pyx_1;
    __pyx_1 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":121
 *         obuf    = msg[0]
 *         ocounts = msg[1]
 *         odispls = msg[2]             # <<<<<<<<<<<<<<
 *         odtype  = msg[3]
 *     else:
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_msg, 2, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_odispls);
    __pyx_v_odispls = __pyx_1;
    __pyx_1 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":122
 *         ocounts = msg[1]
 *         odispls = msg[2]
 *         odtype  = msg[3]             # <<<<<<<<<<<<<<
 *     else:
 *         obuf    = msg[0]
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_msg, 3, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_odtype);
    __pyx_v_odtype = __pyx_1;
    __pyx_1 = 0;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":124
 *         odtype  = msg[3]
 *     else:
 *         obuf    = msg[0]             # <<<<<<<<<<<<<<
 *         ocounts = msg[1][0]
 *         odispls = msg[1][1]
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_msg, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_obuf);
    __pyx_v_obuf = __pyx_1;
    __pyx_1 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":125
 *     else:
 *         obuf    = msg[0]
 *         ocounts = msg[1][0]             # <<<<<<<<<<<<<<
 *         odispls = msg[1][1]
 *         odtype  = msg[2]
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_msg, 1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __pyx_2 = __Pyx_GetItemInt(__pyx_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_2);
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_DECREF(__pyx_v_ocounts);
    __pyx_v_ocounts = __pyx_2;
    __pyx_2 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":126
 *         obuf    = msg[0]
 *         ocounts = msg[1][0]
 *         odispls = msg[1][1]             # <<<<<<<<<<<<<<
 *         odtype  = msg[2]
 *     # buffer
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_msg, 1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __pyx_2 = __Pyx_GetItemInt(__pyx_1, 1, sizeof(long), PyInt_FromLong); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_2);
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_DECREF(__pyx_v_odispls);
    __pyx_v_odispls = __pyx_2;
    __pyx_2 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":127
 *         ocounts = msg[1][0]
 *         odispls = msg[1][1]
 *         odtype  = msg[2]             # <<<<<<<<<<<<<<
 *     # buffer
 *     if is_BOTTOM(obuf):
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_msg, 2, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_odtype);
    __pyx_v_odtype = __pyx_1;
    __pyx_1 = 0;
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":129
 *         odtype  = msg[2]
 *     # buffer
 *     if is_BOTTOM(obuf):             # <<<<<<<<<<<<<<
 *         buf = MPI_BOTTOM
 *     elif readonly:
 */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_is_BOTTOM(__pyx_v_obuf);
  if (__pyx_t_5) {
    /* __pyx_t_5 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":130
 *     # buffer
 *     if is_BOTTOM(obuf):
 *         buf = MPI_BOTTOM             # <<<<<<<<<<<<<<
 *     elif readonly:
 *         asbuffer_r(obuf, &buf, NULL)
 */
    __pyx_v_buf = MPI_BOTTOM;
    goto __pyx_L8;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":131
 *     if is_BOTTOM(obuf):
 *         buf = MPI_BOTTOM
 *     elif readonly:             # <<<<<<<<<<<<<<
 *         asbuffer_r(obuf, &buf, NULL)
 *     else:
 */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = __pyx_v_readonly;
  if (__pyx_t_5) {
    /* __pyx_t_5 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":132
 *         buf = MPI_BOTTOM
 *     elif readonly:
 *         asbuffer_r(obuf, &buf, NULL)             # <<<<<<<<<<<<<<
 *     else:
 *         asbuffer_w(obuf, &buf, NULL)
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_obuf, (&__pyx_v_buf), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    goto __pyx_L8;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":134
 *         asbuffer_r(obuf, &buf, NULL)
 *     else:
 *         asbuffer_w(obuf, &buf, NULL)             # <<<<<<<<<<<<<<
 *     # counts
 *     cdef int i=0, val=0
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_obuf, (&__pyx_v_buf), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
  }
  __pyx_L8:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":136
 *         asbuffer_w(obuf, &buf, NULL)
 *     # counts
 *     cdef int i=0, val=0             # <<<<<<<<<<<<<<
 *     if is_int(ocounts):
 *         val = <int> ocounts
 */
  __pyx_v_i = 0;
  __pyx_v_val = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":137
 *     # counts
 *     cdef int i=0, val=0
 *     if is_int(ocounts):             # <<<<<<<<<<<<<<
 *         val = <int> ocounts
 *         ocounts = newarray_int(size, &counts)
 */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = PyInt_Check(__pyx_v_ocounts);
  if (__pyx_t_5) {
    /* __pyx_t_5 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":138
 *     cdef int i=0, val=0
 *     if is_int(ocounts):
 *         val = <int> ocounts             # <<<<<<<<<<<<<<
 *         ocounts = newarray_int(size, &counts)
 *         for i from 0 <= i < size:
 */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = __pyx_PyInt_int(__pyx_v_ocounts); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_val = ((int)__pyx_t_5);
    /* __pyx_t_5 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":139
 *     if is_int(ocounts):
 *         val = <int> ocounts
 *         ocounts = newarray_int(size, &counts)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < size:
 *             counts[i] = val
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_counts)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_ocounts);
    __pyx_v_ocounts = __pyx_t_2;
    __pyx_t_2 = 0;
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":140
 *         val = <int> ocounts
 *         ocounts = newarray_int(size, &counts)
 *         for i from 0 <= i < size:             # <<<<<<<<<<<<<<
 *             counts[i] = val
 *     else:
 */
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_size; __pyx_v_i++) {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":141
 *         ocounts = newarray_int(size, &counts)
 *         for i from 0 <= i < size:
 *             counts[i] = val             # <<<<<<<<<<<<<<
 *     else:
 *         ocounts = asarray_int(ocounts, &counts, size)
 */
      (__pyx_v_counts[__pyx_v_i]) = __pyx_v_val;
    }
    goto __pyx_L9;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":143
 *             counts[i] = val
 *     else:
 *         ocounts = asarray_int(ocounts, &counts, size)             # <<<<<<<<<<<<<<
 *     # displacements
 *     if odispls is None: # contiguous
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_ocounts, (&__pyx_v_counts), __pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_ocounts);
    __pyx_v_ocounts = __pyx_t_2;
    __pyx_t_2 = 0;
    /* __pyx_t_2 released */
  }
  __pyx_L9:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":145
 *         ocounts = asarray_int(ocounts, &counts, size)
 *     # displacements
 *     if odispls is None: # contiguous             # <<<<<<<<<<<<<<
 *         val = 0
 *         odispls = newarray_int(size, &displs)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_odispls == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":146
 *     # displacements
 *     if odispls is None: # contiguous
 *         val = 0             # <<<<<<<<<<<<<<
 *         odispls = newarray_int(size, &displs)
 *         for i from 0 <= i < size:
 */
    __pyx_v_val = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":147
 *     if odispls is None: # contiguous
 *         val = 0
 *         odispls = newarray_int(size, &displs)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < size:
 *             displs[i] = val; val += counts[i]
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_displs)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_odispls);
    __pyx_v_odispls = __pyx_t_2;
    __pyx_t_2 = 0;
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":148
 *         val = 0
 *         odispls = newarray_int(size, &displs)
 *         for i from 0 <= i < size:             # <<<<<<<<<<<<<<
 *             displs[i] = val; val += counts[i]
 *     elif is_int(odispls): # strided
 */
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_size; __pyx_v_i++) {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":149
 *         odispls = newarray_int(size, &displs)
 *         for i from 0 <= i < size:
 *             displs[i] = val; val += counts[i]             # <<<<<<<<<<<<<<
 *     elif is_int(odispls): # strided
 *         val = <int> odispls
 */
      (__pyx_v_displs[__pyx_v_i]) = __pyx_v_val;
      __pyx_v_val += (__pyx_v_counts[__pyx_v_i]);
    }
    goto __pyx_L12;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":150
 *         for i from 0 <= i < size:
 *             displs[i] = val; val += counts[i]
 *     elif is_int(odispls): # strided             # <<<<<<<<<<<<<<
 *         val = <int> odispls
 *         odispls = newarray_int(size, &displs)
 */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = PyInt_Check(__pyx_v_odispls);
  if (__pyx_t_5) {
    /* __pyx_t_5 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":151
 *             displs[i] = val; val += counts[i]
 *     elif is_int(odispls): # strided
 *         val = <int> odispls             # <<<<<<<<<<<<<<
 *         odispls = newarray_int(size, &displs)
 *         for i from 0 <= i < size:
 */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = __pyx_PyInt_int(__pyx_v_odispls); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_val = ((int)__pyx_t_5);
    /* __pyx_t_5 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":152
 *     elif is_int(odispls): # strided
 *         val = <int> odispls
 *         odispls = newarray_int(size, &displs)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < size:
 *             displs[i] = val * i
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_displs)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_odispls);
    __pyx_v_odispls = __pyx_t_2;
    __pyx_t_2 = 0;
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":153
 *         val = <int> odispls
 *         odispls = newarray_int(size, &displs)
 *         for i from 0 <= i < size:             # <<<<<<<<<<<<<<
 *             displs[i] = val * i
 *     else: # general
 */
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_size; __pyx_v_i++) {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":154
 *         odispls = newarray_int(size, &displs)
 *         for i from 0 <= i < size:
 *             displs[i] = val * i             # <<<<<<<<<<<<<<
 *     else: # general
 *         odispls = asarray_int(odispls, &displs, size)
 */
      (__pyx_v_displs[__pyx_v_i]) = (__pyx_v_val * __pyx_v_i);
    }
    goto __pyx_L12;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":156
 *             displs[i] = val * i
 *     else: # general
 *         odispls = asarray_int(odispls, &displs, size)             # <<<<<<<<<<<<<<
 *     # datatype
 *     dtype = (<Datatype?>odtype).ob_mpi
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_odispls, (&__pyx_v_displs), __pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_odispls);
    __pyx_v_odispls = __pyx_t_2;
    __pyx_t_2 = 0;
    /* __pyx_t_2 released */
  }
  __pyx_L12:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":158
 *         odispls = asarray_int(odispls, &displs, size)
 *     # datatype
 *     dtype = (<Datatype?>odtype).ob_mpi             # <<<<<<<<<<<<<<
 *     # return collected message data
 *     _buf[0]    = buf
 */
  if (!(__Pyx_TypeTest(__pyx_v_odtype, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_dtype = ((PyMPIDatatypeObject *)__pyx_v_odtype)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":160
 *     dtype = (<Datatype?>odtype).ob_mpi
 *     # return collected message data
 *     _buf[0]    = buf             # <<<<<<<<<<<<<<
 *     _counts[0] = counts
 *     _displs[0] = displs
 */
  (__pyx_v__buf[0]) = __pyx_v_buf;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":161
 *     # return collected message data
 *     _buf[0]    = buf
 *     _counts[0] = counts             # <<<<<<<<<<<<<<
 *     _displs[0] = displs
 *     _dtype[0]  = dtype
 */
  (__pyx_v__counts[0]) = __pyx_v_counts;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":162
 *     _buf[0]    = buf
 *     _counts[0] = counts
 *     _displs[0] = displs             # <<<<<<<<<<<<<<
 *     _dtype[0]  = dtype
 *     return (obuf, (ocounts, odispls), odtype)
 */
  (__pyx_v__displs[0]) = __pyx_v_displs;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":163
 *     _counts[0] = counts
 *     _displs[0] = displs
 *     _dtype[0]  = dtype             # <<<<<<<<<<<<<<
 *     return (obuf, (ocounts, odispls), odtype)
 * 
 */
  (__pyx_v__dtype[0]) = __pyx_v_dtype;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":164
 *     _displs[0] = displs
 *     _dtype[0]  = dtype
 *     return (obuf, (ocounts, odispls), odtype)             # <<<<<<<<<<<<<<
 * 
 * #---------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_ocounts);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ocounts);
  __Pyx_GIVEREF(__pyx_v_ocounts);
  __Pyx_INCREF(__pyx_v_odispls);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_odispls);
  __Pyx_GIVEREF(__pyx_v_odispls);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __Pyx_INCREF(__pyx_v_obuf);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_obuf);
  __Pyx_GIVEREF(__pyx_v_obuf);
  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_t_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_odtype);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_odtype);
  __Pyx_GIVEREF(__pyx_v_odtype);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  __pyx_r = ((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.message_vector");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_obuf);
  __Pyx_DECREF(__pyx_v_ocounts);
  __Pyx_DECREF(__pyx_v_odispls);
  __Pyx_DECREF(__pyx_v_odtype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":177
 *     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_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":178
 * 
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":179
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":180
 *         self.buf   = NULL
 *         self.count = 0
 *         self.dtype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef for_send(self, object msg, int rank):
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_v_self)->dtype = MPI_DATATYPE_NULL;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":182
 *         self.dtype = MPI_DATATYPE_NULL
 * 
 *     cdef for_send(self, object msg, int rank):             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(1, msg, # readonly
 *                                    rank, 0,
 */

static  PyObject *__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) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("for_send");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":187
 *                                    &self.buf,
 *                                    &self.count,
 *                                    &self.dtype)             # <<<<<<<<<<<<<<
 * 
 *     cdef for_recv(self, object msg, int rank):
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_message_simple(1, __pyx_v_msg, __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[5]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":183
 * 
 *     cdef for_send(self, object msg, int rank):
 *         self._msg = message_simple(1, msg, # 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;
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_p2p.for_send");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":189
 *                                    &self.dtype)
 * 
 *     cdef for_recv(self, object msg, int rank):             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(0, msg, # writable
 *                                    rank, 0,
 */

static  PyObject *__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) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("for_recv");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":194
 *                                    &self.buf,
 *                                    &self.count,
 *                                    &self.dtype)             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_p2p message_p2p_send(object sendbuf, int dest):
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_message_simple(0, __pyx_v_msg, __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[5]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":190
 * 
 *     cdef for_recv(self, object msg, int rank):
 *         self._msg = message_simple(0, msg, # 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;
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_p2p.for_recv");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":196
 *                                    &self.dtype)
 * 
 * cdef inline _p_msg_p2p message_p2p_send(object sendbuf, int dest):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_p_msg_p2p()
 *     msg.for_send(sendbuf, dest)
 */

static 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;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("message_p2p_send");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":197
 * 
 * cdef inline _p_msg_p2p message_p2p_send(object sendbuf, int dest):
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_p_msg_p2p()             # <<<<<<<<<<<<<<
 *     msg.for_send(sendbuf, dest)
 *     return msg
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_p2p)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 197; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":198
 * cdef inline _p_msg_p2p message_p2p_send(object sendbuf, int dest):
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_p_msg_p2p()
 *     msg.for_send(sendbuf, dest)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((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_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":199
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":201
 *     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()
 *     msg.for_recv(recvbuf, source)
 */

static 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;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("message_p2p_recv");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":202
 * 
 * cdef inline _p_msg_p2p message_p2p_recv(object recvbuf, int source):
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_p_msg_p2p()             # <<<<<<<<<<<<<<
 *     msg.for_recv(recvbuf, source)
 *     return msg
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_p2p)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 202; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":203
 * cdef inline _p_msg_p2p message_p2p_recv(object recvbuf, int source):
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_p_msg_p2p()
 *     msg.for_recv(recvbuf, source)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((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_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":204
 *     cdef _p_msg_p2p msg = <_p_msg_p2p>_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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":219
 *     cdef object _smsg, _rmsg
 * 
 *     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_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":220
 * 
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":221
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":222
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":223
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":224
 *         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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":230
 * 
 *     # sendbuf arguments
 *     cdef for_cco_send(self, int v, object amsg, int root, int size):             # <<<<<<<<<<<<<<
 *         if not v:
 *             self._smsg = message_simple(
 */

static  PyObject *__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_v, PyObject *__pyx_v_amsg, int __pyx_v_root, int __pyx_v_size) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("for_cco_send");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":231
 *     # sendbuf arguments
 *     cdef for_cco_send(self, int v, object amsg, int root, int size):
 *         if not v:             # <<<<<<<<<<<<<<
 *             self._smsg = message_simple(
 *                 1, amsg, root, size,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_v_v);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":234
 *             self._smsg = message_simple(
 *                 1, amsg, root, size,
 *                 &self.sbuf, &self.scount, &self.stype)             # <<<<<<<<<<<<<<
 *         else: # vector variant
 *             self._smsg = message_vector(
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_message_simple(1, __pyx_v_amsg, __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[5]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":232
 *     cdef for_cco_send(self, int v, object amsg, int root, int size):
 *         if not v:
 *             self._smsg = message_simple(             # <<<<<<<<<<<<<<
 *                 1, amsg, 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;
    /* __pyx_t_2 released */
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":238
 *             self._smsg = message_vector(
 *                 1, amsg, root, size,
 *                 &self.sbuf, &self.scounts, &self.sdispls, &self.stype)             # <<<<<<<<<<<<<<
 * 
 *     # recvbuf arguments
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_message_vector(1, __pyx_v_amsg, __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[5]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":236
 *                 &self.sbuf, &self.scount, &self.stype)
 *         else: # vector variant
 *             self._smsg = message_vector(             # <<<<<<<<<<<<<<
 *                 1, amsg, 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_t_2 released */
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_cco_send");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":241
 * 
 *     # recvbuf arguments
 *     cdef for_cco_recv(self, int v, object amsg, int root, int size):             # <<<<<<<<<<<<<<
 *         if not v:
 *             self._rmsg = message_simple(
 */

static  PyObject *__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_v, PyObject *__pyx_v_amsg, int __pyx_v_root, int __pyx_v_size) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("for_cco_recv");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":242
 *     # recvbuf arguments
 *     cdef for_cco_recv(self, int v, object amsg, int root, int size):
 *         if not v:             # <<<<<<<<<<<<<<
 *             self._rmsg = message_simple(
 *                 0, amsg, root, size,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_v_v);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":245
 *             self._rmsg = message_simple(
 *                 0, amsg, root, size,
 *                 &self.rbuf, &self.rcount, &self.rtype)             # <<<<<<<<<<<<<<
 *         else: # vector variant
 *             self._rmsg = message_vector(
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_message_simple(0, __pyx_v_amsg, __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[5]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":243
 *     cdef for_cco_recv(self, int v, object amsg, int root, int size):
 *         if not v:
 *             self._rmsg = message_simple(             # <<<<<<<<<<<<<<
 *                 0, amsg, 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;
    /* __pyx_t_2 released */
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":249
 *             self._rmsg = message_vector(
 *                 0, amsg, root, size,
 *                 &self.rbuf, &self.rcounts, &self.rdispls, &self.rtype)             # <<<<<<<<<<<<<<
 * 
 *     # bcast
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_message_vector(0, __pyx_v_amsg, __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[5]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":247
 *                 &self.rbuf, &self.rcount, &self.rtype)
 *         else: # vector variant
 *             self._rmsg = message_vector(             # <<<<<<<<<<<<<<
 *                 0, amsg, 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_t_2 released */
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_cco_recv");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":252
 * 
 *     # bcast
 *     cdef for_bcast(self, object msg, int root, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *         if comm == MPI_COMM_NULL: return
 *         cdef int inter=0, rank=0, sending=0
 */

static  PyObject *__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;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("for_bcast");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":253
 *     # bcast
 *     cdef for_bcast(self, object msg, int root, MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return             # <<<<<<<<<<<<<<
 *         cdef int inter=0, rank=0, sending=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":254
 *     cdef for_bcast(self, object msg, int root, MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":255
 *         if comm == MPI_COMM_NULL: return
 *         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 allocated */
  __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[5]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":256
 *         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 allocated */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":257
 *         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 allocated */
    __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[5]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":258
 *         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 allocated */
    __pyx_t_1 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":259
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 *                 self.for_cco_send(0, msg, root, 0)             # <<<<<<<<<<<<<<
 *                 sending = 1
 *             else:
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":260
 *             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*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":262
 *                 sending = 1
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)             # <<<<<<<<<<<<<<
 *         else: # inter-communication
 *             if ((root == <int>MPI_ROOT) or
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":264
 *                 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)
 */
    if (!(__pyx_v_root == ((int)MPI_ROOT))) {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":265
 *         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_1 allocated */
      __pyx_t_1 = (__pyx_v_root == ((int)MPI_PROC_NULL));
    } else {
      __pyx_t_1 = (__pyx_v_root == ((int)MPI_ROOT));
    }
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":266
 *             if ((root == <int>MPI_ROOT) or
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cco_send(0, msg, root, 0)             # <<<<<<<<<<<<<<
 *                 sending = 1
 *             else:
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":267
 *                 (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*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":269
 *                 sending = 1
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)             # <<<<<<<<<<<<<<
 *         if sending:
 *             self.rbuf   = self.sbuf
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
    }
    __pyx_L6:;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":270
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)
 *         if sending:             # <<<<<<<<<<<<<<
 *             self.rbuf   = self.sbuf
 *             self.rcount = self.scount
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_sending;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":271
 *                 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;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":272
 *         if sending:
 *             self.rbuf   = self.sbuf
 *             self.rcount = self.scount             # <<<<<<<<<<<<<<
 *             self.rtype  = self.stype
 *         else:
 */
    __pyx_v_self->rcount = __pyx_v_self->scount;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":273
 *             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*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":275
 *             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;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":276
 *         else:
 *             self.sbuf   = self.rbuf
 *             self.scount = self.rcount             # <<<<<<<<<<<<<<
 *             self.stype  = self.rtype
 * 
 */
    __pyx_v_self->scount = __pyx_v_self->rcount;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":277
 *             self.sbuf   = self.rbuf
 *             self.scount = self.rcount
 *             self.stype  = self.rtype             # <<<<<<<<<<<<<<
 * 
 *     # gather/gatherv
 */
    __pyx_v_self->stype = __pyx_v_self->rtype;
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_bcast");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":280
 * 
 *     # gather/gatherv
 *     cdef for_gather(self, int v,             # <<<<<<<<<<<<<<
 *                     object smsg, object rmsg,
 *                     int root, MPI_Comm comm):
 */

static  PyObject *__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;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("for_gather");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":283
 *                     object smsg, object rmsg,
 *                     int root, MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0, rank=0, null = MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":284
 *                     int root, MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":285
 *         if comm == MPI_COMM_NULL: return
 *         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 allocated */
  __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[5]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":286
 *         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 allocated */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":287
 *         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 allocated */
    __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[5]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":288
 *         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 allocated */
    __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[5]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":289
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 if is_IN_PLACE(smsg):
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":290
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 *                 self.for_cco_recv(v, rmsg, root, size)             # <<<<<<<<<<<<<<
 *                 if is_IN_PLACE(smsg):
 *                     self.sbuf   = MPI_IN_PLACE
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":291
 *             if root == rank:
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 if is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *                     self.sbuf   = MPI_IN_PLACE
 *                     self.scount = self.rcount
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg);
      if (__pyx_t_2) {
        /* __pyx_t_2 released */

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":292
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 if is_IN_PLACE(smsg):
 *                     self.sbuf   = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *                     self.scount = self.rcount
 *                     self.stype  = self.rtype
 */
        __pyx_v_self->sbuf = MPI_IN_PLACE;

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":293
 *                 if is_IN_PLACE(smsg):
 *                     self.sbuf   = MPI_IN_PLACE
 *                     self.scount = self.rcount             # <<<<<<<<<<<<<<
 *                     self.stype  = self.rtype
 *                 else:
 */
        __pyx_v_self->scount = __pyx_v_self->rcount;

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":294
 *                     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*/ {

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":296
 *                     self.stype  = self.rtype
 *                 else:
 *                     self.for_cco_send(0, smsg, 0, 0)             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, 0)
 */
        /* __pyx_t_3 allocated */
        __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        /* __pyx_t_3 released */
      }
      __pyx_L6:;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":298
 *                     self.for_cco_send(0, smsg, 0, 0)
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, 0)             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, smsg, root, 0)
 *         else: # inter-communication
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":299
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, 0)
 *                 self.for_cco_send(0, smsg, root, 0)             # <<<<<<<<<<<<<<
 *         else: # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":301
 *                 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 allocated */
    __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[5]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":302
 *         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)
 */
    if (!(__pyx_v_root == ((int)MPI_ROOT))) {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":303
 *             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_1 allocated */
      __pyx_t_1 = (__pyx_v_root == ((int)MPI_PROC_NULL));
    } else {
      __pyx_t_1 = (__pyx_v_root == ((int)MPI_ROOT));
    }
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":304
 *             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_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":305
 *                 (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, 0)
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
      goto __pyx_L7;
    }
    /*else*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":307
 *                 self.for_cco_send(0, smsg, null, 0)
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, 0)             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, smsg, root, 0)
 * 
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":308
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, 0)
 *                 self.for_cco_send(0, smsg, root, 0)             # <<<<<<<<<<<<<<
 * 
 *     # scatter/scatterv
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
    }
    __pyx_L7:;
  }
  __pyx_L4:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_gather");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":311
 * 
 *     # scatter/scatterv
 *     cdef for_scatter(self, int v,             # <<<<<<<<<<<<<<
 *                      object smsg, object rmsg,
 *                      int root, MPI_Comm comm):
 */

static  PyObject *__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;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("for_scatter");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":314
 *                      object smsg, object rmsg,
 *                      int root, MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0, rank=0, null = MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":315
 *                      int root, MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":316
 *         if comm == MPI_COMM_NULL: return
 *         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 allocated */
  __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[5]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":317
 *         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 allocated */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":318
 *         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 allocated */
    __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[5]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":319
 *         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 allocated */
    __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[5]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":320
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(v, smsg, root, size)
 *                 if is_IN_PLACE(rmsg):
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":321
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 *                 self.for_cco_send(v, smsg, root, size)             # <<<<<<<<<<<<<<
 *                 if is_IN_PLACE(rmsg):
 *                     self.rbuf   = MPI_IN_PLACE
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":322
 *             if root == rank:
 *                 self.for_cco_send(v, smsg, root, size)
 *                 if is_IN_PLACE(rmsg):             # <<<<<<<<<<<<<<
 *                     self.rbuf   = MPI_IN_PLACE
 *                     self.rcount = self.scount
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_rmsg);
      if (__pyx_t_2) {
        /* __pyx_t_2 released */

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":323
 *                 self.for_cco_send(v, smsg, root, size)
 *                 if is_IN_PLACE(rmsg):
 *                     self.rbuf   = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *                     self.rcount = self.scount
 *                     self.rtype  = self.stype
 */
        __pyx_v_self->rbuf = MPI_IN_PLACE;

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":324
 *                 if is_IN_PLACE(rmsg):
 *                     self.rbuf   = MPI_IN_PLACE
 *                     self.rcount = self.scount             # <<<<<<<<<<<<<<
 *                     self.rtype  = self.stype
 *                 else:
 */
        __pyx_v_self->rcount = __pyx_v_self->scount;

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":325
 *                     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*/ {

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":327
 *                     self.rtype  = self.stype
 *                 else:
 *                     self.for_cco_recv(0, rmsg, root, 0)             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_send(v, smsg, null, 0)
 */
        /* __pyx_t_3 allocated */
        __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        /* __pyx_t_3 released */
      }
      __pyx_L6:;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":329
 *                     self.for_cco_recv(0, rmsg, root, 0)
 *             else:
 *                 self.for_cco_send(v, smsg, null, 0)             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(0, rmsg, root, 0)
 *         else: # inter-communication
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":330
 *             else:
 *                 self.for_cco_send(v, smsg, null, 0)
 *                 self.for_cco_recv(0, rmsg, root, 0)             # <<<<<<<<<<<<<<
 *         else: # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":332
 *                 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 allocated */
    __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[5]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":333
 *         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)
 */
    if (!(__pyx_v_root == ((int)MPI_ROOT))) {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":334
 *             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_1 allocated */
      __pyx_t_1 = (__pyx_v_root == ((int)MPI_PROC_NULL));
    } else {
      __pyx_t_1 = (__pyx_v_root == ((int)MPI_ROOT));
    }
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":335
 *             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_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":336
 *                 (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, 0)
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
      goto __pyx_L7;
    }
    /*else*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":338
 *                 self.for_cco_recv(0, rmsg, null,  0)
 *             else:
 *                 self.for_cco_send(v, smsg, null, 0)             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(0, rmsg, root, 0)
 * 
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":339
 *             else:
 *                 self.for_cco_send(v, smsg, null, 0)
 *                 self.for_cco_recv(0, rmsg, root, 0)             # <<<<<<<<<<<<<<
 * 
 *     # allgather/allgatherv
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
    }
    __pyx_L7:;
  }
  __pyx_L4:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_scatter");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":342
 * 
 *     # allgather/allgatherv
 *     cdef for_allgather(self, int v,             # <<<<<<<<<<<<<<
 *                        object smsg, object rmsg,
 *                        MPI_Comm comm):
 */

static  PyObject *__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;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("for_allgather");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":345
 *                        object smsg, object rmsg,
 *                        MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":346
 *                        MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":347
 *         if comm == MPI_COMM_NULL: return
 *         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 allocated */
  __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[5]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":348
 *         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 allocated */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":349
 *         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 allocated */
    __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[5]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":351
 *             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 allocated */
    __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[5]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":353
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)             # <<<<<<<<<<<<<<
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf   = MPI_IN_PLACE
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":354
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount
 */
  if ((!__pyx_v_inter)) {
    /* __pyx_t_1 allocated */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg);
  } else {
    __pyx_t_1 = (!__pyx_v_inter);
  }
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":355
 *         self.for_cco_recv(v, rmsg, 0, size)
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf   = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *             self.scount = self.rcount
 *             self.stype  = self.rtype
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":356
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount             # <<<<<<<<<<<<<<
 *             self.stype  = self.rtype
 *         else:
 */
    __pyx_v_self->scount = __pyx_v_self->rcount;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":357
 *             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*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":359
 *             self.stype  = self.rtype
 *         else:
 *             self.for_cco_send(0, smsg, 0, 0)             # <<<<<<<<<<<<<<
 * 
 *     # alltoall/alltoallv
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_allgather");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":362
 * 
 *     # alltoall/alltoallv
 *     cdef for_alltoall(self, int v,             # <<<<<<<<<<<<<<
 *                       object smsg, object rmsg,
 *                       MPI_Comm comm):
 */

static  PyObject *__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;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("for_alltoall");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":365
 *                       object smsg, object rmsg,
 *                       MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":366
 *                       MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":367
 *         if comm == MPI_COMM_NULL: return
 *         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 allocated */
  __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[5]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":368
 *         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 allocated */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":369
 *         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 allocated */
    __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[5]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":371
 *             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 allocated */
    __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[5]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":373
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)             # <<<<<<<<<<<<<<
 *         self.for_cco_send(v, smsg, 0, size)
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":374
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)
 *         self.for_cco_send(v, smsg, 0, size)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_alltoall");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":381
 * 
 *     # sendbuf
 *     cdef for_cro_send(self, object amsg, int root):             # <<<<<<<<<<<<<<
 *         self._smsg = message_simple(1, amsg, # readonly
 *                                     root, 0,
 */

static  PyObject *__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) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("for_cro_send");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":386
 *                                     &self.sbuf,
 *                                     &self.scount,
 *                                     &self.stype)             # <<<<<<<<<<<<<<
 *     # recvbuf
 *     cdef for_cro_recv(self, object amsg, int root):
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_message_simple(1, __pyx_v_amsg, __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[5]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":382
 *     # sendbuf
 *     cdef for_cro_send(self, object amsg, int root):
 *         self._smsg = message_simple(1, amsg, # 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;
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_cro_send");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":388
 *                                     &self.stype)
 *     # recvbuf
 *     cdef for_cro_recv(self, object amsg, int root):             # <<<<<<<<<<<<<<
 *         self._rmsg = message_simple(0, amsg, # writable
 *                                     root, 0,
 */

static  PyObject *__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) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("for_cro_recv");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":393
 *                                     &self.rbuf,
 *                                     &self.rcount,
 *                                     &self.rtype)             # <<<<<<<<<<<<<<
 * 
 *     cdef for_reduce(self, object smsg, object rmsg,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_message_simple(0, __pyx_v_amsg, __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[5]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":389
 *     # recvbuf
 *     cdef for_cro_recv(self, object amsg, int root):
 *         self._rmsg = message_simple(0, amsg, # 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;
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_cro_recv");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":395
 *                                     &self.rtype)
 * 
 *     cdef for_reduce(self, object smsg, object rmsg,             # <<<<<<<<<<<<<<
 *                     int root, MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return
 */

static  PyObject *__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;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("for_reduce");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":397
 *     cdef for_reduce(self, object smsg, object rmsg,
 *                     int root, MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return             # <<<<<<<<<<<<<<
 *         cdef int inter=0, rank=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":398
 *                     int root, MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return
 *         cdef int inter=0, rank=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_rank = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":399
 *         if comm == MPI_COMM_NULL: return
 *         cdef int inter=0, rank=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter: # intra-communication
 *             self.for_cro_recv(rmsg, root)
 */
  /* __pyx_t_2 allocated */
  __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[5]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":400
 *         cdef int inter=0, rank=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication             # <<<<<<<<<<<<<<
 *             self.for_cro_recv(rmsg, root)
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_v_inter);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":401
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter: # intra-communication
 *             self.for_cro_recv(rmsg, root)             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank and is_IN_PLACE(smsg):
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":402
 *         if not inter: # intra-communication
 *             self.for_cro_recv(rmsg, root)
 *             CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *             if root == rank and is_IN_PLACE(smsg):
 *                 self.sbuf   = MPI_IN_PLACE
 */
    /* __pyx_t_2 allocated */
    __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[5]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":403
 *             self.for_cro_recv(rmsg, root)
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *                 self.sbuf   = MPI_IN_PLACE
 *                 self.scount = self.rcount
 */
    if ((__pyx_v_root == __pyx_v_rank)) {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg);
    } else {
      __pyx_t_1 = (__pyx_v_root == __pyx_v_rank);
    }
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":404
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank and is_IN_PLACE(smsg):
 *                 self.sbuf   = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *                 self.scount = self.rcount
 *                 self.stype  = self.rtype
 */
      __pyx_v_self->sbuf = MPI_IN_PLACE;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":405
 *             if root == rank and is_IN_PLACE(smsg):
 *                 self.sbuf   = MPI_IN_PLACE
 *                 self.scount = self.rcount             # <<<<<<<<<<<<<<
 *                 self.stype  = self.rtype
 *             else:
 */
      __pyx_v_self->scount = __pyx_v_self->rcount;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":406
 *                 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_L5;
    }
    /*else*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":408
 *                 self.stype  = self.rtype
 *             else:
 *                 self.for_cro_send(smsg, root)             # <<<<<<<<<<<<<<
 *         else: # inter-communication
 *             if ((root == <int>MPI_ROOT) or
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":410
 *                 self.for_cro_send(smsg, root)
 *         else: # inter-communication
 *             if ((root == <int>MPI_ROOT) or             # <<<<<<<<<<<<<<
 *                 (root == <int>MPI_PROC_NULL)):
 *                 self.for_cro_recv(rmsg, root)
 */
    if (!(__pyx_v_root == ((int)MPI_ROOT))) {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":411
 *         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_1 allocated */
      __pyx_t_1 = (__pyx_v_root == ((int)MPI_PROC_NULL));
    } else {
      __pyx_t_1 = (__pyx_v_root == ((int)MPI_ROOT));
    }
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":412
 *             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_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":413
 *                 (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;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":414
 *                 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_L6;
    }
    /*else*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":416
 *                 self.stype  = self.rtype
 *             else:
 *                 self.for_cro_send(smsg, root)             # <<<<<<<<<<<<<<
 *                 self.rcount = self.scount
 *                 self.rtype  = self.stype
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":417
 *             else:
 *                 self.for_cro_send(smsg, root)
 *                 self.rcount = self.scount             # <<<<<<<<<<<<<<
 *                 self.rtype  = self.stype
 * 
 */
      __pyx_v_self->rcount = __pyx_v_self->scount;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":418
 *                 self.for_cro_send(smsg, root)
 *                 self.rcount = self.scount
 *                 self.rtype  = self.stype             # <<<<<<<<<<<<<<
 * 
 *     cdef for_allreduce(self, object smsg, object rmsg,
 */
      __pyx_v_self->rtype = __pyx_v_self->stype;
    }
    __pyx_L6:;
  }
  __pyx_L4:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_reduce");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":420
 *                 self.rtype  = self.stype
 * 
 *     cdef for_allreduce(self, object smsg, object rmsg,             # <<<<<<<<<<<<<<
 *                        MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return
 */

static  PyObject *__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;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("for_allreduce");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":422
 *     cdef for_allreduce(self, object smsg, object rmsg,
 *                        MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return             # <<<<<<<<<<<<<<
 *         cdef int inter=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":423
 *                        MPI_Comm comm):
 *         if comm == MPI_COMM_NULL: return
 *         cdef int inter=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         #
 */
  __pyx_v_inter = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":424
 *         if comm == MPI_COMM_NULL: return
 *         cdef int inter=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         #
 *         self.for_cro_recv(rmsg, 0)
 */
  /* __pyx_t_2 allocated */
  __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[5]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":426
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         #
 *         self.for_cro_recv(rmsg, 0)             # <<<<<<<<<<<<<<
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf   = MPI_IN_PLACE
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":427
 *         #
 *         self.for_cro_recv(rmsg, 0)
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount
 */
  if ((!__pyx_v_inter)) {
    /* __pyx_t_1 allocated */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg);
  } else {
    __pyx_t_1 = (!__pyx_v_inter);
  }
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":428
 *         self.for_cro_recv(rmsg, 0)
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf   = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *             self.scount = self.rcount
 *             self.stype  = self.rtype
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":429
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount             # <<<<<<<<<<<<<<
 *             self.stype  = self.rtype
 *         else:
 */
    __pyx_v_self->scount = __pyx_v_self->rcount;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":430
 *             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*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":432
 *             self.stype  = self.rtype
 *         else:
 *             self.for_cro_send(smsg, 0)             # <<<<<<<<<<<<<<
 *             assert self.scount == self.rcount
 *             assert self.stype  == self.rtype
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = ((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_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":433
 *         else:
 *             self.for_cro_send(smsg, 0)
 *             assert self.scount == self.rcount             # <<<<<<<<<<<<<<
 *             assert self.stype  == self.rtype
 * 
 */
    #ifndef PYREX_WITHOUT_ASSERTIONS
    if (unlikely(!(__pyx_v_self->scount == __pyx_v_self->rcount))) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":434
 *             self.for_cro_send(smsg, 0)
 *             assert self.scount == self.rcount
 *             assert self.stype  == self.rtype             # <<<<<<<<<<<<<<
 * 
 *     cdef for_scan(self, object smsg, object rmsg,
 */
    #ifndef PYREX_WITHOUT_ASSERTIONS
    if (unlikely(!(__pyx_v_self->stype == __pyx_v_self->rtype))) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
  }
  __pyx_L4:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_allreduce");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":436
 *             assert self.stype  == self.rtype
 * 
 *     cdef for_scan(self, object smsg, object rmsg,             # <<<<<<<<<<<<<<
 *                   MPI_Comm comm):
 *         self.for_cro_recv(rmsg, 0)
 */

static  PyObject *__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) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("for_scan");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":438
 *     cdef for_scan(self, object smsg, object rmsg,
 *                   MPI_Comm comm):
 *         self.for_cro_recv(rmsg, 0)             # <<<<<<<<<<<<<<
 *         if is_IN_PLACE(smsg):
 *             self.sbuf   = MPI_IN_PLACE
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((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_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":439
 *                   MPI_Comm comm):
 *         self.for_cro_recv(rmsg, 0)
 *         if is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":440
 *         self.for_cro_recv(rmsg, 0)
 *         if is_IN_PLACE(smsg):
 *             self.sbuf   = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *             self.scount = self.rcount
 *             self.stype  = self.rtype
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":441
 *         if is_IN_PLACE(smsg):
 *             self.sbuf   = MPI_IN_PLACE
 *             self.scount = self.rcount             # <<<<<<<<<<<<<<
 *             self.stype  = self.rtype
 *         else:
 */
    __pyx_v_self->scount = __pyx_v_self->rcount;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":442
 *             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_L3;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":444
 *             self.stype  = self.rtype
 *         else:
 *             self.for_cro_send(smsg, 0)             # <<<<<<<<<<<<<<
 *             assert self.scount == self.rcount
 *             assert self.stype  == self.rtype
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((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_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":445
 *         else:
 *             self.for_cro_send(smsg, 0)
 *             assert self.scount == self.rcount             # <<<<<<<<<<<<<<
 *             assert self.stype  == self.rtype
 * 
 */
    #ifndef PYREX_WITHOUT_ASSERTIONS
    if (unlikely(!(__pyx_v_self->scount == __pyx_v_self->rcount))) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":446
 *             self.for_cro_send(smsg, 0)
 *             assert self.scount == self.rcount
 *             assert self.stype  == self.rtype             # <<<<<<<<<<<<<<
 * 
 *     cdef for_exscan(self, object smsg, object rmsg,
 */
    #ifndef PYREX_WITHOUT_ASSERTIONS
    if (unlikely(!(__pyx_v_self->stype == __pyx_v_self->rtype))) {
      PyErr_SetNone(PyExc_AssertionError);
      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_scan");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":448
 *             assert self.stype  == self.rtype
 * 
 *     cdef for_exscan(self, object smsg, object rmsg,             # <<<<<<<<<<<<<<
 *                     MPI_Comm comm):
 *         self.for_cro_recv(rmsg, 0)
 */

static  PyObject *__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) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("for_exscan");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":450
 *     cdef for_exscan(self, object smsg, object rmsg,
 *                     MPI_Comm comm):
 *         self.for_cro_recv(rmsg, 0)             # <<<<<<<<<<<<<<
 *         self.for_cro_send(smsg, 0)
 *         assert self.scount == self.rcount
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((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_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":451
 *                     MPI_Comm comm):
 *         self.for_cro_recv(rmsg, 0)
 *         self.for_cro_send(smsg, 0)             # <<<<<<<<<<<<<<
 *         assert self.scount == self.rcount
 *         assert self.stype  == self.rtype
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((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_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":452
 *         self.for_cro_recv(rmsg, 0)
 *         self.for_cro_send(smsg, 0)
 *         assert self.scount == self.rcount             # <<<<<<<<<<<<<<
 *         assert self.stype  == self.rtype
 * 
 */
  #ifndef PYREX_WITHOUT_ASSERTIONS
  if (unlikely(!(__pyx_v_self->scount == __pyx_v_self->rcount))) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[5]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":453
 *         self.for_cro_send(smsg, 0)
 *         assert self.scount == self.rcount
 *         assert self.stype  == self.rtype             # <<<<<<<<<<<<<<
 * 
 * 
 */
  #ifndef PYREX_WITHOUT_ASSERTIONS
  if (unlikely(!(__pyx_v_self->stype == __pyx_v_self->rtype))) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[5]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_exscan");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":456
 * 
 * 
 * cdef inline _p_msg_cco message_cco():             # <<<<<<<<<<<<<<
 *     cdef _p_msg_cco msg = <_p_msg_cco>_p_msg_cco()
 *     return msg
 */

static 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;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("message_cco");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":457
 * 
 * cdef inline _p_msg_cco message_cco():
 *     cdef _p_msg_cco msg = <_p_msg_cco>_p_msg_cco()             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_cco)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 457; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":458
 * cdef inline _p_msg_cco message_cco():
 *     cdef _p_msg_cco msg = <_p_msg_cco>_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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":476
 *     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_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":477
 * 
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":478
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":479
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":480
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":481
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":482
 *         self.tdisp  = 0
 *         self.tcount = 0
 *         self.ttype  = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef for_rma(self, int readonly, object origin,
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_v_self)->ttype = MPI_DATATYPE_NULL;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":484
 *         self.ttype  = MPI_DATATYPE_NULL
 * 
 *     cdef for_rma(self, int readonly, object origin,             # <<<<<<<<<<<<<<
 *                  int rank, object target):
 *         # check arguments
 */

static  PyObject *__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) {
  Py_ssize_t __pyx_v_no;
  Py_ssize_t __pyx_v_nt;
  void *__pyx_v_oaddr;
  int __pyx_v_ocount;
  MPI_Datatype __pyx_v_otype;
  MPI_Aint __pyx_v_tdisp;
  int __pyx_v_tcount;
  MPI_Datatype __pyx_v_ttype;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  MPI_Aint __pyx_t_5;
  int __pyx_t_6;
  __Pyx_SetupRefcountContext("for_rma");
  __Pyx_INCREF(__pyx_v_origin);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":487
 *                  int rank, object target):
 *         # check arguments
 *         cdef Py_ssize_t no = 0, nt = 0             # <<<<<<<<<<<<<<
 *         if origin is not None:
 *             if not is_list(origin) and not is_tuple(origin):
 */
  __pyx_v_no = 0;
  __pyx_v_nt = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":488
 *         # check arguments
 *         cdef Py_ssize_t no = 0, nt = 0
 *         if origin is not None:             # <<<<<<<<<<<<<<
 *             if not is_list(origin) and not is_tuple(origin):
 *                 raise ValueError(mpistr("origin: expecting a list or tuple"))
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_origin != Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":489
 *         cdef Py_ssize_t no = 0, nt = 0
 *         if origin is not None:
 *             if not is_list(origin) and not is_tuple(origin):             # <<<<<<<<<<<<<<
 *                 raise ValueError(mpistr("origin: expecting a list or tuple"))
 *             no = len(origin)
 */
    if ((!PyList_CheckExact(__pyx_v_origin))) {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = (!PyTuple_CheckExact(__pyx_v_origin));
    } else {
      __pyx_t_1 = (!PyList_CheckExact(__pyx_v_origin));
    }
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":490
 *         if origin is not None:
 *             if not is_list(origin) and not is_tuple(origin):
 *                 raise ValueError(mpistr("origin: expecting a list or tuple"))             # <<<<<<<<<<<<<<
 *             no = len(origin)
 *             if no < 2 or no > 3:
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_123); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 490; __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 released */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
      __Pyx_Raise(__pyx_t_2, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":491
 *             if not is_list(origin) and not is_tuple(origin):
 *                 raise ValueError(mpistr("origin: expecting a list or tuple"))
 *             no = len(origin)             # <<<<<<<<<<<<<<
 *             if no < 2 or no > 3:
 *                 raise ValueError(mpistr("origin: expecting 2 or 3 items"))
 */
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyObject_Length(__pyx_v_origin); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_no = __pyx_t_4;
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":492
 *                 raise ValueError(mpistr("origin: expecting a list or tuple"))
 *             no = len(origin)
 *             if no < 2 or no > 3:             # <<<<<<<<<<<<<<
 *                 raise ValueError(mpistr("origin: expecting 2 or 3 items"))
 *         if target is not None:
 */
    if (!(__pyx_v_no < 2)) {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = (__pyx_v_no > 3);
    } else {
      __pyx_t_1 = (__pyx_v_no < 2);
    }
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":493
 *             no = len(origin)
 *             if no < 2 or no > 3:
 *                 raise ValueError(mpistr("origin: expecting 2 or 3 items"))             # <<<<<<<<<<<<<<
 *         if target is not None:
 *             if not is_list(target) and not is_tuple(target):
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_124); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 493; __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 released */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
      __Pyx_Raise(__pyx_t_2, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":494
 *             if no < 2 or no > 3:
 *                 raise ValueError(mpistr("origin: expecting 2 or 3 items"))
 *         if target is not None:             # <<<<<<<<<<<<<<
 *             if not is_list(target) and not is_tuple(target):
 *                 raise ValueError(mpistr("target: expecting a list or tuple"))
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_target != Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":495
 *                 raise ValueError(mpistr("origin: expecting 2 or 3 items"))
 *         if target is not None:
 *             if not is_list(target) and not is_tuple(target):             # <<<<<<<<<<<<<<
 *                 raise ValueError(mpistr("target: expecting a list or tuple"))
 *             nt = len(target)
 */
    if ((!PyList_CheckExact(__pyx_v_target))) {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = (!PyTuple_CheckExact(__pyx_v_target));
    } else {
      __pyx_t_1 = (!PyList_CheckExact(__pyx_v_target));
    }
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":496
 *         if target is not None:
 *             if not is_list(target) and not is_tuple(target):
 *                 raise ValueError(mpistr("target: expecting a list or tuple"))             # <<<<<<<<<<<<<<
 *             nt = len(target)
 *             if nt > 3:
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_125); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 496; __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 released */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
      __Pyx_Raise(__pyx_t_2, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":497
 *             if not is_list(target) and not is_tuple(target):
 *                 raise ValueError(mpistr("target: expecting a list or tuple"))
 *             nt = len(target)             # <<<<<<<<<<<<<<
 *             if nt > 3:
 *                 raise ValueError(mpistr("target: expecting at most 3 items"))
 */
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyObject_Length(__pyx_v_target); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_nt = __pyx_t_4;
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":498
 *                 raise ValueError(mpistr("target: expecting a list or tuple"))
 *             nt = len(target)
 *             if nt > 3:             # <<<<<<<<<<<<<<
 *                 raise ValueError(mpistr("target: expecting at most 3 items"))
 *         # ORIGIN
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = (__pyx_v_nt > 3);
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":499
 *             nt = len(target)
 *             if nt > 3:
 *                 raise ValueError(mpistr("target: expecting at most 3 items"))             # <<<<<<<<<<<<<<
 *         # ORIGIN
 *         cdef void *oaddr = NULL
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_126); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 499; __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 released */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
      __Pyx_Raise(__pyx_t_2, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      {__pyx_filename = __pyx_f[5]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L8;
    }
    __pyx_L8:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":501
 *                 raise ValueError(mpistr("target: expecting at most 3 items"))
 *         # ORIGIN
 *         cdef void *oaddr = NULL             # <<<<<<<<<<<<<<
 *         cdef int ocount = 0
 *         cdef MPI_Datatype otype = MPI_DATATYPE_NULL
 */
  __pyx_v_oaddr = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":502
 *         # ORIGIN
 *         cdef void *oaddr = NULL
 *         cdef int ocount = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype otype = MPI_DATATYPE_NULL
 *         origin = message_simple(readonly, origin, rank, 0,
 */
  __pyx_v_ocount = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":503
 *         cdef void *oaddr = NULL
 *         cdef int ocount = 0
 *         cdef MPI_Datatype otype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *         origin = message_simple(readonly, origin, rank, 0,
 *                                 &oaddr, &ocount, &otype)
 */
  __pyx_v_otype = MPI_DATATYPE_NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":505
 *         cdef MPI_Datatype otype = MPI_DATATYPE_NULL
 *         origin = message_simple(readonly, origin, rank, 0,
 *                                 &oaddr, &ocount, &otype)             # <<<<<<<<<<<<<<
 *         # TARGET
 *         cdef MPI_Aint     tdisp  = 0
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_readonly, __pyx_v_origin, __pyx_v_rank, 0, (&__pyx_v_oaddr), (&__pyx_v_ocount), (&__pyx_v_otype)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_origin);
  __pyx_v_origin = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":507
 *                                 &oaddr, &ocount, &otype)
 *         # TARGET
 *         cdef MPI_Aint     tdisp  = 0             # <<<<<<<<<<<<<<
 *         cdef int          tcount = ocount
 *         cdef MPI_Datatype ttype  = otype
 */
  __pyx_v_tdisp = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":508
 *         # TARGET
 *         cdef MPI_Aint     tdisp  = 0
 *         cdef int          tcount = ocount             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype ttype  = otype
 *         if nt > 0:
 */
  __pyx_v_tcount = __pyx_v_ocount;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":509
 *         cdef MPI_Aint     tdisp  = 0
 *         cdef int          tcount = ocount
 *         cdef MPI_Datatype ttype  = otype             # <<<<<<<<<<<<<<
 *         if nt > 0:
 *             tdisp  = <MPI_Aint>target[0]
 */
  __pyx_v_ttype = __pyx_v_otype;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":510
 *         cdef int          tcount = ocount
 *         cdef MPI_Datatype ttype  = otype
 *         if nt > 0:             # <<<<<<<<<<<<<<
 *             tdisp  = <MPI_Aint>target[0]
 *         if nt > 1:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_nt > 0);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":511
 *         cdef MPI_Datatype ttype  = otype
 *         if nt > 0:
 *             tdisp  = <MPI_Aint>target[0]             # <<<<<<<<<<<<<<
 *         if nt > 1:
 *             tcount = <int>target[1]
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_target, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    /* __pyx_t_5 allocated */
    __pyx_t_5 = __pyx_PyInt_long(__pyx_1); if (unlikely((__pyx_t_5 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    __pyx_v_tdisp = ((MPI_Aint)__pyx_t_5);
    /* __pyx_t_5 released */
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":512
 *         if nt > 0:
 *             tdisp  = <MPI_Aint>target[0]
 *         if nt > 1:             # <<<<<<<<<<<<<<
 *             tcount = <int>target[1]
 *         if nt > 2:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_nt > 1);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":513
 *             tdisp  = <MPI_Aint>target[0]
 *         if nt > 1:
 *             tcount = <int>target[1]             # <<<<<<<<<<<<<<
 *         if nt > 2:
 *             ttype  = (<Datatype?>target[2]).ob_mpi
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_target, 1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = __pyx_PyInt_int(__pyx_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    __pyx_v_tcount = ((int)__pyx_t_6);
    /* __pyx_t_6 released */
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":514
 *         if nt > 1:
 *             tcount = <int>target[1]
 *         if nt > 2:             # <<<<<<<<<<<<<<
 *             ttype  = (<Datatype?>target[2]).ob_mpi
 *         # save collected data
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_nt > 2);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":515
 *             tcount = <int>target[1]
 *         if nt > 2:
 *             ttype  = (<Datatype?>target[2]).ob_mpi             # <<<<<<<<<<<<<<
 *         # save collected data
 *         self.oaddr  = oaddr
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_target, 2, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    if (!(__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_ttype = ((PyMPIDatatypeObject *)__pyx_1)->ob_mpi;
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":517
 *             ttype  = (<Datatype?>target[2]).ob_mpi
 *         # save collected data
 *         self.oaddr  = oaddr             # <<<<<<<<<<<<<<
 *         self.ocount = ocount
 *         self.otype  = otype
 */
  __pyx_v_self->oaddr = __pyx_v_oaddr;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":518
 *         # save collected data
 *         self.oaddr  = oaddr
 *         self.ocount = ocount             # <<<<<<<<<<<<<<
 *         self.otype  = otype
 *         self.tdisp  = tdisp
 */
  __pyx_v_self->ocount = __pyx_v_ocount;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":519
 *         self.oaddr  = oaddr
 *         self.ocount = ocount
 *         self.otype  = otype             # <<<<<<<<<<<<<<
 *         self.tdisp  = tdisp
 *         self.tcount = tcount
 */
  __pyx_v_self->otype = __pyx_v_otype;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":520
 *         self.ocount = ocount
 *         self.otype  = otype
 *         self.tdisp  = tdisp             # <<<<<<<<<<<<<<
 *         self.tcount = tcount
 *         self.ttype  = ttype
 */
  __pyx_v_self->tdisp = __pyx_v_tdisp;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":521
 *         self.otype  = otype
 *         self.tdisp  = tdisp
 *         self.tcount = tcount             # <<<<<<<<<<<<<<
 *         self.ttype  = ttype
 *         self._origin = origin
 */
  __pyx_v_self->tcount = __pyx_v_tcount;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":522
 *         self.tdisp  = tdisp
 *         self.tcount = tcount
 *         self.ttype  = ttype             # <<<<<<<<<<<<<<
 *         self._origin = origin
 *         self._target = target
 */
  __pyx_v_self->ttype = __pyx_v_ttype;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":523
 *         self.tcount = tcount
 *         self.ttype  = ttype
 *         self._origin = origin             # <<<<<<<<<<<<<<
 *         self._target = target
 * 
 */
  __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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":524
 *         self.ttype  = ttype
 *         self._origin = origin
 *         self._target = target             # <<<<<<<<<<<<<<
 * 
 *     cdef for_put(self, object origin, int rank, object target):
 */
  __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;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_rma");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_origin);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":526
 *         self._target = target
 * 
 *     cdef for_put(self, object origin, int rank, object target):             # <<<<<<<<<<<<<<
 *         self.for_rma(1, origin, rank, target)
 * 
 */

static  PyObject *__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) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("for_put");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":527
 * 
 *     cdef for_put(self, object origin, int rank, object target):
 *         self.for_rma(1, origin, rank, target)             # <<<<<<<<<<<<<<
 * 
 *     cdef for_get(self, object origin, int rank, object target):
 */
  /* __pyx_t_1 allocated */
  __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)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_put");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":529
 *         self.for_rma(1, origin, rank, target)
 * 
 *     cdef for_get(self, object origin, int rank, object target):             # <<<<<<<<<<<<<<
 *         self.for_rma(0, origin, rank, target)
 * 
 */

static  PyObject *__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) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("for_get");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":530
 * 
 *     cdef for_get(self, object origin, int rank, object target):
 *         self.for_rma(0, origin, rank, target)             # <<<<<<<<<<<<<<
 * 
 *     cdef for_acc(self, object origin, int rank, object target):
 */
  /* __pyx_t_1 allocated */
  __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)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_get");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":532
 *         self.for_rma(0, origin, rank, target)
 * 
 *     cdef for_acc(self, object origin, int rank, object target):             # <<<<<<<<<<<<<<
 *         self.for_rma(1, origin, rank, target)
 * 
 */

static  PyObject *__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) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("for_acc");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":533
 * 
 *     cdef for_acc(self, object origin, int rank, object target):
 *         self.for_rma(1, origin, rank, target)             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_rma message_rma_put(object origin, int rank, object target):
 */
  /* __pyx_t_1 allocated */
  __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)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_acc");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":535
 *         self.for_rma(1, origin, rank, target)
 * 
 * cdef inline _p_msg_rma message_rma_put(object origin, int rank, object target):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma()
 *     msg.for_put(origin, rank, target)
 */

static INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_f_6mpi4py_3MPI_message_rma_put(PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("message_rma_put");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":536
 * 
 * cdef inline _p_msg_rma message_rma_put(object origin, int rank, object target):
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma()             # <<<<<<<<<<<<<<
 *     msg.for_put(origin, rank, target)
 *     return msg
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_rma)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 536; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":537
 * cdef inline _p_msg_rma message_rma_put(object origin, int rank, object target):
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma()
 *     msg.for_put(origin, rank, target)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma *)__pyx_v_msg->__pyx_vtab)->for_put(__pyx_v_msg, __pyx_v_origin, __pyx_v_rank, __pyx_v_target); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":538
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma()
 *     msg.for_put(origin, rank, target)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_rma message_rma_get(object origin, int rank, object target):
 */
  __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_put");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":540
 *     return msg
 * 
 * cdef inline _p_msg_rma message_rma_get(object origin, int rank, object target):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma()
 *     msg.for_get(origin, rank, target)
 */

static INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_f_6mpi4py_3MPI_message_rma_get(PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("message_rma_get");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":541
 * 
 * cdef inline _p_msg_rma message_rma_get(object origin, int rank, object target):
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma()             # <<<<<<<<<<<<<<
 *     msg.for_get(origin, rank, target)
 *     return msg
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_rma)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 541; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":542
 * cdef inline _p_msg_rma message_rma_get(object origin, int rank, object target):
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma()
 *     msg.for_get(origin, rank, target)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma *)__pyx_v_msg->__pyx_vtab)->for_get(__pyx_v_msg, __pyx_v_origin, __pyx_v_rank, __pyx_v_target); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":543
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma()
 *     msg.for_get(origin, rank, target)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_rma message_rma_acc(object origin, int rank, object target):
 */
  __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_get");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":545
 *     return msg
 * 
 * cdef inline _p_msg_rma message_rma_acc(object origin, int rank, object target):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma()
 *     msg.for_acc(origin, rank, target)
 */

static INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_f_6mpi4py_3MPI_message_rma_acc(PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("message_rma_acc");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":546
 * 
 * cdef inline _p_msg_rma message_rma_acc(object origin, int rank, object target):
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma()             # <<<<<<<<<<<<<<
 *     msg.for_acc(origin, rank, target)
 *     return msg
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_rma)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 546; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":547
 * cdef inline _p_msg_rma message_rma_acc(object origin, int rank, object target):
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma()
 *     msg.for_acc(origin, rank, target)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma *)__pyx_v_msg->__pyx_vtab)->for_acc(__pyx_v_msg, __pyx_v_origin, __pyx_v_rank, __pyx_v_target); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":548
 *     cdef _p_msg_rma msg = <_p_msg_rma>_p_msg_rma()
 *     msg.for_acc(origin, rank, target)
 *     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_acc");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":561
 *     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_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":562
 * 
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":563
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":564
 *         self.buf   = NULL
 *         self.count = 0
 *         self.dtype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef for_read(self, msg):
 */
  ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_v_self)->dtype = MPI_DATATYPE_NULL;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":566
 *         self.dtype = MPI_DATATYPE_NULL
 * 
 *     cdef for_read(self, msg):             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(0, msg, # writable
 *                                    0, 0,
 */

static  PyObject *__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) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("for_read");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":571
 *                                    &self.buf,
 *                                    &self.count,
 *                                    &self.dtype)             # <<<<<<<<<<<<<<
 * 
 *     cdef for_write(self, msg):
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_message_simple(0, __pyx_v_msg, 0, 0, (&__pyx_v_self->buf), (&__pyx_v_self->count), (&__pyx_v_self->dtype)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":567
 * 
 *     cdef for_read(self, msg):
 *         self._msg = message_simple(0, msg, # 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;
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_io.for_read");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":573
 *                                    &self.dtype)
 * 
 *     cdef for_write(self, msg):             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(1, msg,# readonly
 *                                    0, 0,
 */

static  PyObject *__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) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("for_write");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":578
 *                                    &self.buf,
 *                                    &self.count,
 *                                    &self.dtype)             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_io message_io_read(object buf):
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_message_simple(1, __pyx_v_msg, 0, 0, (&__pyx_v_self->buf), (&__pyx_v_self->count), (&__pyx_v_self->dtype)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":574
 * 
 *     cdef for_write(self, msg):
 *         self._msg = message_simple(1, msg,# 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;
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_io.for_write");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":580
 *                                    &self.dtype)
 * 
 * cdef inline _p_msg_io message_io_read(object buf):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io()
 *     msg.for_read(buf)
 */

static 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;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("message_io_read");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":581
 * 
 * cdef inline _p_msg_io message_io_read(object buf):
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io()             # <<<<<<<<<<<<<<
 *     msg.for_read(buf)
 *     return msg
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_io)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 581; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":582
 * cdef inline _p_msg_io message_io_read(object buf):
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io()
 *     msg.for_read(buf)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((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_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":583
 *     cdef _p_msg_io msg = <_p_msg_io>_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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":585
 *     return msg
 * 
 * cdef inline _p_msg_io message_io_write(object buf):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io()
 *     msg.for_write(buf)
 */

static 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;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("message_io_write");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":586
 * 
 * cdef inline _p_msg_io message_io_write(object buf):
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io()             # <<<<<<<<<<<<<<
 *     msg.for_write(buf)
 *     return msg
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_msg_io)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 586; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":587
 * cdef inline _p_msg_io message_io_write(object buf):
 *     cdef _p_msg_io msg = <_p_msg_io>_p_msg_io()
 *     msg.for_write(buf)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((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_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":588
 *     cdef _p_msg_io msg = <_p_msg_io>_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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":23
 *     from pickle import HIGHEST_PROTOCOL as _Pickle_PROTOCOL
 * 
 * cdef inline object PyMPI_Dump(object obj):             # <<<<<<<<<<<<<<
 *     return _Pickle_dumps(obj, _Pickle_PROTOCOL)
 * 
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_Dump(PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("PyMPI_Dump");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":24
 * 
 * cdef inline object PyMPI_Dump(object obj):
 *     return _Pickle_dumps(obj, _Pickle_PROTOCOL)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyMPI_Load(object obj):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_obj);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_obj);
  __Pyx_GIVEREF(__pyx_v_obj);
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_v_6mpi4py_3MPI__Pickle_dumps, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 24; __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 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_Dump");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":26
 *     return _Pickle_dumps(obj, _Pickle_PROTOCOL)
 * 
 * cdef inline object PyMPI_Load(object obj):             # <<<<<<<<<<<<<<
 *     return _Pickle_loads(obj)
 * 
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_Load(PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("PyMPI_Load");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":27
 * 
 * cdef inline object PyMPI_Load(object obj):
 *     return _Pickle_loads(obj)             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_obj);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_obj);
  __Pyx_GIVEREF(__pyx_v_obj);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_v_6mpi4py_3MPI__Pickle_loads, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __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 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_Load");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":31
 * # --------------------------------------------------------------------
 * 
 * cdef inline object _py_reduce(object op, object seq):             # <<<<<<<<<<<<<<
 *     if seq is None: return None
 *     cdef int i=0, n=len(seq)
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_reduce(PyObject *__pyx_v_op, PyObject *__pyx_v_seq) {
  int __pyx_v_i;
  int __pyx_v_n;
  PyObject *__pyx_v_res;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  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;
  __Pyx_SetupRefcountContext("_py_reduce");
  __Pyx_INCREF(__pyx_v_seq);
  __pyx_v_res = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":32
 * 
 * cdef inline object _py_reduce(object op, object seq):
 *     if seq is None: return None             # <<<<<<<<<<<<<<
 *     cdef int i=0, n=len(seq)
 *     if op is __MAXLOC__ or op is __MINLOC__:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_seq == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":33
 * cdef inline object _py_reduce(object op, object seq):
 *     if seq is None: return None
 *     cdef int i=0, n=len(seq)             # <<<<<<<<<<<<<<
 *     if op is __MAXLOC__ or op is __MINLOC__:
 *         seq = list(zip(seq, range(n)))
 */
  __pyx_v_i = 0;
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Length(__pyx_v_seq); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_2;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":34
 *     if seq is None: return None
 *     cdef int i=0, n=len(seq)
 *     if op is __MAXLOC__ or op is __MINLOC__:             # <<<<<<<<<<<<<<
 *         seq = list(zip(seq, range(n)))
 *     res = seq[0]
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_op == ((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__));
  if (!__pyx_t_1) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = (__pyx_v_op == ((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__));
    /* __pyx_t_4 allocated */
    __pyx_t_4 = __pyx_t_3;
    /* __pyx_t_3 released */
  } else {
    __pyx_t_4 = __pyx_t_1;
    /* __pyx_t_1 released */
  }
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":35
 *     cdef int i=0, n=len(seq)
 *     if op is __MAXLOC__ or op is __MINLOC__:
 *         seq = list(zip(seq, range(n)))             # <<<<<<<<<<<<<<
 *     res = seq[0]
 *     for i from 1 <= i < n:
 */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyInt_FromLong(__pyx_v_n); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 35; __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_t_5 = 0;
    /* __pyx_t_5 released */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    /* __pyx_t_6 released */
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_INCREF(__pyx_v_seq);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_seq);
    __Pyx_GIVEREF(__pyx_v_seq);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    /* __pyx_t_5 released */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyObject_Call(__pyx_builtin_zip, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    /* __pyx_t_6 released */
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 35; __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_t_5 = 0;
    /* __pyx_t_5 released */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)&PyList_Type)), ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    /* __pyx_t_6 released */
    __Pyx_DECREF(__pyx_v_seq);
    __pyx_v_seq = __pyx_t_5;
    __pyx_t_5 = 0;
    /* __pyx_t_5 released */
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":36
 *     if op is __MAXLOC__ or op is __MINLOC__:
 *         seq = list(zip(seq, range(n)))
 *     res = seq[0]             # <<<<<<<<<<<<<<
 *     for i from 1 <= i < n:
 *         res = op(res, seq[i])
 */
  __pyx_1 = __Pyx_GetItemInt(__pyx_v_seq, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_v_res);
  __pyx_v_res = __pyx_1;
  __pyx_1 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":37
 *         seq = list(zip(seq, range(n)))
 *     res = seq[0]
 *     for i from 1 <= i < n:             # <<<<<<<<<<<<<<
 *         res = op(res, seq[i])
 *     return res
 */
  for (__pyx_v_i = 1; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":38
 *     res = seq[0]
 *     for i from 1 <= i < n:
 *         res = op(res, seq[i])             # <<<<<<<<<<<<<<
 *     return res
 * 
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 38; __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_1);
    __Pyx_GIVEREF(__pyx_1);
    __pyx_1 = 0;
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyObject_Call(__pyx_v_op, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    /* __pyx_t_5 released */
    __Pyx_DECREF(__pyx_v_res);
    __pyx_v_res = __pyx_t_6;
    __pyx_t_6 = 0;
    /* __pyx_t_6 released */
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":39
 *     for i from 1 <= i < n:
 *         res = op(res, seq[i])
 *     return res             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI._py_reduce");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_res);
  __Pyx_DECREF(__pyx_v_seq);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":42
 * 
 * 
 * cdef inline object _py_scan(object op, object seq):             # <<<<<<<<<<<<<<
 *     if seq is None: return None
 *     cdef int i=0, n=len(seq)
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_scan(PyObject *__pyx_v_op, PyObject *__pyx_v_seq) {
  int __pyx_v_i;
  int __pyx_v_n;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  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;
  long __pyx_t_7;
  __Pyx_SetupRefcountContext("_py_scan");
  __Pyx_INCREF(__pyx_v_seq);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":43
 * 
 * cdef inline object _py_scan(object op, object seq):
 *     if seq is None: return None             # <<<<<<<<<<<<<<
 *     cdef int i=0, n=len(seq)
 *     if op is MAXLOC or op is MINLOC:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_seq == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":44
 * cdef inline object _py_scan(object op, object seq):
 *     if seq is None: return None
 *     cdef int i=0, n=len(seq)             # <<<<<<<<<<<<<<
 *     if op is MAXLOC or op is MINLOC:
 *         seq = list(zip(seq, range(n)))
 */
  __pyx_v_i = 0;
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Length(__pyx_v_seq); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_2;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":45
 *     if seq is None: return None
 *     cdef int i=0, n=len(seq)
 *     if op is MAXLOC or op is MINLOC:             # <<<<<<<<<<<<<<
 *         seq = list(zip(seq, range(n)))
 *     for i from 1 <= i < n:
 */
  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_MAXLOC); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_op == __pyx_1);
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
  if (!__pyx_t_1) {
    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_MINLOC); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = (__pyx_v_op == __pyx_1);
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    /* __pyx_t_4 allocated */
    __pyx_t_4 = __pyx_t_3;
    /* __pyx_t_3 released */
  } else {
    __pyx_t_4 = __pyx_t_1;
    /* __pyx_t_1 released */
  }
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":46
 *     cdef int i=0, n=len(seq)
 *     if op is MAXLOC or op is MINLOC:
 *         seq = list(zip(seq, range(n)))             # <<<<<<<<<<<<<<
 *     for i from 1 <= i < n:
 *         seq[i] = op(seq[i-1], seq[i])
 */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyInt_FromLong(__pyx_v_n); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 46; __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_t_5 = 0;
    /* __pyx_t_5 released */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyObject_Call(__pyx_builtin_range, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    /* __pyx_t_6 released */
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_INCREF(__pyx_v_seq);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_seq);
    __Pyx_GIVEREF(__pyx_v_seq);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    /* __pyx_t_5 released */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyObject_Call(__pyx_builtin_zip, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    /* __pyx_t_6 released */
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 46; __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_t_5 = 0;
    /* __pyx_t_5 released */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)&PyList_Type)), ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    /* __pyx_t_6 released */
    __Pyx_DECREF(__pyx_v_seq);
    __pyx_v_seq = __pyx_t_5;
    __pyx_t_5 = 0;
    /* __pyx_t_5 released */
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":47
 *     if op is MAXLOC or op is MINLOC:
 *         seq = list(zip(seq, range(n)))
 *     for i from 1 <= i < n:             # <<<<<<<<<<<<<<
 *         seq[i] = op(seq[i-1], seq[i])
 *     return seq
 */
  for (__pyx_v_i = 1; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":48
 *         seq = list(zip(seq, range(n)))
 *     for i from 1 <= i < n:
 *         seq[i] = op(seq[i-1], seq[i])             # <<<<<<<<<<<<<<
 *     return seq
 * 
 */
    /* __pyx_t_7 allocated */
    __pyx_t_7 = (__pyx_v_i - 1);
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_t_7, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    /* __pyx_t_7 released */
    __pyx_2 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_2) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_2);
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_1);
    __Pyx_GIVEREF(__pyx_1);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_2);
    __Pyx_GIVEREF(__pyx_2);
    __pyx_1 = 0;
    __pyx_2 = 0;
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyObject_Call(__pyx_v_op, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    /* __pyx_t_5 released */
    if (__Pyx_SetItemInt(__pyx_v_seq, __pyx_v_i, __pyx_t_6, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    /* __pyx_t_6 released */
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":49
 *     for i from 1 <= i < n:
 *         seq[i] = op(seq[i-1], seq[i])
 *     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_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI._py_scan");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_seq);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":52
 * 
 * 
 * cdef inline object _py_exscan(object op, object seq):             # <<<<<<<<<<<<<<
 *     if seq is None: return None
 *     seq = _py_scan(op, seq)
 */

static INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_exscan(PyObject *__pyx_v_op, PyObject *__pyx_v_seq) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("_py_exscan");
  __Pyx_INCREF(__pyx_v_seq);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":53
 * 
 * cdef inline object _py_exscan(object op, object seq):
 *     if seq is None: return None             # <<<<<<<<<<<<<<
 *     seq = _py_scan(op, seq)
 *     seq.pop(-1)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_seq == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":54
 * cdef inline object _py_exscan(object op, object seq):
 *     if seq is None: return None
 *     seq = _py_scan(op, seq)             # <<<<<<<<<<<<<<
 *     seq.pop(-1)
 *     seq.insert(0, None)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI__py_scan(__pyx_v_op, __pyx_v_seq); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 54; __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;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":55
 *     if seq is None: return None
 *     seq = _py_scan(op, seq)
 *     seq.pop(-1)             # <<<<<<<<<<<<<<
 *     seq.insert(0, None)
 *     return seq
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_seq, __pyx_kp_pop); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __Pyx_INCREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_3 released */
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":56
 *     seq = _py_scan(op, seq)
 *     seq.pop(-1)
 *     seq.insert(0, None)             # <<<<<<<<<<<<<<
 *     return seq
 * 
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_GetAttr(__pyx_v_seq, __pyx_kp_insert); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __Pyx_INCREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_3, 1, Py_None);
  __Pyx_GIVEREF(Py_None);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  /* __pyx_t_4 released */
  /* __pyx_t_3 released */
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":57
 *     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_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._py_exscan");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_seq);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":63
 * cdef class _p_Pickler:
 * 
 *     cdef object dump(self, object obj, void **p, int *n):             # <<<<<<<<<<<<<<
 *         if obj is None:
 *             p[0] = NULL
 */

static  PyObject *__pyx_f_6mpi4py_3MPI_10_p_Pickler_dump(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *__pyx_v_self, PyObject *__pyx_v_obj, void **__pyx_v_p, int *__pyx_v_n) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  char *__pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __Pyx_SetupRefcountContext("dump");
  __Pyx_INCREF(__pyx_v_obj);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":64
 * 
 *     cdef object dump(self, object obj, void **p, int *n):
 *         if obj is None:             # <<<<<<<<<<<<<<
 *             p[0] = NULL
 *             n[0] = 0
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":65
 *     cdef object dump(self, object obj, void **p, int *n):
 *         if obj is None:
 *             p[0] = NULL             # <<<<<<<<<<<<<<
 *             n[0] = 0
 *         else:
 */
    (__pyx_v_p[0]) = NULL;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":66
 *         if obj is None:
 *             p[0] = NULL
 *             n[0] = 0             # <<<<<<<<<<<<<<
 *         else:
 *             obj  = PyMPI_Dump(obj)
 */
    (__pyx_v_n[0]) = 0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":68
 *             n[0] = 0
 *         else:
 *             obj  = PyMPI_Dump(obj)             # <<<<<<<<<<<<<<
 *             p[0] = PyMPIBytes_AsString(obj)
 *             n[0] = PyMPIBytes_Size(obj)
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_Dump(__pyx_v_obj); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_obj);
    __pyx_v_obj = __pyx_t_2;
    __pyx_t_2 = 0;
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":69
 *         else:
 *             obj  = PyMPI_Dump(obj)
 *             p[0] = PyMPIBytes_AsString(obj)             # <<<<<<<<<<<<<<
 *             n[0] = PyMPIBytes_Size(obj)
 *         return obj
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyMPIBytes_AsString(__pyx_v_obj); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    (__pyx_v_p[0]) = __pyx_t_3;
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":70
 *             obj  = PyMPI_Dump(obj)
 *             p[0] = PyMPIBytes_AsString(obj)
 *             n[0] = PyMPIBytes_Size(obj)             # <<<<<<<<<<<<<<
 *         return obj
 * 
 */
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyMPIBytes_Size(__pyx_v_obj); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    (__pyx_v_n[0]) = __pyx_t_4;
    /* __pyx_t_4 released */
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":71
 *             p[0] = PyMPIBytes_AsString(obj)
 *             n[0] = PyMPIBytes_Size(obj)
 *         return obj             # <<<<<<<<<<<<<<
 * 
 *     cdef object alloc(self, void **p, int n):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  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_Pickler.dump");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":73
 *         return obj
 * 
 *     cdef object alloc(self, void **p, int n):             # <<<<<<<<<<<<<<
 *         if n == 0:
 *             obj  = None
 */

static  PyObject *__pyx_f_6mpi4py_3MPI_10_p_Pickler_alloc(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *__pyx_v_self, void **__pyx_v_p, int __pyx_v_n) {
  PyObject *__pyx_v_obj;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  char *__pyx_t_3;
  __Pyx_SetupRefcountContext("alloc");
  __pyx_v_obj = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":74
 * 
 *     cdef object alloc(self, void **p, int n):
 *         if n == 0:             # <<<<<<<<<<<<<<
 *             obj  = None
 *             p[0] = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_n == 0);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":75
 *     cdef object alloc(self, void **p, int n):
 *         if n == 0:
 *             obj  = None             # <<<<<<<<<<<<<<
 *             p[0] = NULL
 *         else:
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF(__pyx_v_obj);
    __pyx_v_obj = Py_None;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":76
 *         if n == 0:
 *             obj  = None
 *             p[0] = NULL             # <<<<<<<<<<<<<<
 *         else:
 *             obj  = PyMPIBytes_FromStringAndSize(NULL, n)
 */
    (__pyx_v_p[0]) = NULL;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":78
 *             p[0] = NULL
 *         else:
 *             obj  = PyMPIBytes_FromStringAndSize(NULL, n)             # <<<<<<<<<<<<<<
 *             p[0] = PyMPIBytes_AsString(obj)
 *         return obj
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyMPIBytes_FromStringAndSize(NULL, __pyx_v_n); 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(__pyx_v_obj);
    __pyx_v_obj = __pyx_t_2;
    __pyx_t_2 = 0;
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":79
 *         else:
 *             obj  = PyMPIBytes_FromStringAndSize(NULL, n)
 *             p[0] = PyMPIBytes_AsString(obj)             # <<<<<<<<<<<<<<
 *         return obj
 * 
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyMPIBytes_AsString(__pyx_v_obj); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    (__pyx_v_p[0]) = __pyx_t_3;
    /* __pyx_t_3 released */
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":80
 *             obj  = PyMPIBytes_FromStringAndSize(NULL, n)
 *             p[0] = PyMPIBytes_AsString(obj)
 *         return obj             # <<<<<<<<<<<<<<
 * 
 *     cdef object load(self, obj):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  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_Pickler.alloc");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":82
 *         return obj
 * 
 *     cdef object load(self, obj):             # <<<<<<<<<<<<<<
 *         if obj is None: return None
 *         return PyMPI_Load(obj)
 */

static  PyObject *__pyx_f_6mpi4py_3MPI_10_p_Pickler_load(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *__pyx_v_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("load");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":83
 * 
 *     cdef object load(self, obj):
 *         if obj is None: return None             # <<<<<<<<<<<<<<
 *         return PyMPI_Load(obj)
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":84
 *     cdef object load(self, obj):
 *         if obj is None: return None
 *         return PyMPI_Load(obj)             # <<<<<<<<<<<<<<
 * 
 *     cdef object dumpv(self, object obj, void **p,
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_Load(__pyx_v_obj); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_Pickler.load");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":86
 *         return PyMPI_Load(obj)
 * 
 *     cdef object dumpv(self, object obj, void **p,             # <<<<<<<<<<<<<<
 *                       int n, int cnt[], int dsp[]):
 *         cdef int i=0, d=0, c=0
 */

static  PyObject *__pyx_f_6mpi4py_3MPI_10_p_Pickler_dumpv(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *__pyx_v_self, PyObject *__pyx_v_obj, void **__pyx_v_p, int __pyx_v_n, int *__pyx_v_cnt, int *__pyx_v_dsp) {
  int __pyx_v_i;
  int __pyx_v_d;
  int __pyx_v_c;
  Py_ssize_t __pyx_v_m;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  int __pyx_t_1;
  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;
  char *__pyx_t_7;
  __Pyx_SetupRefcountContext("dumpv");
  __Pyx_INCREF(__pyx_v_obj);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":88
 *     cdef object dumpv(self, object obj, void **p,
 *                       int n, int cnt[], int dsp[]):
 *         cdef int i=0, d=0, c=0             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t m = 0
 *         if obj is None:
 */
  __pyx_v_i = 0;
  __pyx_v_d = 0;
  __pyx_v_c = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":89
 *                       int n, int cnt[], int dsp[]):
 *         cdef int i=0, d=0, c=0
 *         cdef Py_ssize_t m = 0             # <<<<<<<<<<<<<<
 *         if obj is None:
 *             p[0] = NULL
 */
  __pyx_v_m = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":90
 *         cdef int i=0, d=0, c=0
 *         cdef Py_ssize_t m = 0
 *         if obj is None:             # <<<<<<<<<<<<<<
 *             p[0] = NULL
 *             for i from 0 <= i < n:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":91
 *         cdef Py_ssize_t m = 0
 *         if obj is None:
 *             p[0] = NULL             # <<<<<<<<<<<<<<
 *             for i from 0 <= i < n:
 *                 cnt[i] = 0
 */
    (__pyx_v_p[0]) = NULL;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":92
 *         if obj is None:
 *             p[0] = NULL
 *             for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *                 cnt[i] = 0
 *                 dsp[i] = 0
 */
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":93
 *             p[0] = NULL
 *             for i from 0 <= i < n:
 *                 cnt[i] = 0             # <<<<<<<<<<<<<<
 *                 dsp[i] = 0
 *         else:
 */
      (__pyx_v_cnt[__pyx_v_i]) = 0;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":94
 *             for i from 0 <= i < n:
 *                 cnt[i] = 0
 *                 dsp[i] = 0             # <<<<<<<<<<<<<<
 *         else:
 *             obj = list(obj)
 */
      (__pyx_v_dsp[__pyx_v_i]) = 0;
    }
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":96
 *                 dsp[i] = 0
 *         else:
 *             obj = list(obj)             # <<<<<<<<<<<<<<
 *             m = len(obj)
 *             if m != n: raise ValueError(mpistr(
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 96; __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_t_3 allocated */
    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyList_Type)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 96; __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 released */
    __Pyx_DECREF(__pyx_v_obj);
    __pyx_v_obj = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":97
 *         else:
 *             obj = list(obj)
 *             m = len(obj)             # <<<<<<<<<<<<<<
 *             if m != n: raise ValueError(mpistr(
 *                 "expecting %d items, got %d") % (n, m))
 */
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_m = __pyx_t_4;
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":98
 *             obj = list(obj)
 *             m = len(obj)
 *             if m != n: raise ValueError(mpistr(             # <<<<<<<<<<<<<<
 *                 "expecting %d items, got %d") % (n, m))
 *             for i from 0 <= i < n:
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = (__pyx_v_m != __pyx_v_n);
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":99
 *             m = len(obj)
 *             if m != n: raise ValueError(mpistr(
 *                 "expecting %d items, got %d") % (n, m))             # <<<<<<<<<<<<<<
 *             for i from 0 <= i < n:
 *                 obj[i] = self.dump(obj[i], p, &c)
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_127); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyInt_FromLong(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      /* __pyx_t_5 allocated */
      __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_m); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      /* __pyx_t_6 allocated */
      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 99; __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_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __pyx_t_2 = 0;
      __pyx_t_5 = 0;
      /* __pyx_t_2 released */
      /* __pyx_t_5 released */
      /* __pyx_t_5 allocated */
      __pyx_t_5 = PyNumber_Remainder(__pyx_t_3, ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 99; __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_6)); __pyx_t_6 = 0;
      /* __pyx_t_3 released */
      /* __pyx_t_6 released */
      /* __pyx_t_6 allocated */
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 98; __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_t_5 = 0;
      /* __pyx_t_5 released */
      /* __pyx_t_5 allocated */
      __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      /* __pyx_t_6 released */
      __Pyx_Raise(__pyx_t_5, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      /* __pyx_t_5 released */
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":100
 *             if m != n: raise ValueError(mpistr(
 *                 "expecting %d items, got %d") % (n, m))
 *             for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *                 obj[i] = self.dump(obj[i], p, &c)
 *                 if c == 0: obj[i] = b''
 */
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":101
 *                 "expecting %d items, got %d") % (n, m))
 *             for i from 0 <= i < n:
 *                 obj[i] = self.dump(obj[i], p, &c)             # <<<<<<<<<<<<<<
 *                 if c == 0: obj[i] = b''
 *                 cnt[i] = c
 */
      __pyx_1 = __Pyx_GetItemInt(__pyx_v_obj, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_1);
      /* __pyx_t_5 allocated */
      __pyx_t_5 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_self->__pyx_vtab)->dump(__pyx_v_self, __pyx_1, __pyx_v_p, (&__pyx_v_c)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      if (__Pyx_SetItemInt(__pyx_v_obj, __pyx_v_i, __pyx_t_5, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      /* __pyx_t_5 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":102
 *             for i from 0 <= i < n:
 *                 obj[i] = self.dump(obj[i], p, &c)
 *                 if c == 0: obj[i] = b''             # <<<<<<<<<<<<<<
 *                 cnt[i] = c
 *                 dsp[i] = d
 */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = (__pyx_v_c == 0);
      if (__pyx_t_1) {
        /* __pyx_t_1 released */
        if (__Pyx_SetItemInt(__pyx_v_obj, __pyx_v_i, __pyx_kp_128, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":103
 *                 obj[i] = self.dump(obj[i], p, &c)
 *                 if c == 0: obj[i] = b''
 *                 cnt[i] = c             # <<<<<<<<<<<<<<
 *                 dsp[i] = d
 *                 d += c
 */
      (__pyx_v_cnt[__pyx_v_i]) = __pyx_v_c;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":104
 *                 if c == 0: obj[i] = b''
 *                 cnt[i] = c
 *                 dsp[i] = d             # <<<<<<<<<<<<<<
 *                 d += c
 *             obj = b''.join(obj)
 */
      (__pyx_v_dsp[__pyx_v_i]) = __pyx_v_d;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":105
 *                 cnt[i] = c
 *                 dsp[i] = d
 *                 d += c             # <<<<<<<<<<<<<<
 *             obj = b''.join(obj)
 *             p[0] = PyMPIBytes_AsString(obj)
 */
      __pyx_v_d += __pyx_v_c;
    }

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":106
 *                 dsp[i] = d
 *                 d += c
 *             obj = b''.join(obj)             # <<<<<<<<<<<<<<
 *             p[0] = PyMPIBytes_AsString(obj)
 *         return obj
 */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyObject_GetAttr(__pyx_kp_129, __pyx_kp_join); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __Pyx_INCREF(__pyx_v_obj);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_obj);
    __Pyx_GIVEREF(__pyx_v_obj);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    /* __pyx_t_5 released */
    /* __pyx_t_6 released */
    __Pyx_DECREF(__pyx_v_obj);
    __pyx_v_obj = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":107
 *                 d += c
 *             obj = b''.join(obj)
 *             p[0] = PyMPIBytes_AsString(obj)             # <<<<<<<<<<<<<<
 *         return obj
 * 
 */
    /* __pyx_t_7 allocated */
    __pyx_t_7 = PyMPIBytes_AsString(__pyx_v_obj); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    (__pyx_v_p[0]) = __pyx_t_7;
    /* __pyx_t_7 released */
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":108
 *             obj = b''.join(obj)
 *             p[0] = PyMPIBytes_AsString(obj)
 *         return obj             # <<<<<<<<<<<<<<
 * 
 *     cdef object allocv(self, void **p,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI._p_Pickler.dumpv");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":110
 *         return obj
 * 
 *     cdef object allocv(self, void **p,             # <<<<<<<<<<<<<<
 *                        int n, int cnt[], int dsp[]):
 *         cdef int i=0, d=0
 */

static  PyObject *__pyx_f_6mpi4py_3MPI_10_p_Pickler_allocv(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *__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;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("allocv");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":112
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":113
 *                        int n, int cnt[], int dsp[]):
 *         cdef int i=0, d=0
 *         for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *             dsp[i] = d
 *             d += cnt[i]
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":114
 *         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;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":115
 *         for i from 0 <= i < n:
 *             dsp[i] = d
 *             d += cnt[i]             # <<<<<<<<<<<<<<
 *         return self.alloc(p, d)
 * 
 */
    __pyx_v_d += (__pyx_v_cnt[__pyx_v_i]);
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":116
 *             dsp[i] = d
 *             d += cnt[i]
 *         return self.alloc(p, d)             # <<<<<<<<<<<<<<
 * 
 *     cdef object loadv(self, object obj,
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_self->__pyx_vtab)->alloc(__pyx_v_self, __pyx_v_p, __pyx_v_d); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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._p_Pickler.allocv");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":118
 *         return self.alloc(p, d)
 * 
 *     cdef object loadv(self, object obj,             # <<<<<<<<<<<<<<
 *                       int n, int cnt[], int dsp[]):
 *         cdef int i=0, d=0, c=0
 */

static  PyObject *__pyx_f_6mpi4py_3MPI_10_p_Pickler_loadv(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_n, int *__pyx_v_cnt, int *__pyx_v_dsp) {
  int __pyx_v_i;
  int __pyx_v_d;
  int __pyx_v_c;
  PyObject *__pyx_v_items = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_SetupRefcountContext("loadv");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":120
 *     cdef object loadv(self, object obj,
 *                       int n, int cnt[], int dsp[]):
 *         cdef int i=0, d=0, c=0             # <<<<<<<<<<<<<<
 *         cdef object items = [None] * n
 *         if obj is None: return items
 */
  __pyx_v_i = 0;
  __pyx_v_d = 0;
  __pyx_v_c = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":121
 *                       int n, int cnt[], int dsp[]):
 *         cdef int i=0, d=0, c=0
 *         cdef object items = [None] * n             # <<<<<<<<<<<<<<
 *         if obj is None: return items
 *         for i from 0 <= i < n:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 121; __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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_t_1), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 121; __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_t_1 released */
  /* __pyx_t_2 released */
  __pyx_v_items = __pyx_t_3;
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":122
 *         cdef int i=0, d=0, c=0
 *         cdef object items = [None] * n
 *         if obj is None: return items             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < n:
 *             c = cnt[i]
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = (__pyx_v_obj == Py_None);
  if (__pyx_t_4) {
    /* __pyx_t_4 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_items);
    __pyx_r = __pyx_v_items;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":123
 *         cdef object items = [None] * n
 *         if obj is None: return items
 *         for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *             c = cnt[i]
 *             d = dsp[i]
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":124
 *         if obj is None: return items
 *         for i from 0 <= i < n:
 *             c = cnt[i]             # <<<<<<<<<<<<<<
 *             d = dsp[i]
 *             if c == 0: continue
 */
    __pyx_v_c = (__pyx_v_cnt[__pyx_v_i]);

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":125
 *         for i from 0 <= i < n:
 *             c = cnt[i]
 *             d = dsp[i]             # <<<<<<<<<<<<<<
 *             if c == 0: continue
 *             items[i] = self.load(obj[d:d+c])
 */
    __pyx_v_d = (__pyx_v_dsp[__pyx_v_i]);

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":126
 *             c = cnt[i]
 *             d = dsp[i]
 *             if c == 0: continue             # <<<<<<<<<<<<<<
 *             items[i] = self.load(obj[d:d+c])
 *         return items
 */
    /* __pyx_t_4 allocated */
    __pyx_t_4 = (__pyx_v_c == 0);
    if (__pyx_t_4) {
      /* __pyx_t_4 released */
      goto __pyx_L4_continue;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":127
 *             d = dsp[i]
 *             if c == 0: continue
 *             items[i] = self.load(obj[d:d+c])             # <<<<<<<<<<<<<<
 *         return items
 * 
 */
    __pyx_1 = PySequence_GetSlice(__pyx_v_obj, __pyx_v_d, (__pyx_v_d + __pyx_v_c)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_self->__pyx_vtab)->load(__pyx_v_self, __pyx_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    if (__Pyx_SetItemInt(__pyx_v_items, __pyx_v_i, __pyx_t_3, sizeof(int), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    __pyx_L4_continue:;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":128
 *             if c == 0: continue
 *             items[i] = self.load(obj[d:d+c])
 *         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_1);
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_Pickler.loadv");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":133
 * cdef _p_Pickler PyMPI_PICKLER = _p_Pickler()
 * 
 * cdef inline _p_Pickler PyMPI_pickler():             # <<<<<<<<<<<<<<
 *     return PyMPI_PICKLER
 * 
 */

static INLINE struct __pyx_obj_6mpi4py_3MPI__p_Pickler *__pyx_f_6mpi4py_3MPI_PyMPI_pickler(void) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickler *__pyx_r = NULL;
  __Pyx_SetupRefcountContext("PyMPI_pickler");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":134
 * 
 * cdef inline _p_Pickler PyMPI_pickler():
 *     return PyMPI_PICKLER             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLER));
  __pyx_r = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLER;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickler *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":138
 * # --------------------------------------------------------------------
 * 
 * cdef object PyMPI_send(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                        MPI_Comm comm):
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 */

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_Pickler *__pyx_v_pickler = 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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("PyMPI_send");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":140
 * cdef object PyMPI_send(object obj, int dest, int tag,
 *                        MPI_Comm comm):
 *     cdef _p_Pickler pickler = PyMPI_pickler()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickler()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickler = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickler *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":142
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":143
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 */
  __pyx_v_scount = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":144
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":146
 *     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);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":148
 *     cdef int dosend = (dest != MPI_PROC_NULL)
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickler.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send(sbuf, scount, stype,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":149
 *     #
 *     cdef object smsg = None
 *     if dosend: smsg = pickler.dump(obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Send(sbuf, scount, stype,
 *                                  dest, tag, comm) )
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dosend;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->dump(__pyx_v_pickler, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __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;
    /* __pyx_t_1 released */
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":150
 *     cdef object smsg = None
 *     if dosend: smsg = pickler.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                  dest, tag, comm) )
 *     return None
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":151
 *     if dosend: smsg = pickler.dump(obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send(sbuf, scount, stype,
 *                                  dest, tag, comm) )             # <<<<<<<<<<<<<<
 *     return None
 * 
 */
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L5;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":152
 *     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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickler);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":155
 * 
 * 
 * cdef object PyMPI_recv(object obj, int source, int tag,             # <<<<<<<<<<<<<<
 *                        MPI_Comm comm, MPI_Status *status):
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 */

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_Pickler *__pyx_v_pickler = 0;
  void *__pyx_v_rbuf;
  int __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  int __pyx_v_dorecv;
  MPI_Status __pyx_v_rsts;
  PyObject *__pyx_v_rmsg = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("PyMPI_recv");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":157
 * cdef object PyMPI_recv(object obj, int source, int tag,
 *                        MPI_Comm comm, MPI_Status *status):
 *     cdef _p_Pickler pickler = PyMPI_pickler()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *rbuf = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickler()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickler = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickler *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":159
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 *     #
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":160
 *     #
 *     cdef void *rbuf = NULL
 *     cdef int rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rcount = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":161
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":163
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef int dorecv = (source != MPI_PROC_NULL)             # <<<<<<<<<<<<<<
 *     #
 *     cdef MPI_Status rsts
 */
  __pyx_v_dorecv = (__pyx_v_source != MPI_PROC_NULL);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":166
 *     #
 *     cdef MPI_Status rsts
 *     with nogil: CHKERR( MPI_Probe(source, tag, comm, &rsts) )             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     source = rsts.MPI_SOURCE
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Probe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_rsts))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L4;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":167
 *     cdef MPI_Status rsts
 *     with nogil: CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 *     with nogil: CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *     source = rsts.MPI_SOURCE
 *     tag = rsts.MPI_TAG
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L8;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":168
 *     with nogil: CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 *     with nogil: CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     source = rsts.MPI_SOURCE             # <<<<<<<<<<<<<<
 *     tag = rsts.MPI_TAG
 *     #
 */
  __pyx_v_source = __pyx_v_rsts.MPI_SOURCE;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":169
 *     with nogil: CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     source = rsts.MPI_SOURCE
 *     tag = rsts.MPI_TAG             # <<<<<<<<<<<<<<
 *     #
 *     cdef object rmsg = None
 */
  __pyx_v_tag = __pyx_v_rsts.MPI_TAG;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":171
 *     tag = rsts.MPI_TAG
 *     #
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickler.alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":172
 *     #
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickler.alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,
 *                                  source, tag, comm, status) )
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dorecv;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->alloc(__pyx_v_pickler, (&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 172; __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;
    /* __pyx_t_1 released */
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":173
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickler.alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,             # <<<<<<<<<<<<<<
 *                                  source, tag, comm, status) )
 *     if dorecv: rmsg = pickler.load(rmsg)
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":174
 *     if dorecv: rmsg = pickler.alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,
 *                                  source, tag, comm, status) )             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickler.load(rmsg)
 *     return rmsg
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __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_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L13;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":175
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,
 *                                  source, tag, comm, status) )
 *     if dorecv: rmsg = pickler.load(rmsg)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dorecv;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->load(__pyx_v_pickler, __pyx_v_rmsg); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 175; __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;
    /* __pyx_t_1 released */
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":176
 *                                  source, tag, comm, status) )
 *     if dorecv: rmsg = pickler.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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickler);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":179
 * 
 * 
 * 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_Pickler *__pyx_v_pickler = 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;
  MPI_Status __pyx_v_rsts;
  PyObject *__pyx_v_rmsg = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("PyMPI_sendrecv");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":182
 *                            object robj, int source, int recvtag,
 *                            MPI_Comm comm, MPI_Status *status):
 *     cdef _p_Pickler pickler = PyMPI_pickler()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickler()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickler = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickler *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":184
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":185
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_scount = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":186
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":187
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":188
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 *     cdef int rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rcount = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":189
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":191
 *     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);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":192
 *     #
 *     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);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":194
 *     cdef int dorecv = (source != MPI_PROC_NULL)
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickler.dump(sobj, &sbuf, &scount)
 *     cdef MPI_Request sreq = MPI_REQUEST_NULL
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":195
 *     #
 *     cdef object smsg = None
 *     if dosend: smsg = pickler.dump(sobj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     cdef MPI_Request sreq = MPI_REQUEST_NULL
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dosend;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->dump(__pyx_v_pickler, __pyx_v_sobj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 195; __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;
    /* __pyx_t_1 released */
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":196
 *     cdef object smsg = None
 *     if dosend: smsg = pickler.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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":197
 *     if dosend: smsg = pickler.dump(sobj, &sbuf, &scount)
 *     cdef MPI_Request sreq = MPI_REQUEST_NULL
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,             # <<<<<<<<<<<<<<
 *                                   dest, sendtag, comm, &sreq) )
 *     #
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":198
 *     cdef MPI_Request sreq = MPI_REQUEST_NULL
 *     with nogil: CHKERR( MPI_Isend(sbuf, scount, stype,
 *                                   dest, sendtag, comm, &sreq) )             # <<<<<<<<<<<<<<
 *     #
 *     cdef MPI_Status rsts
 */
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L5;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":201
 *     #
 *     cdef MPI_Status rsts
 *     with nogil: CHKERR( MPI_Probe(source, recvtag, comm, &rsts) )             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     source  = rsts.MPI_SOURCE
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L9;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":202
 *     cdef MPI_Status rsts
 *     with nogil: CHKERR( MPI_Probe(source, recvtag, comm, &rsts) )
 *     with nogil: CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *     source  = rsts.MPI_SOURCE
 *     recvtag = rsts.MPI_TAG
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L13;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":203
 *     with nogil: CHKERR( MPI_Probe(source, recvtag, comm, &rsts) )
 *     with nogil: CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     source  = rsts.MPI_SOURCE             # <<<<<<<<<<<<<<
 *     recvtag = rsts.MPI_TAG
 *     #
 */
  __pyx_v_source = __pyx_v_rsts.MPI_SOURCE;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":204
 *     with nogil: CHKERR( MPI_Get_count(&rsts, rtype, &rcount) )
 *     source  = rsts.MPI_SOURCE
 *     recvtag = rsts.MPI_TAG             # <<<<<<<<<<<<<<
 *     #
 *     cdef object rmsg = None
 */
  __pyx_v_recvtag = __pyx_v_rsts.MPI_TAG;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":206
 *     recvtag = rsts.MPI_TAG
 *     #
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickler.alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":207
 *     #
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickler.alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,
 *                                  source, recvtag, comm, status) )
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dorecv;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->alloc(__pyx_v_pickler, (&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 207; __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;
    /* __pyx_t_1 released */
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":208
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickler.alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,             # <<<<<<<<<<<<<<
 *                                  source, recvtag, comm, status) )
 *     #
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":209
 *     if dorecv: rmsg = pickler.alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Recv(rbuf, rcount, rtype,
 *                                  source, recvtag, comm, status) )             # <<<<<<<<<<<<<<
 *     #
 *     with nogil: CHKERR( MPI_Wait(&sreq, MPI_STATUS_IGNORE) )
 */
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L18;}
      /* __pyx_t_2 released */
    }
    /*finally:*/ {
      int __pyx_why;
      __pyx_why = 0; goto __pyx_L19;
      __pyx_L18: __pyx_why = 4; goto __pyx_L19;
      __pyx_L19:;
      Py_BLOCK_THREADS
      switch (__pyx_why) {
        case 4: goto __pyx_L1_error;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":211
 *                                  source, recvtag, comm, status) )
 *     #
 *     with nogil: CHKERR( MPI_Wait(&sreq, MPI_STATUS_IGNORE) )             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickler.load(rmsg)
 *     return rmsg
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L22;}
      /* __pyx_t_2 released */
    }
    /*finally:*/ {
      int __pyx_why;
      __pyx_why = 0; goto __pyx_L23;
      __pyx_L22: __pyx_why = 4; goto __pyx_L23;
      __pyx_L23:;
      Py_BLOCK_THREADS
      switch (__pyx_why) {
        case 4: goto __pyx_L1_error;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":212
 *     #
 *     with nogil: CHKERR( MPI_Wait(&sreq, MPI_STATUS_IGNORE) )
 *     if dorecv: rmsg = pickler.load(rmsg)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dorecv;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->load(__pyx_v_pickler, __pyx_v_rmsg); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __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;
    /* __pyx_t_1 released */
    goto __pyx_L25;
  }
  __pyx_L25:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":213
 *     with nogil: CHKERR( MPI_Wait(&sreq, MPI_STATUS_IGNORE) )
 *     if dorecv: rmsg = pickler.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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickler);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":217
 * # --------------------------------------------------------------------
 * 
 * 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;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("PyMPI_barrier");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":218
 * 
 * cdef object PyMPI_barrier(MPI_Comm comm):
 *     with nogil: CHKERR( MPI_Barrier(comm) )             # <<<<<<<<<<<<<<
 *     return None
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Barrier(__pyx_v_comm)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L4;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":219
 * 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_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":222
 * 
 * 
 * cdef object PyMPI_bcast(object obj,             # <<<<<<<<<<<<<<
 *                         int root, MPI_Comm comm):
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 */

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_Pickler *__pyx_v_pickler = 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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("PyMPI_bcast");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":224
 * cdef object PyMPI_bcast(object obj,
 *                         int root, MPI_Comm comm):
 *     cdef _p_Pickler pickler = PyMPI_pickler()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *buf = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickler()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickler = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickler *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":226
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 *     #
 *     cdef void *buf = NULL             # <<<<<<<<<<<<<<
 *     cdef int count = 0
 *     cdef MPI_Datatype dtype = MPI_BYTE
 */
  __pyx_v_buf = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":227
 *     #
 *     cdef void *buf = NULL
 *     cdef int count = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype dtype = MPI_BYTE
 *     #
 */
  __pyx_v_count = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":228
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":230
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":231
 *     #
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":232
 *     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 allocated */
  __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[1]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":233
 *     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;
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_inter;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":234
 *     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 allocated */
    __pyx_t_3 = (__pyx_v_root == ((int)MPI_PROC_NULL));
    if (__pyx_t_3) {
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":235
 *     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;
    }

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":236
 *         if root == <int>MPI_PROC_NULL:
 *             dosend=0; dorecv=0;
 *         elif root == <int>MPI_ROOT:             # <<<<<<<<<<<<<<
 *             dosend=1; dorecv=0;
 *         else:
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = (__pyx_v_root == ((int)MPI_ROOT));
    if (__pyx_t_3) {
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":237
 *             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*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":239
 *             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*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":241
 *             dosend=0; dorecv=1;
 *     else:
 *         CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             dosend=1; dorecv=1;
 */
    /* __pyx_t_2 allocated */
    __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[1]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":242
 *     else:
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             dosend=1; dorecv=1;
 *         else:
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_3) {
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":243
 *         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*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":245
 *             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:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":247
 *             dosend=0; dorecv=1;
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickler.dump(obj, &buf, &count)
 *     with nogil: CHKERR( MPI_Bcast(&count, 1, MPI_INT,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":248
 *     #
 *     cdef object smsg = None
 *     if dosend: smsg = pickler.dump(obj, &buf, &count)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Bcast(&count, 1, MPI_INT,
 *                                   root, comm) )
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dosend;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->dump(__pyx_v_pickler, __pyx_v_obj, (&__pyx_v_buf), (&__pyx_v_count)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __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;
    /* __pyx_t_1 released */
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":249
 *     cdef object smsg = None
 *     if dosend: smsg = pickler.dump(obj, &buf, &count)
 *     with nogil: CHKERR( MPI_Bcast(&count, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                   root, comm) )
 *     cdef object rmsg = None
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":250
 *     if dosend: smsg = pickler.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 allocated */
      __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[1]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L8;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":251
 *     with nogil: CHKERR( MPI_Bcast(&count, 1, MPI_INT,
 *                                   root, comm) )
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     if dorecv and dosend: rmsg = smsg
 *     elif dorecv: rmsg = pickler.alloc(&buf, count)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":252
 *                                   root, comm) )
 *     cdef object rmsg = None
 *     if dorecv and dosend: rmsg = smsg             # <<<<<<<<<<<<<<
 *     elif dorecv: rmsg = pickler.alloc(&buf, count)
 *     with nogil: CHKERR( MPI_Bcast(buf, count, MPI_BYTE,
 */
  if (__pyx_v_dorecv) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_v_dosend;
  } else {
    __pyx_t_3 = __pyx_v_dorecv;
  }
  if (__pyx_t_3) {
    /* __pyx_t_3 released */
    __Pyx_INCREF(__pyx_v_smsg);
    __Pyx_DECREF(__pyx_v_rmsg);
    __pyx_v_rmsg = __pyx_v_smsg;
    goto __pyx_L11;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":253
 *     cdef object rmsg = None
 *     if dorecv and dosend: rmsg = smsg
 *     elif dorecv: rmsg = pickler.alloc(&buf, count)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Bcast(buf, count, MPI_BYTE,
 *                                   root, comm) )
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dorecv;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->alloc(__pyx_v_pickler, (&__pyx_v_buf), __pyx_v_count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 253; __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;
    /* __pyx_t_1 released */
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":254
 *     if dorecv and dosend: rmsg = smsg
 *     elif dorecv: rmsg = pickler.alloc(&buf, count)
 *     with nogil: CHKERR( MPI_Bcast(buf, count, MPI_BYTE,             # <<<<<<<<<<<<<<
 *                                   root, comm) )
 *     if dorecv: rmsg = pickler.load(rmsg)
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":255
 *     elif dorecv: rmsg = pickler.alloc(&buf, count)
 *     with nogil: CHKERR( MPI_Bcast(buf, count, MPI_BYTE,
 *                                   root, comm) )             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickler.load(rmsg)
 *     return rmsg
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bcast(__pyx_v_buf, __pyx_v_count, MPI_BYTE, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L13;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":256
 *     with nogil: CHKERR( MPI_Bcast(buf, count, MPI_BYTE,
 *                                   root, comm) )
 *     if dorecv: rmsg = pickler.load(rmsg)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dorecv;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->load(__pyx_v_pickler, __pyx_v_rmsg); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 256; __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;
    /* __pyx_t_1 released */
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":257
 *                                   root, comm) )
 *     if dorecv: rmsg = pickler.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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickler);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":260
 * 
 * 
 * cdef object PyMPI_gather(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                          int root, MPI_Comm comm):
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 */

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_Pickler *__pyx_v_pickler = 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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("PyMPI_gather");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":262
 * cdef object PyMPI_gather(object sendobj, object recvobj,
 *                          int root, MPI_Comm comm):
 *     cdef _p_Pickler pickler = PyMPI_pickler()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickler()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickler = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickler *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":264
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":265
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_scount = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":266
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":267
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":268
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":269
 *     cdef void *rbuf = NULL
 *     cdef int *rcounts = NULL
 *     cdef int *rdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rdispls = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":270
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":272
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":273
 *     #
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":274
 *     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 allocated */
  __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[1]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":275
 *     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:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_inter;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":276
 *     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 allocated */
    __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[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":277
 *     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 allocated */
    __pyx_t_3 = (__pyx_v_root == ((int)MPI_PROC_NULL));
    if (__pyx_t_3) {
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":278
 *         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;
    }

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":279
 *         if root == <int>MPI_PROC_NULL:
 *             dosend=0; dorecv=0;
 *         elif root == <int>MPI_ROOT:             # <<<<<<<<<<<<<<
 *             dosend=0; dorecv=1;
 *         else:
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = (__pyx_v_root == ((int)MPI_ROOT));
    if (__pyx_t_3) {
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":280
 *             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*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":282
 *             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*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":284
 *             dosend=1; dorecv=0;
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:
 */
    /* __pyx_t_2 allocated */
    __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[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":285
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             dosend=1; dorecv=1;
 */
    /* __pyx_t_2 allocated */
    __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[1]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":286
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             dosend=1; dorecv=1;
 *         else:
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_3) {
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":287
 *         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*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":289
 *             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:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":291
 *             dosend=1; dorecv=0;
 *     #
 *     cdef object tmp1=None, tmp2=None             # <<<<<<<<<<<<<<
 *     if dorecv: tmp1 = newarray_int(size, &rcounts)
 *     if dorecv: tmp2 = newarray_int(size, &rdispls)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_tmp1 = Py_None;
  __Pyx_INCREF(Py_None);
  __pyx_v_tmp2 = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":292
 *     #
 *     cdef object tmp1=None, tmp2=None
 *     if dorecv: tmp1 = newarray_int(size, &rcounts)             # <<<<<<<<<<<<<<
 *     if dorecv: tmp2 = newarray_int(size, &rdispls)
 *     #
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dorecv;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_rcounts)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 292; __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;
    /* __pyx_t_1 released */
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":293
 *     cdef object tmp1=None, tmp2=None
 *     if dorecv: tmp1 = newarray_int(size, &rcounts)
 *     if dorecv: tmp2 = newarray_int(size, &rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dorecv;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_rdispls)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 293; __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;
    /* __pyx_t_1 released */
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":295
 *     if dorecv: tmp2 = newarray_int(size, &rdispls)
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickler.dump(sendobj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Gather(&scount, 1, MPI_INT,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":296
 *     #
 *     cdef object smsg = None
 *     if dosend: smsg = pickler.dump(sendobj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Gather(&scount, 1, MPI_INT,
 *                                    rcounts, 1, MPI_INT,
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dosend;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->dump(__pyx_v_pickler, __pyx_v_sendobj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 296; __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;
    /* __pyx_t_1 released */
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":297
 *     cdef object smsg = None
 *     if dosend: smsg = pickler.dump(sendobj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Gather(&scount, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                    rcounts, 1, MPI_INT,
 *                                    root, comm) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":299
 *     with nogil: CHKERR( MPI_Gather(&scount, 1, MPI_INT,
 *                                    rcounts, 1, MPI_INT,
 *                                    root, comm) )             # <<<<<<<<<<<<<<
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickler.allocv(&rbuf, size, rcounts, rdispls)
 */
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L10;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":300
 *                                    rcounts, 1, MPI_INT,
 *                                    root, comm) )
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickler.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Gatherv(sbuf, scount,           stype,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":301
 *                                    root, comm) )
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickler.allocv(&rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Gatherv(sbuf, scount,           stype,
 *                                     rbuf, rcounts, rdispls, rtype,
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dorecv;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->allocv(__pyx_v_pickler, (&__pyx_v_rbuf), __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 301; __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;
    /* __pyx_t_1 released */
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":302
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickler.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Gatherv(sbuf, scount,           stype,             # <<<<<<<<<<<<<<
 *                                     rbuf, rcounts, rdispls, rtype,
 *                                     root, comm) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":304
 *     with nogil: CHKERR( MPI_Gatherv(sbuf, scount,           stype,
 *                                     rbuf, rcounts, rdispls, rtype,
 *                                     root, comm) )             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickler.loadv(rmsg, size, rcounts, rdispls)
 *     return rmsg
 */
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L15;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":305
 *                                     rbuf, rcounts, rdispls, rtype,
 *                                     root, comm) )
 *     if dorecv: rmsg = pickler.loadv(rmsg, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dorecv;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->loadv(__pyx_v_pickler, __pyx_v_rmsg, __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 305; __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;
    /* __pyx_t_1 released */
    goto __pyx_L18;
  }
  __pyx_L18:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":306
 *                                     root, comm) )
 *     if dorecv: rmsg = pickler.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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickler);
  __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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":309
 * 
 * 
 * cdef object PyMPI_scatter(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                           int root, MPI_Comm comm):
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 */

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_Pickler *__pyx_v_pickler = 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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("PyMPI_scatter");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":311
 * cdef object PyMPI_scatter(object sendobj, object recvobj,
 *                           int root, MPI_Comm comm):
 *     cdef _p_Pickler pickler = PyMPI_pickler()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickler()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickler = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickler *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":313
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int *scounts = NULL
 *     cdef int *sdispls = NULL
 */
  __pyx_v_sbuf = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":314
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int *scounts = NULL             # <<<<<<<<<<<<<<
 *     cdef int *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_scounts = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":315
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":316
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":317
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":318
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 *     cdef int rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rcount = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":319
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":321
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":322
 *     #
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":323
 *     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 allocated */
  __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[1]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":324
 *     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:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_inter;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":325
 *     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 allocated */
    __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[1]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":326
 *     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 allocated */
    __pyx_t_3 = (__pyx_v_root == ((int)MPI_PROC_NULL));
    if (__pyx_t_3) {
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":327
 *         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;
    }

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":328
 *         if root == <int>MPI_PROC_NULL:
 *             dosend=1; dorecv=0;
 *         elif root == <int>MPI_ROOT:             # <<<<<<<<<<<<<<
 *             dosend=1; dorecv=0;
 *         else:
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = (__pyx_v_root == ((int)MPI_ROOT));
    if (__pyx_t_3) {
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":329
 *             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*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":331
 *             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*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":333
 *             dosend=0; dorecv=1;
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:
 */
    /* __pyx_t_2 allocated */
    __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[1]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":334
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             dosend=1; dorecv=1;
 */
    /* __pyx_t_2 allocated */
    __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[1]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":335
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             dosend=1; dorecv=1;
 *         else:
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_3) {
      /* __pyx_t_3 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":336
 *         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*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":338
 *             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:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":340
 *             dosend=0; dorecv=1;
 *     #
 *     cdef object tmp1=None, tmp2=None             # <<<<<<<<<<<<<<
 *     if dosend: tmp1 = newarray_int(size, &scounts)
 *     if dosend: tmp2 = newarray_int(size, &sdispls)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_tmp1 = Py_None;
  __Pyx_INCREF(Py_None);
  __pyx_v_tmp2 = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":341
 *     #
 *     cdef object tmp1=None, tmp2=None
 *     if dosend: tmp1 = newarray_int(size, &scounts)             # <<<<<<<<<<<<<<
 *     if dosend: tmp2 = newarray_int(size, &sdispls)
 *     #
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dosend;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_scounts)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 341; __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;
    /* __pyx_t_1 released */
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":342
 *     cdef object tmp1=None, tmp2=None
 *     if dosend: tmp1 = newarray_int(size, &scounts)
 *     if dosend: tmp2 = newarray_int(size, &sdispls)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dosend;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_sdispls)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 342; __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;
    /* __pyx_t_1 released */
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":344
 *     if dosend: tmp2 = newarray_int(size, &sdispls)
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dosend: smsg = pickler.dumpv(sendobj, &sbuf, size, scounts, sdispls)
 *     with nogil: CHKERR( MPI_Scatter(scounts, 1, MPI_INT,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":345
 *     #
 *     cdef object smsg = None
 *     if dosend: smsg = pickler.dumpv(sendobj, &sbuf, size, scounts, sdispls)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Scatter(scounts, 1, MPI_INT,
 *                                     &rcount, 1, MPI_INT,
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dosend;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->dumpv(__pyx_v_pickler, __pyx_v_sendobj, (&__pyx_v_sbuf), __pyx_v_size, __pyx_v_scounts, __pyx_v_sdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 345; __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;
    /* __pyx_t_1 released */
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":346
 *     cdef object smsg = None
 *     if dosend: smsg = pickler.dumpv(sendobj, &sbuf, size, scounts, sdispls)
 *     with nogil: CHKERR( MPI_Scatter(scounts, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                     &rcount, 1, MPI_INT,
 *                                     root, comm) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":348
 *     with nogil: CHKERR( MPI_Scatter(scounts, 1, MPI_INT,
 *                                     &rcount, 1, MPI_INT,
 *                                     root, comm) )             # <<<<<<<<<<<<<<
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickler.alloc(&rbuf, rcount)
 */
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L10;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":349
 *                                     &rcount, 1, MPI_INT,
 *                                     root, comm) )
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickler.alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Scatterv(sbuf, scounts, sdispls, stype,
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":350
 *                                     root, comm) )
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickler.alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Scatterv(sbuf, scounts, sdispls, stype,
 *                                      rbuf, rcount,           rtype,
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dorecv;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->alloc(__pyx_v_pickler, (&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 350; __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;
    /* __pyx_t_1 released */
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":351
 *     cdef object rmsg = None
 *     if dorecv: rmsg = pickler.alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Scatterv(sbuf, scounts, sdispls, stype,             # <<<<<<<<<<<<<<
 *                                      rbuf, rcount,           rtype,
 *                                      root, comm) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":353
 *     with nogil: CHKERR( MPI_Scatterv(sbuf, scounts, sdispls, stype,
 *                                      rbuf, rcount,           rtype,
 *                                      root, comm) )             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickler.load(rmsg)
 *     return rmsg
 */
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L15;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":354
 *                                      rbuf, rcount,           rtype,
 *                                      root, comm) )
 *     if dorecv: rmsg = pickler.load(rmsg)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_dorecv;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->load(__pyx_v_pickler, __pyx_v_rmsg); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 354; __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;
    /* __pyx_t_1 released */
    goto __pyx_L18;
  }
  __pyx_L18:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":355
 *                                      root, comm) )
 *     if dorecv: rmsg = pickler.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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickler);
  __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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":358
 * 
 * 
 * cdef object PyMPI_allgather(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                             MPI_Comm comm):
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 */

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_Pickler *__pyx_v_pickler = 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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("PyMPI_allgather");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":360
 * cdef object PyMPI_allgather(object sendobj, object recvobj,
 *                             MPI_Comm comm):
 *     cdef _p_Pickler pickler = PyMPI_pickler()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickler()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickler = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickler *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":362
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":363
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_scount = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":364
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":365
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":366
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":367
 *     cdef void *rbuf = NULL
 *     cdef int *rcounts = NULL
 *     cdef int *rdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rdispls = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":368
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":370
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":371
 *     #
 *     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 allocated */
  __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[1]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":372
 *     cdef int inter=0, size=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_inter;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":373
 *     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 allocated */
    __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[1]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":375
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     #
 *     cdef object tmp1 = newarray_int(size, &rcounts)
 */
    /* __pyx_t_2 allocated */
    __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[1]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":377
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *     #
 *     cdef object tmp1 = newarray_int(size, &rcounts)             # <<<<<<<<<<<<<<
 *     cdef object tmp2 = newarray_int(size, &rdispls)
 *     #
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_rcounts)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_tmp1 = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":378
 *     #
 *     cdef object tmp1 = newarray_int(size, &rcounts)
 *     cdef object tmp2 = newarray_int(size, &rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = pickler.dump(sendobj, &sbuf, &scount)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_rdispls)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_tmp2 = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":380
 *     cdef object tmp2 = newarray_int(size, &rdispls)
 *     #
 *     cdef object smsg = pickler.dump(sendobj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Allgather(&scount, 1, MPI_INT,
 *                                       rcounts, 1, MPI_INT,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->dump(__pyx_v_pickler, __pyx_v_sendobj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":381
 *     #
 *     cdef object smsg = pickler.dump(sendobj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Allgather(&scount, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                       rcounts, 1, MPI_INT,
 *                                       comm) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":383
 *     with nogil: CHKERR( MPI_Allgather(&scount, 1, MPI_INT,
 *                                       rcounts, 1, MPI_INT,
 *                                       comm) )             # <<<<<<<<<<<<<<
 *     cdef object rmsg = pickler.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Allgatherv(sbuf, scount,           stype,
 */
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L5;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":384
 *                                       rcounts, 1, MPI_INT,
 *                                       comm) )
 *     cdef object rmsg = pickler.allocv(&rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Allgatherv(sbuf, scount,           stype,
 *                                        rbuf, rcounts, rdispls, rtype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->allocv(__pyx_v_pickler, (&__pyx_v_rbuf), __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":385
 *                                       comm) )
 *     cdef object rmsg = pickler.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Allgatherv(sbuf, scount,           stype,             # <<<<<<<<<<<<<<
 *                                        rbuf, rcounts, rdispls, rtype,
 *                                        comm) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":387
 *     with nogil: CHKERR( MPI_Allgatherv(sbuf, scount,           stype,
 *                                        rbuf, rcounts, rdispls, rtype,
 *                                        comm) )             # <<<<<<<<<<<<<<
 *     rmsg = pickler.loadv(rmsg, size, rcounts, rdispls)
 *     return rmsg
 */
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L9;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":388
 *                                        rbuf, rcounts, rdispls, rtype,
 *                                        comm) )
 *     rmsg = pickler.loadv(rmsg, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->loadv(__pyx_v_pickler, __pyx_v_rmsg, __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 388; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":389
 *                                        comm) )
 *     rmsg = pickler.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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickler);
  __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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":392
 * 
 * 
 * cdef object PyMPI_alltoall(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                            MPI_Comm comm):
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 */

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_Pickler *__pyx_v_pickler = 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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("PyMPI_alltoall");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":394
 * cdef object PyMPI_alltoall(object sendobj, object recvobj,
 *                            MPI_Comm comm):
 *     cdef _p_Pickler pickler = PyMPI_pickler()             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_PyMPI_pickler()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pickler = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickler *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":396
 *     cdef _p_Pickler pickler = PyMPI_pickler()
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef int *scounts = NULL
 *     cdef int *sdispls = NULL
 */
  __pyx_v_sbuf = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":397
 *     #
 *     cdef void *sbuf = NULL
 *     cdef int *scounts = NULL             # <<<<<<<<<<<<<<
 *     cdef int *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_scounts = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":398
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":399
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":400
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":401
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":402
 *     cdef void *rbuf = NULL
 *     cdef int *rcounts = NULL
 *     cdef int *rdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rdispls = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":403
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":405
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":406
 *     #
 *     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 allocated */
  __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[1]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":407
 *     cdef int inter=0, size=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_v_inter;
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":408
 *     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 allocated */
    __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[1]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":410
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     #
 *     cdef object stmp1 = newarray_int(size, &scounts)
 */
    /* __pyx_t_2 allocated */
    __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[1]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":412
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *     #
 *     cdef object stmp1 = newarray_int(size, &scounts)             # <<<<<<<<<<<<<<
 *     cdef object stmp2 = newarray_int(size, &sdispls)
 *     cdef object rtmp1 = newarray_int(size, &rcounts)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_scounts)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_stmp1 = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":413
 *     #
 *     cdef object stmp1 = newarray_int(size, &scounts)
 *     cdef object stmp2 = newarray_int(size, &sdispls)             # <<<<<<<<<<<<<<
 *     cdef object rtmp1 = newarray_int(size, &rcounts)
 *     cdef object rtmp2 = newarray_int(size, &rdispls)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_sdispls)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_stmp2 = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":414
 *     cdef object stmp1 = newarray_int(size, &scounts)
 *     cdef object stmp2 = newarray_int(size, &sdispls)
 *     cdef object rtmp1 = newarray_int(size, &rcounts)             # <<<<<<<<<<<<<<
 *     cdef object rtmp2 = newarray_int(size, &rdispls)
 *     #
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_rcounts)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rtmp1 = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":415
 *     cdef object stmp2 = newarray_int(size, &sdispls)
 *     cdef object rtmp1 = newarray_int(size, &rcounts)
 *     cdef object rtmp2 = newarray_int(size, &rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = pickler.dumpv(sendobj, &sbuf, size, scounts, sdispls)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_size, (&__pyx_v_rdispls)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rtmp2 = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":417
 *     cdef object rtmp2 = newarray_int(size, &rdispls)
 *     #
 *     cdef object smsg = pickler.dumpv(sendobj, &sbuf, size, scounts, sdispls)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Alltoall(scounts, 1, MPI_INT,
 *                                      rcounts, 1, MPI_INT,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->dumpv(__pyx_v_pickler, __pyx_v_sendobj, (&__pyx_v_sbuf), __pyx_v_size, __pyx_v_scounts, __pyx_v_sdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":418
 *     #
 *     cdef object smsg = pickler.dumpv(sendobj, &sbuf, size, scounts, sdispls)
 *     with nogil: CHKERR( MPI_Alltoall(scounts, 1, MPI_INT,             # <<<<<<<<<<<<<<
 *                                      rcounts, 1, MPI_INT,
 *                                      comm) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":420
 *     with nogil: CHKERR( MPI_Alltoall(scounts, 1, MPI_INT,
 *                                      rcounts, 1, MPI_INT,
 *                                      comm) )             # <<<<<<<<<<<<<<
 *     cdef object rmsg = pickler.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Alltoallv(sbuf, scounts, sdispls, stype,
 */
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L5;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":421
 *                                      rcounts, 1, MPI_INT,
 *                                      comm) )
 *     cdef object rmsg = pickler.allocv(&rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Alltoallv(sbuf, scounts, sdispls, stype,
 *                                       rbuf, rcounts, rdispls, rtype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->allocv(__pyx_v_pickler, (&__pyx_v_rbuf), __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":422
 *                                      comm) )
 *     cdef object rmsg = pickler.allocv(&rbuf, size, rcounts, rdispls)
 *     with nogil: CHKERR( MPI_Alltoallv(sbuf, scounts, sdispls, stype,             # <<<<<<<<<<<<<<
 *                                       rbuf, rcounts, rdispls, rtype,
 *                                       comm) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":424
 *     with nogil: CHKERR( MPI_Alltoallv(sbuf, scounts, sdispls, stype,
 *                                       rbuf, rcounts, rdispls, rtype,
 *                                       comm) )             # <<<<<<<<<<<<<<
 *     rmsg = pickler.loadv(rmsg, size, rcounts, rdispls)
 *     return rmsg
 */
      /* __pyx_t_2 allocated */
      __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[1]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L9;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":425
 *                                       rbuf, rcounts, rdispls, rtype,
 *                                       comm) )
 *     rmsg = pickler.loadv(rmsg, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler *)__pyx_v_pickler->__pyx_vtab)->loadv(__pyx_v_pickler, __pyx_v_rmsg, __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 425; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":426
 *                                       comm) )
 *     rmsg = pickler.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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickler);
  __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_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":430
 * # --------------------------------------------------------------------
 * 
 * cdef object PyMPI_reduce(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                          object op, int root, MPI_Comm comm):
 *     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;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("PyMPI_reduce");
  __pyx_v_items = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":432
 * cdef object PyMPI_reduce(object sendobj, object recvobj,
 *                          object op, int root, MPI_Comm comm):
 *     items = PyMPI_gather(sendobj, recvobj, root, comm)             # <<<<<<<<<<<<<<
 *     return _py_reduce(op, items)
 * 
 */
  /* __pyx_t_1 allocated */
  __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[1]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_items);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":433
 *                          object op, int root, MPI_Comm comm):
 *     items = PyMPI_gather(sendobj, recvobj, root, comm)
 *     return _py_reduce(op, items)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__py_reduce(__pyx_v_op, __pyx_v_items); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":436
 * 
 * 
 * cdef object PyMPI_allreduce(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                             object op, MPI_Comm comm):
 *     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;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("PyMPI_allreduce");
  __pyx_v_items = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":438
 * cdef object PyMPI_allreduce(object sendobj, object recvobj,
 *                             object op, MPI_Comm comm):
 *     items = PyMPI_allgather(sendobj, recvobj, comm)             # <<<<<<<<<<<<<<
 *     return _py_reduce(op, items)
 * 
 */
  /* __pyx_t_1 allocated */
  __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[1]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_items);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":439
 *                             object op, MPI_Comm comm):
 *     items = PyMPI_allgather(sendobj, recvobj, comm)
 *     return _py_reduce(op, items)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__py_reduce(__pyx_v_op, __pyx_v_items); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":442
 * 
 * 
 * cdef object PyMPI_scan(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                        object op, MPI_Comm comm):
 *     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;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("PyMPI_scan");
  __pyx_v_items = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":444
 * cdef object PyMPI_scan(object sendobj, object recvobj,
 *                        object op, MPI_Comm comm):
 *     items = PyMPI_gather(sendobj, None, 0, comm)             # <<<<<<<<<<<<<<
 *     items = _py_scan(op, items)
 *     return PyMPI_scatter(items, None, 0, comm)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_gather(__pyx_v_sendobj, Py_None, 0, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_items);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":445
 *                        object op, MPI_Comm comm):
 *     items = PyMPI_gather(sendobj, None, 0, comm)
 *     items = _py_scan(op, items)             # <<<<<<<<<<<<<<
 *     return PyMPI_scatter(items, None, 0, comm)
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__py_scan(__pyx_v_op, __pyx_v_items); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_items);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":446
 *     items = PyMPI_gather(sendobj, None, 0, comm)
 *     items = _py_scan(op, items)
 *     return PyMPI_scatter(items, None, 0, comm)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_scatter(__pyx_v_items, Py_None, 0, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_scan");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":449
 * 
 * 
 * cdef object PyMPI_exscan(object sendobj, object recvobj,             # <<<<<<<<<<<<<<
 *                          object op, MPI_Comm comm):
 *     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;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("PyMPI_exscan");
  __pyx_v_items = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":451
 * cdef object PyMPI_exscan(object sendobj, object recvobj,
 *                          object op, MPI_Comm comm):
 *     items = PyMPI_gather(sendobj, None, 0, comm)             # <<<<<<<<<<<<<<
 *     items = _py_exscan(op, items)
 *     return PyMPI_scatter(items, None, 0, comm)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_gather(__pyx_v_sendobj, Py_None, 0, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_items);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":452
 *                          object op, MPI_Comm comm):
 *     items = PyMPI_gather(sendobj, None, 0, comm)
 *     items = _py_exscan(op, items)             # <<<<<<<<<<<<<<
 *     return PyMPI_scatter(items, None, 0, comm)
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__py_exscan(__pyx_v_op, __pyx_v_items); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_items);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":453
 *     items = PyMPI_gather(sendobj, None, 0, comm)
 *     items = _py_exscan(op, items)
 *     return PyMPI_scatter(items, None, 0, comm)             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_scatter(__pyx_v_items, Py_None, 0, __pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_exscan");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":5
 * #  Datatype
 * 
 * cdef api object PyMPIDatatype_New(MPI_Datatype arg):             # <<<<<<<<<<<<<<
 *     cdef Datatype obj = Datatype()
 *     obj.ob_mpi = arg
 */

static  PyObject *PyMPIDatatype_New(MPI_Datatype __pyx_v_arg) {
  PyMPIDatatypeObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("PyMPIDatatype_New");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":6
 * 
 * cdef api object PyMPIDatatype_New(MPI_Datatype arg):
 *     cdef Datatype obj = Datatype()             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_obj = ((PyMPIDatatypeObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":7
 * cdef api object PyMPIDatatype_New(MPI_Datatype arg):
 *     cdef Datatype obj = Datatype()
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":8
 *     cdef Datatype obj = 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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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 *PyMPIDatatype_Get(PyObject *__pyx_v_arg) {
  MPI_Datatype *__pyx_r;
  __Pyx_SetupRefcountContext("PyMPIDatatype_Get");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":11
 * 
 * cdef api MPI_Datatype* PyMPIDatatype_Get(object arg) except NULL:
 *     return &(<Datatype?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  if (!(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((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_r = NULL;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":17
 * #  Status
 * 
 * cdef api object PyMPIStatus_New(MPI_Status *arg):             # <<<<<<<<<<<<<<
 *     cdef Status obj = Status()
 *     if (arg != NULL and
 */

static  PyObject *PyMPIStatus_New(MPI_Status *__pyx_v_arg) {
  PyMPIStatusObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("PyMPIStatus_New");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":18
 * 
 * cdef api object PyMPIStatus_New(MPI_Status *arg):
 *     cdef Status obj = Status()             # <<<<<<<<<<<<<<
 *     if (arg != NULL and
 *         arg != MPI_STATUS_IGNORE and
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Status)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Status))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_obj = ((PyMPIStatusObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":19
 * cdef api object PyMPIStatus_New(MPI_Status *arg):
 *     cdef Status obj = Status()
 *     if (arg != NULL and             # <<<<<<<<<<<<<<
 *         arg != MPI_STATUS_IGNORE and
 *         arg != MPI_STATUSES_IGNORE):
 */
  if ((__pyx_v_arg != NULL)) {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":20
 *     cdef Status obj = Status()
 *     if (arg != NULL and
 *         arg != MPI_STATUS_IGNORE and             # <<<<<<<<<<<<<<
 *         arg != MPI_STATUSES_IGNORE):
 *         obj.ob_mpi = arg[0]
 */
    if ((__pyx_v_arg != MPI_STATUS_IGNORE)) {

      /* "/u/dalcinl/Devel/mpi4py-dev/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_2 allocated */
      __pyx_t_2 = (__pyx_v_arg != MPI_STATUSES_IGNORE);
    } else {
      __pyx_t_2 = (__pyx_v_arg != MPI_STATUS_IGNORE);
    }
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_t_2;
    /* __pyx_t_2 released */
  } else {
    __pyx_t_3 = (__pyx_v_arg != NULL);
  }
  if (__pyx_t_3) {
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/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:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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 *PyMPIStatus_Get(PyObject *__pyx_v_arg) {
  MPI_Status *__pyx_r;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("PyMPIStatus_Get");

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = (__pyx_v_arg == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_r = MPI_STATUS_IGNORE;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 (!(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Status))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((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_r = NULL;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":34
 * #  Request
 * 
 * cdef api object PyMPIRequest_New(MPI_Request arg):             # <<<<<<<<<<<<<<
 *     cdef Request obj = Request()
 *     obj.ob_mpi = arg
 */

static  PyObject *PyMPIRequest_New(MPI_Request __pyx_v_arg) {
  PyMPIRequestObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("PyMPIRequest_New");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":35
 * 
 * cdef api object PyMPIRequest_New(MPI_Request arg):
 *     cdef Request obj = Request()             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_obj = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":36
 * cdef api object PyMPIRequest_New(MPI_Request arg):
 *     cdef Request obj = Request()
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":37
 *     cdef Request obj = 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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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 *PyMPIRequest_Get(PyObject *__pyx_v_arg) {
  MPI_Request *__pyx_r;
  __Pyx_SetupRefcountContext("PyMPIRequest_Get");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":40
 * 
 * cdef api MPI_Request* PyMPIRequest_Get(object arg) except NULL:
 *     return &(<Request?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  if (!(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((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_r = NULL;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":46
 * #  Op
 * 
 * cdef api object PyMPIOp_New(MPI_Op arg):             # <<<<<<<<<<<<<<
 *     cdef Op obj = Op()
 *     obj.ob_mpi = arg
 */

static  PyObject *PyMPIOp_New(MPI_Op __pyx_v_arg) {
  PyMPIOpObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("PyMPIOp_New");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":47
 * 
 * cdef api object PyMPIOp_New(MPI_Op arg):
 *     cdef Op obj = Op()             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Op)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Op))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_obj = ((PyMPIOpObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":48
 * cdef api object PyMPIOp_New(MPI_Op arg):
 *     cdef Op obj = Op()
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":49
 *     cdef Op obj = 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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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 *PyMPIOp_Get(PyObject *__pyx_v_arg) {
  MPI_Op *__pyx_r;
  __Pyx_SetupRefcountContext("PyMPIOp_Get");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":52
 * 
 * cdef api MPI_Op* PyMPIOp_Get(object arg) except NULL:
 *     return &(<Op?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  if (!(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Op))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((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_r = NULL;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":58
 * #  Info
 * 
 * cdef api object PyMPIInfo_New(MPI_Info arg):             # <<<<<<<<<<<<<<
 *     cdef Info obj = Info()
 *     obj.ob_mpi = arg
 */

static  PyObject *PyMPIInfo_New(MPI_Info __pyx_v_arg) {
  PyMPIInfoObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("PyMPIInfo_New");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":59
 * 
 * cdef api object PyMPIInfo_New(MPI_Info arg):
 *     cdef Info obj = Info()             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Info)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_obj = ((PyMPIInfoObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":60
 * cdef api object PyMPIInfo_New(MPI_Info arg):
 *     cdef Info obj = Info()
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":61
 *     cdef Info obj = 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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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 *PyMPIInfo_Get(PyObject *__pyx_v_arg) {
  MPI_Info *__pyx_r;
  __Pyx_SetupRefcountContext("PyMPIInfo_Get");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":64
 * 
 * cdef api MPI_Info* PyMPIInfo_Get(object arg) except NULL:
 *     return &(<Info?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  if (!(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((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_r = NULL;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":70
 * #  Group
 * 
 * cdef api object PyMPIGroup_New(MPI_Group arg):             # <<<<<<<<<<<<<<
 *     cdef Group obj = Group()
 *     obj.ob_mpi = arg
 */

static  PyObject *PyMPIGroup_New(MPI_Group __pyx_v_arg) {
  PyMPIGroupObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("PyMPIGroup_New");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":71
 * 
 * cdef api object PyMPIGroup_New(MPI_Group arg):
 *     cdef Group obj = Group()             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  /* __pyx_t_1 allocated */
  __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[17]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_obj = ((PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":72
 * cdef api object PyMPIGroup_New(MPI_Group arg):
 *     cdef Group obj = Group()
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":73
 *     cdef Group obj = 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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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 *PyMPIGroup_Get(PyObject *__pyx_v_arg) {
  MPI_Group *__pyx_r;
  __Pyx_SetupRefcountContext("PyMPIGroup_Get");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":76
 * 
 * cdef api MPI_Group* PyMPIGroup_Get(object arg) except NULL:
 *     return &(<Group?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  if (!(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((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_r = NULL;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":82
 * # Comm
 * 
 * cdef api object PyMPIComm_New(MPI_Comm arg):             # <<<<<<<<<<<<<<
 *     cdef type cls   = Comm
 *     cdef int  inter = 0
 */

static  PyObject *PyMPIComm_New(MPI_Comm __pyx_v_arg) {
  PyObject *__pyx_v_cls = 0;
  int __pyx_v_inter;
  int __pyx_v_topo;
  PyMPICommObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("PyMPIComm_New");

  /* "/u/dalcinl/Devel/mpi4py-dev/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);

  /* "/u/dalcinl/Devel/mpi4py-dev/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;

  /* "/u/dalcinl/Devel/mpi4py-dev/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;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = (__pyx_v_arg != MPI_COMM_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
    __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[17]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":88
 *     if arg != MPI_COMM_NULL:
 *         CHKERR( MPI_Comm_test_inter(arg, &inter) )
 *         if inter:             # <<<<<<<<<<<<<<
 *             cls = Intercomm
 *         else:
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_v_inter;
    if (__pyx_t_2) {
      /* __pyx_t_2 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/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*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":91
 *             cls = Intercomm
 *         else:
 *             CHKERR( MPI_Topo_test(arg, &topo) )             # <<<<<<<<<<<<<<
 *             if topo == <int>MPI_UNDEFINED:
 *                 cls = Intracomm
 */
      /* __pyx_t_2 allocated */
      __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[17]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      /* __pyx_t_2 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
      __pyx_t_1 = (__pyx_v_topo == ((int)MPI_UNDEFINED));
      if (__pyx_t_1) {
        /* __pyx_t_1 released */

        /* "/u/dalcinl/Devel/mpi4py-dev/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;
      }

      /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
      __pyx_t_1 = (__pyx_v_topo == ((int)MPI_CART));
      if (__pyx_t_1) {
        /* __pyx_t_1 released */

        /* "/u/dalcinl/Devel/mpi4py-dev/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;
      }

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":96
 *             elif topo == <int>MPI_CART:
 *                 cls = Cartcomm
 *             elif topo == <int>MPI_GRAPH:             # <<<<<<<<<<<<<<
 *                 cls = Graphcomm
 *     cdef Comm obj = cls()
 */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = (__pyx_v_topo == ((int)MPI_GRAPH));
      if (__pyx_t_1) {
        /* __pyx_t_1 released */

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":97
 *                 cls = Cartcomm
 *             elif topo == <int>MPI_GRAPH:
 *                 cls = Graphcomm             # <<<<<<<<<<<<<<
 *     cdef Comm obj = cls()
 *     obj.ob_mpi = arg
 */
        __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;
      }
      __pyx_L5:;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":98
 *             elif topo == <int>MPI_GRAPH:
 *                 cls = Graphcomm
 *     cdef Comm obj = cls()             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Call(((PyObject *)__pyx_v_cls), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (!(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Comm))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_obj = ((PyMPICommObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":99
 *                 cls = Graphcomm
 *     cdef Comm obj = cls()
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":100
 *     cdef Comm obj = 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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":102
 *     return obj
 * 
 * cdef api MPI_Comm* PyMPIComm_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Comm?>arg).ob_mpi
 * 
 */

static  MPI_Comm *PyMPIComm_Get(PyObject *__pyx_v_arg) {
  MPI_Comm *__pyx_r;
  __Pyx_SetupRefcountContext("PyMPIComm_Get");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":103
 * 
 * cdef api MPI_Comm* PyMPIComm_Get(object arg) except NULL:
 *     return &(<Comm?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  if (!(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Comm))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((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_r = NULL;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":109
 * # Win
 * 
 * cdef api object PyMPIWin_New(MPI_Win arg):             # <<<<<<<<<<<<<<
 *     cdef Win obj = Win()
 *     obj.ob_mpi = arg
 */

static  PyObject *PyMPIWin_New(MPI_Win __pyx_v_arg) {
  PyMPIWinObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("PyMPIWin_New");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":110
 * 
 * cdef api object PyMPIWin_New(MPI_Win arg):
 *     cdef Win obj = Win()             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Win)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Win))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_obj = ((PyMPIWinObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":111
 * cdef api object PyMPIWin_New(MPI_Win arg):
 *     cdef Win obj = Win()
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":112
 *     cdef Win obj = 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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":114
 *     return obj
 * 
 * cdef api MPI_Win* PyMPIWin_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Win?>arg).ob_mpi
 * 
 */

static  MPI_Win *PyMPIWin_Get(PyObject *__pyx_v_arg) {
  MPI_Win *__pyx_r;
  __Pyx_SetupRefcountContext("PyMPIWin_Get");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":115
 * 
 * cdef api MPI_Win* PyMPIWin_Get(object arg) except NULL:
 *     return &(<Win?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  if (!(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Win))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((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_r = NULL;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":121
 * # File
 * 
 * cdef api object PyMPIFile_New(MPI_File arg):             # <<<<<<<<<<<<<<
 *     cdef File obj = File()
 *     obj.ob_mpi = arg
 */

static  PyObject *PyMPIFile_New(MPI_File __pyx_v_arg) {
  PyMPIFileObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("PyMPIFile_New");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":122
 * 
 * cdef api object PyMPIFile_New(MPI_File arg):
 *     cdef File obj = File()             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_File)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_File))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_obj = ((PyMPIFileObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":123
 * cdef api object PyMPIFile_New(MPI_File arg):
 *     cdef File obj = File()
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":124
 *     cdef File obj = 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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":126
 *     return obj
 * 
 * cdef api MPI_File* PyMPIFile_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<File?>arg).ob_mpi
 * 
 */

static  MPI_File *PyMPIFile_Get(PyObject *__pyx_v_arg) {
  MPI_File *__pyx_r;
  __Pyx_SetupRefcountContext("PyMPIFile_Get");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":127
 * 
 * cdef api MPI_File* PyMPIFile_Get(object arg) except NULL:
 *     return &(<File?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  if (!(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_File))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((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_r = NULL;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":133
 * # Errhandler
 * 
 * cdef api object PyMPIErrhandler_New(MPI_Errhandler arg):             # <<<<<<<<<<<<<<
 *     cdef Errhandler obj = Errhandler()
 *     obj.ob_mpi = arg
 */

static  PyObject *PyMPIErrhandler_New(MPI_Errhandler __pyx_v_arg) {
  PyMPIErrhandlerObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("PyMPIErrhandler_New");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":134
 * 
 * cdef api object PyMPIErrhandler_New(MPI_Errhandler arg):
 *     cdef Errhandler obj = Errhandler()             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Errhandler))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_obj = ((PyMPIErrhandlerObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":135
 * cdef api object PyMPIErrhandler_New(MPI_Errhandler arg):
 *     cdef Errhandler obj = Errhandler()
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":136
 *     cdef Errhandler obj = 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_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":138
 *     return obj
 * 
 * cdef api MPI_Errhandler* PyMPIErrhandler_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Errhandler?>arg).ob_mpi
 * 
 */

static  MPI_Errhandler *PyMPIErrhandler_Get(PyObject *__pyx_v_arg) {
  MPI_Errhandler *__pyx_r;
  __Pyx_SetupRefcountContext("PyMPIErrhandler_Get");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/CAPI.pxi":139
 * 
 * cdef api MPI_Errhandler* PyMPIErrhandler_Get(object arg) except NULL:
 *     return &(<Errhandler?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # --------------------------------------------------------------------
 */
  if (!(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Errhandler))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = (&((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_r = NULL;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_self,&__pyx_kp_ierr,0};
  __Pyx_SetupRefcountContext("__init__");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_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_kp_ierr);
        if (unlikely(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[2]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_self = values[0];
    if (values[1]) {
      __pyx_v_ierr = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_ierr == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_ierr = 0;
    }
  } else {
    __pyx_v_ierr = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_ierr = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_ierr == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_self = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[2]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__init__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = (__pyx_v_ierr < MPI_SUCCESS);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_v_ierr = MPI_ERR_UNKNOWN;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = (__pyx_v_ierr > MPI_ERR_LASTCODE);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_v_ierr = MPI_ERR_UNKNOWN;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_v_self, __pyx_kp_ob_mpi, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = PyObject_GetAttr(__pyx_builtin_RuntimeError, __pyx_kp___init__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __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 released */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __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_t_2 released */
  /* __pyx_t_4 released */
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  __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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___eq__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception___eq__[] = "Exception.__eq__(self, int error)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception___eq__ = {__Pyx_NAMESTR("__eq__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception___eq__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception___eq__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_self,&__pyx_kp_error,0};
  __Pyx_SetupRefcountContext("__eq__");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_self);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_error);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__eq__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __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[2]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_self = values[0];
    __pyx_v_error = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_self = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_error = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __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[2]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__eq__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_v_ierr = __pyx_t_2;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)(__pyx_v_ierr == __pyx_v_error))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___ne__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception___ne__[] = "Exception.__ne__(self, int error)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception___ne__ = {__Pyx_NAMESTR("__ne__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception___ne__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception___ne__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_self,&__pyx_kp_error,0};
  __Pyx_SetupRefcountContext("__ne__");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_self);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_error);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__ne__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __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[2]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_self = values[0];
    __pyx_v_error = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_self = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_error = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __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[2]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__ne__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_v_ierr = __pyx_t_2;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)(__pyx_v_ierr != __pyx_v_error))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___lt__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception___lt__[] = "Exception.__lt__(self, int error)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception___lt__ = {__Pyx_NAMESTR("__lt__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception___lt__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception___lt__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_self,&__pyx_kp_error,0};
  __Pyx_SetupRefcountContext("__lt__");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_self);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_error);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__lt__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __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[2]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_self = values[0];
    __pyx_v_error = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_self = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_error = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __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[2]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__lt__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_v_ierr = __pyx_t_2;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)(__pyx_v_ierr < __pyx_v_error))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___le__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception___le__[] = "Exception.__le__(self, int error)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception___le__ = {__Pyx_NAMESTR("__le__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception___le__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception___le__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_self,&__pyx_kp_error,0};
  __Pyx_SetupRefcountContext("__le__");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_self);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_error);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__le__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __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[2]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_self = values[0];
    __pyx_v_error = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_self = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_error = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __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[2]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__le__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_v_ierr = __pyx_t_2;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)(__pyx_v_ierr <= __pyx_v_error))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___gt__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception___gt__[] = "Exception.__gt__(self, int error)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception___gt__ = {__Pyx_NAMESTR("__gt__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception___gt__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception___gt__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_self,&__pyx_kp_error,0};
  __Pyx_SetupRefcountContext("__gt__");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_self);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_error);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__gt__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __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[2]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_self = values[0];
    __pyx_v_error = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_self = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_error = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __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[2]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__gt__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_v_ierr = __pyx_t_2;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)(__pyx_v_ierr > __pyx_v_error))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___ge__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception___ge__[] = "Exception.__ge__(self, int error)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception___ge__ = {__Pyx_NAMESTR("__ge__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception___ge__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception___ge__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_self,&__pyx_kp_error,0};
  __Pyx_SetupRefcountContext("__ge__");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_self);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_error);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__ge__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __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[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_self = values[0];
    __pyx_v_error = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_self = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_error = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __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[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__ge__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_v_ierr = __pyx_t_2;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":30
 *     def __ge__(self, int error):
 *         cdef int ierr = self.ob_mpi
 *         return <bint> (ierr >= error)             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)(__pyx_v_ierr >= __pyx_v_error))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":32
 *         return <bint> (ierr >= error)
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return ierr != MPI_SUCCESS
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___nonzero__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception___nonzero__[] = "Exception.__nonzero__(self)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception___nonzero__ = {__Pyx_NAMESTR("__nonzero__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception___nonzero__, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception___nonzero__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___nonzero__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("__nonzero__");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":33
 * 
 *     def __nonzero__(self):
 *         cdef int ierr = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return ierr != MPI_SUCCESS
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_v_ierr = __pyx_t_2;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":34
 *     def __nonzero__(self):
 *         cdef int ierr = self.ob_mpi
 *         return ierr != MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_ierr != MPI_SUCCESS)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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.__nonzero__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":36
 *         return ierr != MPI_SUCCESS
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return ierr != MPI_SUCCESS
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___bool__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception___bool__[] = "Exception.__bool__(self)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception___bool__ = {__Pyx_NAMESTR("__bool__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception___bool__, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception___bool__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___bool__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("__bool__");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":37
 * 
 *     def __bool__(self):
 *         cdef int ierr = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return ierr != MPI_SUCCESS
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_v_ierr = __pyx_t_2;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":38
 *     def __bool__(self):
 *         cdef int ierr = self.ob_mpi
 *         return ierr != MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 *     def __int__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_ierr != MPI_SUCCESS)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":40
 *         return ierr != MPI_SUCCESS
 * 
 *     def __int__(self):             # <<<<<<<<<<<<<<
 *         if not mpi_active():
 *             return self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___int__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception___int__[] = "Exception.__int__(self)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception___int__ = {__Pyx_NAMESTR("__int__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception___int__, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception___int__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___int__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__int__");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":41
 * 
 *     def __int__(self):
 *         if not mpi_active():             # <<<<<<<<<<<<<<
 *             return self.ob_mpi
 *         return self.Get_error_code()
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":42
 *     def __int__(self):
 *         if not mpi_active():
 *             return self.ob_mpi             # <<<<<<<<<<<<<<
 *         return self.Get_error_code()
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":43
 *         if not mpi_active():
 *             return self.ob_mpi
 *         return self.Get_error_code()             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_error_code); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":45
 *         return self.Get_error_code()
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return mpistr('MPI.Exception(%d)') % self.ob_mpi
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___repr__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception___repr__[] = "Exception.__repr__(self)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception___repr__ = {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception___repr__, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception___repr__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___repr__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__repr__");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":46
 * 
 *     def __repr__(self):
 *         return mpistr('MPI.Exception(%d)') % self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_130); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyNumber_Remainder(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_2 released */
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  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.Exception.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":48
 *         return mpistr('MPI.Exception(%d)') % self.ob_mpi
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         if not mpi_active():
 *             return mpistr('error code: %d') % self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___str__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception___str__[] = "Exception.__str__(self)";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception___str__ = {__Pyx_NAMESTR("__str__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception___str__, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception___str__)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception___str__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("__str__");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":49
 * 
 *     def __str__(self):
 *         if not mpi_active():             # <<<<<<<<<<<<<<
 *             return mpistr('error code: %d') % self.ob_mpi
 *         return self.Get_error_string()
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_f_6mpi4py_3MPI_mpi_active());
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":50
 *     def __str__(self):
 *         if not mpi_active():
 *             return mpistr('error code: %d') % self.ob_mpi             # <<<<<<<<<<<<<<
 *         return self.Get_error_string()
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_131); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyNumber_Remainder(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __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_t_2 released */
    /* __pyx_t_3 released */
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":51
 *         if not mpi_active():
 *             return mpistr('error code: %d') % self.ob_mpi
 *         return self.Get_error_string()             # <<<<<<<<<<<<<<
 * 
 *     def Get_error_code(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_error_string); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  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.Exception.__str__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":53
 *         return self.Get_error_string()
 * 
 *     def Get_error_code(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error code
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_Get_error_code(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_Get_error_code[] = "Exception.Get_error_code(self)\n\n        Error code\n        ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_Get_error_code = {__Pyx_NAMESTR("Get_error_code"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_Get_error_code, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_Get_error_code)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_Get_error_code(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  int __pyx_v_errorcode;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Get_error_code");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":57
 *         Error code
 *         """
 *         cdef int errorcode = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *         errorcode = self.ob_mpi
 *         return errorcode
 */
  __pyx_v_errorcode = MPI_SUCCESS;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":58
 *         """
 *         cdef int errorcode = MPI_SUCCESS
 *         errorcode = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return errorcode
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_v_errorcode = __pyx_t_2;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":59
 *         cdef int errorcode = MPI_SUCCESS
 *         errorcode = self.ob_mpi
 *         return errorcode             # <<<<<<<<<<<<<<
 * 
 *     error_code = property(Get_error_code, doc=mpistr("error code"))
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_errorcode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":63
 *     error_code = property(Get_error_code, doc=mpistr("error code"))
 * 
 *     def Get_error_class(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error class
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_Get_error_class(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_Get_error_class[] = "Exception.Get_error_class(self)\n\n        Error class\n        ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_Get_error_class = {__Pyx_NAMESTR("Get_error_class"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_Get_error_class, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_Get_error_class)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_Get_error_class(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  int __pyx_v_errorclass;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Get_error_class");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":67
 *         Error class
 *         """
 *         cdef int errorclass = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Error_class(self.ob_mpi, &errorclass) )
 *         return errorclass
 */
  __pyx_v_errorclass = MPI_SUCCESS;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":68
 *         """
 *         cdef int errorclass = MPI_SUCCESS
 *         CHKERR( MPI_Error_class(self.ob_mpi, &errorclass) )             # <<<<<<<<<<<<<<
 *         return errorclass
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_3 allocated */
  __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[2]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":69
 *         cdef int errorclass = MPI_SUCCESS
 *         CHKERR( MPI_Error_class(self.ob_mpi, &errorclass) )
 *         return errorclass             # <<<<<<<<<<<<<<
 * 
 *     error_class = property(Get_error_class, doc=mpistr("error class"))
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_errorclass); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":73
 *     error_class = property(Get_error_class, doc=mpistr("error class"))
 * 
 *     def Get_error_string(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error string
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_Get_error_string(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Exception_Get_error_string[] = "Exception.Get_error_string(self)\n\n        Error string\n        ";
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_Get_error_string = {__Pyx_NAMESTR("Get_error_string"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Exception_Get_error_string, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Exception_Get_error_string)};
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_Get_error_string(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  char __pyx_v_string[(MPI_MAX_ERROR_STRING + 1)];
  int __pyx_v_resultlen;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Get_error_string");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":78
 *         """
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":79
 *         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 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_3 allocated */
  __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[2]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":80
 *         cdef int resultlen = 0
 *         CHKERR( MPI_Error_string(self.ob_mpi, string, &resultlen) )
 *         return tompistr(string, resultlen)             # <<<<<<<<<<<<<<
 * 
 *     error_string = property(Get_error_string, doc=mpistr("error string"))
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_string, __pyx_v_resultlen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":6
 * 
 * 
 * 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_arg_errorcode); /*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 PyObject *__pyx_pf_6mpi4py_3MPI_Get_error_class(PyObject *__pyx_self, PyObject *__pyx_arg_errorcode) {
  int __pyx_v_errorcode;
  int __pyx_v_errorclass;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_error_class");
  __pyx_self = __pyx_self;
  assert(__pyx_arg_errorcode); {
    __pyx_v_errorcode = __pyx_PyInt_int(__pyx_arg_errorcode); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Get_error_class");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":10
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":11
 *     """
 *     cdef int errorclass = MPI_SUCCESS
 *     CHKERR( MPI_Error_class(errorcode, &errorclass) )             # <<<<<<<<<<<<<<
 *     return errorclass
 * 
 */
  /* __pyx_t_1 allocated */
  __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[18]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":12
 *     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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_errorclass); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":14
 *     return errorclass
 * 
 * def Get_error_string(int errorcode):             # <<<<<<<<<<<<<<
 *     """
 *     Return a string for a given error code
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Get_error_string(PyObject *__pyx_self, PyObject *__pyx_arg_errorcode); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Get_error_string[] = "Get_error_string(int errorcode)\n\n    Return a string for a given error code\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Get_error_string(PyObject *__pyx_self, PyObject *__pyx_arg_errorcode) {
  int __pyx_v_errorcode;
  char __pyx_v_string[(MPI_MAX_ERROR_STRING + 1)];
  int __pyx_v_resultlen;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_error_string");
  __pyx_self = __pyx_self;
  assert(__pyx_arg_errorcode); {
    __pyx_v_errorcode = __pyx_PyInt_int(__pyx_arg_errorcode); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Get_error_string");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":19
 *     """
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":20
 *     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 allocated */
  __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[18]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":21
 *     cdef int resultlen = 0
 *     CHKERR( MPI_Error_string(errorcode, string, &resultlen) )
 *     return tompistr(string, resultlen)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_string, __pyx_v_resultlen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":8
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_ERRHANDLER_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((PyMPIErrhandlerObject *)__pyx_v_self)->ob_mpi = MPI_ERRHANDLER_NULL;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_10Errhandler___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("__dealloc__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":11
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( _del_Errhandler(&self.ob_mpi) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!(((PyMPIErrhandlerObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI__del_Errhandler((&((PyMPIErrhandlerObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.__dealloc__");
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyMPIErrhandlerObject *__pyx_v_s = 0;
  PyMPIErrhandlerObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("__richcmp__");

  /* "/u/dalcinl/Devel/mpi4py-dev/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 = self, o = other
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_self, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler))); 
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_TypeCheck(__pyx_v_other, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler))); 
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_t_2);
  /* __pyx_t_2 released */
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":17
 *         if not isinstance(self,  Errhandler): return NotImplemented
 *         if not isinstance(other, Errhandler): return NotImplemented
 *         cdef Errhandler s = self, o = other             # <<<<<<<<<<<<<<
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 */
  if (!(__Pyx_TypeTest(__pyx_v_self, __pyx_ptype_6mpi4py_3MPI_Errhandler))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_self);
  __pyx_v_s = ((PyMPIErrhandlerObject *)__pyx_v_self);
  if (!(__Pyx_TypeTest(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Errhandler))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_other);
  __pyx_v_o = ((PyMPIErrhandlerObject *)__pyx_v_other);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":18
 *         if not isinstance(other, Errhandler): return NotImplemented
 *         cdef Errhandler s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 */
  switch (__pyx_v_op) {
    case 2:
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    case 3:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":19
 *         cdef Errhandler s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    default:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":20
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_132); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    {__pyx_filename = __pyx_f[6]; __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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.__richcmp__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":22
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_ERRHANDLER_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_10Errhandler___nonzero__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_10Errhandler___nonzero__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__nonzero__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":23
 * 
 *     def __nonzero__(self):
 *         return self.ob_mpi != MPI_ERRHANDLER_NULL             # <<<<<<<<<<<<<<
 * 
 *     def Free(self):
 */
  __pyx_r = (((PyMPIErrhandlerObject *)__pyx_v_self)->ob_mpi != MPI_ERRHANDLER_NULL);
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/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_Free(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_10Errhandler_Free[] = "Errhandler.Free(self)\n\n        Free an error handler\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_Free(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Free");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":29
 *         Free an error handler
 *         """
 *         CHKERR( MPI_Errhandler_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Errhandler_free((&((PyMPIErrhandlerObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.Free");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":34
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_py2f(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_10Errhandler_py2f[] = "Errhandler.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_py2f(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("py2f");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":37
 *         """
 *         """
 *         return MPI_Errhandler_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(MPI_Errhandler_c2f(((PyMPIErrhandlerObject *)__pyx_v_self)->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;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":40
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_10Errhandler_f2py[] = "Errhandler.f2py(cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  __Pyx_SetupRefcountContext("f2py");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":43
 *         """
 *         """
 *         cdef Errhandler errhandler = cls()             # <<<<<<<<<<<<<<
 *         errhandler.ob_mpi = MPI_Errhandler_f2c(arg)
 *         return errhandler
 */
  /* __pyx_t_1 allocated */
  __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 = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Errhandler))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_errhandler = ((PyMPIErrhandlerObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":44
 *         """
 *         cdef Errhandler errhandler = cls()
 *         errhandler.ob_mpi = MPI_Errhandler_f2c(arg)             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_long(__pyx_v_arg); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_errhandler->ob_mpi = MPI_Errhandler_f2c(__pyx_t_2);
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":45
 *         cdef 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":31
 *     """
 * 
 *     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_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":32
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi = MPI_DATATYPE_NULL;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":34
 *         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___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_8Datatype___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("__dealloc__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":35
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( _del_Datatype(&self.ob_mpi) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!(((PyMPIDatatypeObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":36
 *     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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI__del_Datatype((&((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.__dealloc__");
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":38
 *         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___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyMPIDatatypeObject *__pyx_v_s = 0;
  PyMPIDatatypeObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("__richcmp__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":39
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Datatype): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Datatype): return NotImplemented
 *         cdef Datatype s = self, o = other
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_self, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype))); 
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":40
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Datatype): return NotImplemented
 *         if not isinstance(other, Datatype): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Datatype s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_TypeCheck(__pyx_v_other, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype))); 
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_t_2);
  /* __pyx_t_2 released */
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":41
 *         if not isinstance(self,  Datatype): return NotImplemented
 *         if not isinstance(other, Datatype): return NotImplemented
 *         cdef Datatype s = self, o = other             # <<<<<<<<<<<<<<
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 */
  if (!(__Pyx_TypeTest(__pyx_v_self, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_self);
  __pyx_v_s = ((PyMPIDatatypeObject *)__pyx_v_self);
  if (!(__Pyx_TypeTest(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_other);
  __pyx_v_o = ((PyMPIDatatypeObject *)__pyx_v_other);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":42
 *         if not isinstance(other, Datatype): return NotImplemented
 *         cdef Datatype s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 */
  switch (__pyx_v_op) {
    case 2:
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    case 3:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":43
 *         cdef Datatype s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    default:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":44
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_133); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    {__pyx_filename = __pyx_f[19]; __pyx_lineno = 44; __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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.__richcmp__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":46
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_DATATYPE_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_8Datatype___nonzero__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_8Datatype___nonzero__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__nonzero__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":47
 * 
 *     def __nonzero__(self):
 *         return self.ob_mpi != MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     # Datatype Accessors
 */
  __pyx_r = (((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi != MPI_DATATYPE_NULL);
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":52
 *     # ------------------
 * 
 *     def Get_extent(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return lower bound and extent of datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Get_extent(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Get_extent[] = "Datatype.Get_extent(self)\n\n        Return lower bound and extent of datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Get_extent(PyObject *__pyx_v_self, PyObject *unused) {
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("Get_extent");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":56
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":57
 *         """
 *         cdef MPI_Aint lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         return (lb, extent)
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":58
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_lb); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(__pyx_v_extent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 58; __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_t_2 released */
  /* __pyx_t_3 released */
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":62
 *     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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":63
 *         """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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":64
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":65
 *             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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_extent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":69
 *     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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":70
 *         """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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":71
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":72
 *             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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_lb); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":76
 *     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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":77
 *         """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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":78
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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             # <<<<<<<<<<<<<<
 * 
 *     def Get_size(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":81
 *             return lb + extent
 * 
 *     def Get_size(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of bytes occupied
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Get_size(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Get_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_Get_size(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_size");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":86
 *         by entries in the datatype
 *         """
 *         cdef int size = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_size(self.ob_mpi, &size) )
 *         return size
 */
  __pyx_v_size = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":87
 *         """
 *         cdef int size = 0
 *         CHKERR( MPI_Type_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_size(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":88
 *         cdef int size = 0
 *         CHKERR( MPI_Type_size(self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     property size:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":92
 *     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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":93
 *         """size (in bytes)"""
 *         def __get__(self):
 *             cdef int size = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_size(self.ob_mpi, &size) )
 *             return size
 */
  __pyx_v_size = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":94
 *         def __get__(self):
 *             cdef int size = 0
 *             CHKERR( MPI_Type_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *             return size
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_size(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":95
 *             cdef int size = 0
 *             CHKERR( MPI_Type_size(self.ob_mpi, &size) )
 *             return size             # <<<<<<<<<<<<<<
 * 
 *     # Datatype Constructors
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":100
 *     # ---------------------
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Dup(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Dup[] = "Datatype.Dup(self)\n\n        Duplicate a datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Dup(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Dup");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":104
 *         Duplicate a datatype
 *         """
 *         cdef Datatype datatype = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_dup(self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 104; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype = ((PyMPIDatatypeObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":105
 *         """
 *         cdef Datatype datatype = type(self)()
 *         CHKERR( MPI_Type_dup(self.ob_mpi, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_dup(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":106
 *         cdef Datatype datatype = type(self)()
 *         CHKERR( MPI_Type_dup(self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_contiguous(self, int count):
 */
  __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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Dup");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":108
 *         return datatype
 * 
 *     def Create_contiguous(self, int count):             # <<<<<<<<<<<<<<
 *         """
 *         Create a contiguous datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Create_contiguous(PyObject *__pyx_v_self, PyObject *__pyx_arg_count); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Create_contiguous[] = "Datatype.Create_contiguous(self, int count)\n\n        Create a contiguous datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Create_contiguous(PyObject *__pyx_v_self, PyObject *__pyx_arg_count) {
  int __pyx_v_count;
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Create_contiguous");
  assert(__pyx_arg_count); {
    __pyx_v_count = __pyx_PyInt_int(__pyx_arg_count); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_contiguous");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":112
 *         Create a contiguous datatype
 *         """
 *         cdef Datatype datatype = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_contiguous(count, self.ob_mpi,
 *                                     &datatype.ob_mpi) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 112; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype = ((PyMPIDatatypeObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":114
 *         cdef Datatype datatype = type(self)()
 *         CHKERR( MPI_Type_contiguous(count, self.ob_mpi,
 *                                     &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_contiguous(__pyx_v_count, ((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":115
 *         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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_contiguous");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":117
 *         return datatype
 * 
 *     def Create_vector(self, int count, int blocklength, int stride):             # <<<<<<<<<<<<<<
 *         """
 *         Create a vector (strided) datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Create_vector(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Create_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_Create_vector(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_count;
  int __pyx_v_blocklength;
  int __pyx_v_stride;
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_count,&__pyx_kp_blocklength,&__pyx_kp_stride,0};
  __Pyx_SetupRefcountContext("Create_vector");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_count);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_blocklength);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_vector", 1, 3, 3, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_stride);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_vector", 1, 3, 3, 2); {__pyx_filename = __pyx_f[19]; __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), "Create_vector") < 0)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_count = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_blocklength = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_blocklength == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_stride = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_stride == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_count = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_blocklength = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_blocklength == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_stride = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_stride == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 117; __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[19]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_vector");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":121
 *         Create a vector (strided) datatype
 *         """
 *         cdef Datatype datatype = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_vector(count, blocklength, stride,
 *                                 self.ob_mpi, &datatype.ob_mpi) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 121; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype = ((PyMPIDatatypeObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":123
 *         cdef Datatype datatype = type(self)()
 *         CHKERR( MPI_Type_vector(count, blocklength, stride,
 *                                 self.ob_mpi, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_vector(__pyx_v_count, __pyx_v_blocklength, __pyx_v_stride, ((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":124
 *         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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_vector");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":126
 *         return datatype
 * 
 *     def Create_hvector(self, int count, int blocklength, Aint stride):             # <<<<<<<<<<<<<<
 *         """
 *         Create a vector (strided) datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Create_hvector(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Create_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_Create_hvector(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_count;
  int __pyx_v_blocklength;
  __pyx_t_6mpi4py_3MPI_Aint __pyx_v_stride;
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_count,&__pyx_kp_blocklength,&__pyx_kp_stride,0};
  __Pyx_SetupRefcountContext("Create_hvector");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_count);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_blocklength);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_hvector", 1, 3, 3, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_stride);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_hvector", 1, 3, 3, 2); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 126; __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[19]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_count = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_blocklength = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_blocklength == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_stride = __pyx_PyInt_long(values[2]); if (unlikely((__pyx_v_stride == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_count = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_blocklength = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_blocklength == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_stride = __pyx_PyInt_long(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_stride == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 126; __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[19]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hvector");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":130
 *         Create a vector (strided) datatype
 *         """
 *         cdef Datatype datatype = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_hvector(count, blocklength, stride,
 *                                         self.ob_mpi,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 130; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype = ((PyMPIDatatypeObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":133
 *         CHKERR( MPI_Type_create_hvector(count, blocklength, stride,
 *                                         self.ob_mpi,
 *                                         &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_hvector(__pyx_v_count, __pyx_v_blocklength, __pyx_v_stride, ((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":134
 *                                         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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hvector");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":136
 *         return datatype
 * 
 *     def Create_indexed(self, blocklengths, displacements):             # <<<<<<<<<<<<<<
 *         """
 *         Create an indexed datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Create_indexed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Create_indexed[] = "Datatype.Create_indexed(self, blocklengths, displacements)\n\n        Create an indexed datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Create_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;
  PyObject *__pyx_v_tmp1;
  int *__pyx_v_idisp;
  PyObject *__pyx_v_tmp2;
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_blocklengths,&__pyx_kp_displacements,0};
  __Pyx_SetupRefcountContext("Create_indexed");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_blocklengths);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_displacements);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_indexed", 1, 2, 2, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 136; __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[19]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_blocklengths = values[0];
    __pyx_v_displacements = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_blocklengths = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_displacements = PyTuple_GET_ITEM(__pyx_args, 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[19]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_indexed");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_tmp1 = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tmp2 = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":140
 *         Create an indexed datatype
 *         """
 *         cdef int count = len(displacements)             # <<<<<<<<<<<<<<
 *         cdef int *iblen=NULL
 *         tmp1 = asarray_int(blocklengths,  &iblen, count)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_displacements); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_count = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":141
 *         """
 *         cdef int count = len(displacements)
 *         cdef int *iblen=NULL             # <<<<<<<<<<<<<<
 *         tmp1 = asarray_int(blocklengths,  &iblen, count)
 *         cdef int *idisp=NULL
 */
  __pyx_v_iblen = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":142
 *         cdef int count = len(displacements)
 *         cdef int *iblen=NULL
 *         tmp1 = asarray_int(blocklengths,  &iblen, count)             # <<<<<<<<<<<<<<
 *         cdef int *idisp=NULL
 *         tmp2 = asarray_int(displacements, &idisp, count)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_blocklengths, (&__pyx_v_iblen), __pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp1);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":143
 *         cdef int *iblen=NULL
 *         tmp1 = asarray_int(blocklengths,  &iblen, count)
 *         cdef int *idisp=NULL             # <<<<<<<<<<<<<<
 *         tmp2 = asarray_int(displacements, &idisp, count)
 *         #
 */
  __pyx_v_idisp = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":144
 *         tmp1 = asarray_int(blocklengths,  &iblen, count)
 *         cdef int *idisp=NULL
 *         tmp2 = asarray_int(displacements, &idisp, count)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = type(self)()
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_displacements, (&__pyx_v_idisp), __pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":146
 *         tmp2 = asarray_int(displacements, &idisp, count)
 *         #
 *         cdef Datatype datatype = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_indexed(count, iblen, idisp,
 *                                  self.ob_mpi, &datatype.ob_mpi) )
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 146; __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 released */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype = ((PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":148
 *         cdef Datatype datatype = type(self)()
 *         CHKERR( MPI_Type_indexed(count, iblen, idisp,
 *                                  self.ob_mpi, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_indexed(__pyx_v_count, __pyx_v_iblen, __pyx_v_idisp, ((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":149
 *         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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_indexed");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_tmp1);
  __Pyx_DECREF(__pyx_v_tmp2);
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":151
 *         return datatype
 * 
 *     def Create_indexed_block(self, int blocklength, displacements):             # <<<<<<<<<<<<<<
 *         """
 *         Create an indexed datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Create_indexed_block(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Create_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_Create_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;
  PyObject *__pyx_v_tmp2;
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_blocklength,&__pyx_kp_displacements,0};
  __Pyx_SetupRefcountContext("Create_indexed_block");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_blocklength);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_displacements);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_indexed_block", 1, 2, 2, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 151; __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[19]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_blocklength = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_blocklength == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_displacements = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_blocklength = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_blocklength == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_displacements = PyTuple_GET_ITEM(__pyx_args, 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[19]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_indexed_block");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_tmp2 = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":156
 *         with constant-sized blocks
 *         """
 *         cdef int count = len(displacements)             # <<<<<<<<<<<<<<
 *         cdef int *idisp=NULL
 *         tmp2 = asarray_int(displacements, &idisp, count)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_displacements); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_count = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":157
 *         """
 *         cdef int count = len(displacements)
 *         cdef int *idisp=NULL             # <<<<<<<<<<<<<<
 *         tmp2 = asarray_int(displacements, &idisp, count)
 *         #
 */
  __pyx_v_idisp = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":158
 *         cdef int count = len(displacements)
 *         cdef int *idisp=NULL
 *         tmp2 = asarray_int(displacements, &idisp, count)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = type(self)()
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_displacements, (&__pyx_v_idisp), __pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":160
 *         tmp2 = asarray_int(displacements, &idisp, count)
 *         #
 *         cdef Datatype datatype = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_indexed_block(count, blocklength,
 *                                               idisp, self.ob_mpi,
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 160; __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 released */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype = ((PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":163
 *         CHKERR( MPI_Type_create_indexed_block(count, blocklength,
 *                                               idisp, self.ob_mpi,
 *                                               &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_indexed_block(__pyx_v_count, __pyx_v_blocklength, __pyx_v_idisp, ((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":164
 *                                               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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_indexed_block");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_tmp2);
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":166
 *         return datatype
 * 
 *     def Create_hindexed(self, blocklengths, displacements):             # <<<<<<<<<<<<<<
 *         """
 *         Create an indexed datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Create_hindexed(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Create_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_Create_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;
  PyObject *__pyx_v_tmp1;
  MPI_Aint *__pyx_v_idisp;
  PyObject *__pyx_v_tmp2;
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_blocklengths,&__pyx_kp_displacements,0};
  __Pyx_SetupRefcountContext("Create_hindexed");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_blocklengths);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_displacements);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_hindexed", 1, 2, 2, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 166; __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[19]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_blocklengths = values[0];
    __pyx_v_displacements = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_blocklengths = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_displacements = PyTuple_GET_ITEM(__pyx_args, 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[19]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hindexed");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_tmp1 = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tmp2 = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":171
 *         with displacements in bytes
 *         """
 *         cdef int count = len(displacements)             # <<<<<<<<<<<<<<
 *         cdef int *iblen=NULL
 *         tmp1 = asarray_int(blocklengths, &iblen, count)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_displacements); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_count = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":172
 *         """
 *         cdef int count = len(displacements)
 *         cdef int *iblen=NULL             # <<<<<<<<<<<<<<
 *         tmp1 = asarray_int(blocklengths, &iblen, count)
 *         cdef MPI_Aint *idisp=NULL
 */
  __pyx_v_iblen = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":173
 *         cdef int count = len(displacements)
 *         cdef int *iblen=NULL
 *         tmp1 = asarray_int(blocklengths, &iblen, count)             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint *idisp=NULL
 *         tmp2 = asarray_Aint(displacements, &idisp, count)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_blocklengths, (&__pyx_v_iblen), __pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp1);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":174
 *         cdef int *iblen=NULL
 *         tmp1 = asarray_int(blocklengths, &iblen, count)
 *         cdef MPI_Aint *idisp=NULL             # <<<<<<<<<<<<<<
 *         tmp2 = asarray_Aint(displacements, &idisp, count)
 *         #
 */
  __pyx_v_idisp = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":175
 *         tmp1 = asarray_int(blocklengths, &iblen, count)
 *         cdef MPI_Aint *idisp=NULL
 *         tmp2 = asarray_Aint(displacements, &idisp, count)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = type(self)()
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Aint(__pyx_v_displacements, (&__pyx_v_idisp), __pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":177
 *         tmp2 = asarray_Aint(displacements, &idisp, count)
 *         #
 *         cdef Datatype datatype = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_hindexed(count, iblen, idisp,
 *                                          self.ob_mpi,
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 177; __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 released */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype = ((PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":180
 *         CHKERR( MPI_Type_create_hindexed(count, iblen, idisp,
 *                                          self.ob_mpi,
 *                                          &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_hindexed(__pyx_v_count, __pyx_v_iblen, __pyx_v_idisp, ((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":181
 *                                          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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hindexed");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_tmp1);
  __Pyx_DECREF(__pyx_v_tmp2);
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":183
 *         return datatype
 * 
 *     def Create_subarray(self, sizes, subsizes, starts,             # <<<<<<<<<<<<<<
 *                         int order=ORDER_C):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Create_subarray(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Create_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_Create_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;
  PyObject *__pyx_v_tmp1;
  int *__pyx_v_isubsizes;
  PyObject *__pyx_v_tmp2;
  int *__pyx_v_istarts;
  PyObject *__pyx_v_tmp3;
  int __pyx_v_iorder;
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sizes,&__pyx_kp_subsizes,&__pyx_kp_starts,&__pyx_kp_order,0};
  __Pyx_SetupRefcountContext("Create_subarray");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sizes);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_subsizes);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_subarray", 0, 3, 4, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_starts);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_subarray", 0, 3, 4, 2); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_order);
        if (unlikely(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[19]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sizes = values[0];
    __pyx_v_subsizes = values[1];
    __pyx_v_starts = values[2];
    if (values[3]) {
      __pyx_v_order = __pyx_PyInt_int(values[3]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_order = __pyx_k_61;
    }
  } else {
    __pyx_v_order = __pyx_k_61;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4:
      __pyx_v_order = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  3:
      __pyx_v_starts = PyTuple_GET_ITEM(__pyx_args, 2);
      __pyx_v_subsizes = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_sizes = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[19]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_subarray");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_tmp1 = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tmp2 = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tmp3 = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":189
 *         a regular, multidimensional array
 *         """
 *         cdef int ndims = len(sizes)             # <<<<<<<<<<<<<<
 *         cdef int *isizes = NULL
 *         tmp1 = asarray_int(sizes, &isizes, ndims)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_sizes); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_ndims = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":190
 *         """
 *         cdef int ndims = len(sizes)
 *         cdef int *isizes = NULL             # <<<<<<<<<<<<<<
 *         tmp1 = asarray_int(sizes, &isizes, ndims)
 *         cdef int *isubsizes = NULL
 */
  __pyx_v_isizes = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":191
 *         cdef int ndims = len(sizes)
 *         cdef int *isizes = NULL
 *         tmp1 = asarray_int(sizes, &isizes, ndims)             # <<<<<<<<<<<<<<
 *         cdef int *isubsizes = NULL
 *         tmp2 = asarray_int(subsizes, &isubsizes, ndims)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_sizes, (&__pyx_v_isizes), __pyx_v_ndims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp1);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":192
 *         cdef int *isizes = NULL
 *         tmp1 = asarray_int(sizes, &isizes, ndims)
 *         cdef int *isubsizes = NULL             # <<<<<<<<<<<<<<
 *         tmp2 = asarray_int(subsizes, &isubsizes, ndims)
 *         cdef int *istarts = NULL
 */
  __pyx_v_isubsizes = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":193
 *         tmp1 = asarray_int(sizes, &isizes, ndims)
 *         cdef int *isubsizes = NULL
 *         tmp2 = asarray_int(subsizes, &isubsizes, ndims)             # <<<<<<<<<<<<<<
 *         cdef int *istarts = NULL
 *         tmp3 = asarray_int(starts, &istarts, ndims)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_subsizes, (&__pyx_v_isubsizes), __pyx_v_ndims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":194
 *         cdef int *isubsizes = NULL
 *         tmp2 = asarray_int(subsizes, &isubsizes, ndims)
 *         cdef int *istarts = NULL             # <<<<<<<<<<<<<<
 *         tmp3 = asarray_int(starts, &istarts, ndims)
 *         cdef int iorder = MPI_ORDER_C
 */
  __pyx_v_istarts = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":195
 *         tmp2 = asarray_int(subsizes, &isubsizes, ndims)
 *         cdef int *istarts = NULL
 *         tmp3 = asarray_int(starts, &istarts, ndims)             # <<<<<<<<<<<<<<
 *         cdef int iorder = MPI_ORDER_C
 *         if order is not None: iorder = order
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_starts, (&__pyx_v_istarts), __pyx_v_ndims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp3);
  __pyx_v_tmp3 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":196
 *         cdef int *istarts = NULL
 *         tmp3 = asarray_int(starts, &istarts, ndims)
 *         cdef int iorder = MPI_ORDER_C             # <<<<<<<<<<<<<<
 *         if order is not None: iorder = order
 *         #
 */
  __pyx_v_iorder = MPI_ORDER_C;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":197
 *         tmp3 = asarray_int(starts, &istarts, ndims)
 *         cdef int iorder = MPI_ORDER_C
 *         if order is not None: iorder = order             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = type(self)()
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_order); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = (__pyx_t_2 != Py_None);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (__pyx_t_3) {
    /* __pyx_t_3 released */
    __pyx_v_iorder = __pyx_v_order;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":199
 *         if order is not None: iorder = order
 *         #
 *         cdef Datatype datatype = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_subarray(ndims, isizes,
 *                                          isubsizes, istarts,
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype = ((PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":203
 *                                          isubsizes, istarts,
 *                                          iorder, self.ob_mpi,
 *                                          &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_subarray(__pyx_v_ndims, __pyx_v_isizes, __pyx_v_isubsizes, __pyx_v_istarts, __pyx_v_iorder, ((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_5 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":204
 *                                          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_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_subarray");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_tmp1);
  __Pyx_DECREF(__pyx_v_tmp2);
  __Pyx_DECREF(__pyx_v_tmp3);
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":206
 *         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_Create_darray(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Create_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_Create_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;
  PyObject *__pyx_v_tmp1;
  int *__pyx_v_idistribs;
  PyObject *__pyx_v_tmp2;
  int *__pyx_v_idargs;
  PyObject *__pyx_v_tmp3;
  int *__pyx_v_ipsizes;
  PyObject *__pyx_v_tmp4;
  int __pyx_v_iorder;
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_size,&__pyx_kp_rank,&__pyx_kp_gsizes,&__pyx_kp_distribs,&__pyx_kp_dargs,&__pyx_kp_psizes,&__pyx_kp_order,0};
  __Pyx_SetupRefcountContext("Create_darray");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[7] = {0,0,0,0,0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_size);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_rank);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_gsizes);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 2); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_distribs);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 3); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  4:
      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_kp_dargs);
      if (likely(values[4])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 4); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  5:
      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_kp_psizes);
      if (likely(values[5])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 5); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  6:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_order);
        if (unlikely(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[19]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_size = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_rank = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 206; __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_int(values[6]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_order = __pyx_k_62;
    }
  } else {
    __pyx_v_order = __pyx_k_62;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  7:
      __pyx_v_order = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 6)); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  6:
      __pyx_v_psizes = PyTuple_GET_ITEM(__pyx_args, 5);
      __pyx_v_dargs = PyTuple_GET_ITEM(__pyx_args, 4);
      __pyx_v_distribs = PyTuple_GET_ITEM(__pyx_args, 3);
      __pyx_v_gsizes = PyTuple_GET_ITEM(__pyx_args, 2);
      __pyx_v_rank = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_v_size = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[19]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_darray");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_tmp1 = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tmp2 = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tmp3 = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tmp4 = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":213
 *         distributed array on Cartesian process grids
 *         """
 *         cdef int ndims = len(gsizes)             # <<<<<<<<<<<<<<
 *         cdef int *igsizes=NULL
 *         tmp1 = asarray_int(gsizes, &igsizes, ndims)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_gsizes); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_ndims = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":214
 *         """
 *         cdef int ndims = len(gsizes)
 *         cdef int *igsizes=NULL             # <<<<<<<<<<<<<<
 *         tmp1 = asarray_int(gsizes, &igsizes, ndims)
 *         cdef int *idistribs=NULL
 */
  __pyx_v_igsizes = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":215
 *         cdef int ndims = len(gsizes)
 *         cdef int *igsizes=NULL
 *         tmp1 = asarray_int(gsizes, &igsizes, ndims)             # <<<<<<<<<<<<<<
 *         cdef int *idistribs=NULL
 *         tmp2 = asarray_int(distribs, &idistribs, ndims)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_gsizes, (&__pyx_v_igsizes), __pyx_v_ndims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp1);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":216
 *         cdef int *igsizes=NULL
 *         tmp1 = asarray_int(gsizes, &igsizes, ndims)
 *         cdef int *idistribs=NULL             # <<<<<<<<<<<<<<
 *         tmp2 = asarray_int(distribs, &idistribs, ndims)
 *         cdef int *idargs=NULL
 */
  __pyx_v_idistribs = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":217
 *         tmp1 = asarray_int(gsizes, &igsizes, ndims)
 *         cdef int *idistribs=NULL
 *         tmp2 = asarray_int(distribs, &idistribs, ndims)             # <<<<<<<<<<<<<<
 *         cdef int *idargs=NULL
 *         tmp3 = asarray_int(dargs, &idargs, ndims)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_distribs, (&__pyx_v_idistribs), __pyx_v_ndims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":218
 *         cdef int *idistribs=NULL
 *         tmp2 = asarray_int(distribs, &idistribs, ndims)
 *         cdef int *idargs=NULL             # <<<<<<<<<<<<<<
 *         tmp3 = asarray_int(dargs, &idargs, ndims)
 *         cdef int *ipsizes=NULL
 */
  __pyx_v_idargs = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":219
 *         tmp2 = asarray_int(distribs, &idistribs, ndims)
 *         cdef int *idargs=NULL
 *         tmp3 = asarray_int(dargs, &idargs, ndims)             # <<<<<<<<<<<<<<
 *         cdef int *ipsizes=NULL
 *         tmp4 = asarray_int(psizes, &ipsizes, ndims)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_dargs, (&__pyx_v_idargs), __pyx_v_ndims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp3);
  __pyx_v_tmp3 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":220
 *         cdef int *idargs=NULL
 *         tmp3 = asarray_int(dargs, &idargs, ndims)
 *         cdef int *ipsizes=NULL             # <<<<<<<<<<<<<<
 *         tmp4 = asarray_int(psizes, &ipsizes, ndims)
 *         cdef int iorder = MPI_ORDER_C
 */
  __pyx_v_ipsizes = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":221
 *         tmp3 = asarray_int(dargs, &idargs, ndims)
 *         cdef int *ipsizes=NULL
 *         tmp4 = asarray_int(psizes, &ipsizes, ndims)             # <<<<<<<<<<<<<<
 *         cdef int iorder = MPI_ORDER_C
 *         if order is not None: iorder = order
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_psizes, (&__pyx_v_ipsizes), __pyx_v_ndims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp4);
  __pyx_v_tmp4 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":222
 *         cdef int *ipsizes=NULL
 *         tmp4 = asarray_int(psizes, &ipsizes, ndims)
 *         cdef int iorder = MPI_ORDER_C             # <<<<<<<<<<<<<<
 *         if order is not None: iorder = order
 *         #
 */
  __pyx_v_iorder = MPI_ORDER_C;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":223
 *         tmp4 = asarray_int(psizes, &ipsizes, ndims)
 *         cdef int iorder = MPI_ORDER_C
 *         if order is not None: iorder = order             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = type(self)()
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_order); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = (__pyx_t_2 != Py_None);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (__pyx_t_3) {
    /* __pyx_t_3 released */
    __pyx_v_iorder = __pyx_v_order;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":225
 *         if order is not None: iorder = order
 *         #
 *         cdef Datatype datatype = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_darray(size, rank, ndims, igsizes,
 *                                        idistribs, idargs, ipsizes,
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype = ((PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":229
 *                                        idistribs, idargs, ipsizes,
 *                                        iorder, self.ob_mpi,
 *                                        &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = __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_iorder, ((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_5 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":230
 *                                        iorder, 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_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_darray");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_tmp1);
  __Pyx_DECREF(__pyx_v_tmp2);
  __Pyx_DECREF(__pyx_v_tmp3);
  __Pyx_DECREF(__pyx_v_tmp4);
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":233
 * 
 *     @classmethod
 *     def Create_struct(cls, blocklengths, displacements, datatypes):             # <<<<<<<<<<<<<<
 *         """
 *         Create an datatype from a general set of
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Create_struct(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Create_struct[] = "Datatype.Create_struct(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_Create_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;
  PyObject *__pyx_v_tmp1;
  MPI_Aint *__pyx_v_idisp;
  PyObject *__pyx_v_tmp2;
  MPI_Datatype *__pyx_v_itype;
  PyObject *__pyx_v_tmp3;
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_blocklengths,&__pyx_kp_displacements,&__pyx_kp_datatypes,0};
  __Pyx_SetupRefcountContext("Create_struct");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_blocklengths);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_displacements);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_struct", 1, 3, 3, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_datatypes);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_struct", 1, 3, 3, 2); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 233; __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[19]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_blocklengths = values[0];
    __pyx_v_displacements = values[1];
    __pyx_v_datatypes = values[2];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_blocklengths = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_displacements = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_datatypes = PyTuple_GET_ITEM(__pyx_args, 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[19]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_struct");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_tmp1 = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tmp2 = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tmp3 = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":238
 *         block sizes, displacements and datatypes
 *         """
 *         cdef int count = len(displacements)             # <<<<<<<<<<<<<<
 *         cdef int *iblen=NULL
 *         tmp1 = asarray_int(blocklengths, &iblen, count)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_displacements); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_count = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":239
 *         """
 *         cdef int count = len(displacements)
 *         cdef int *iblen=NULL             # <<<<<<<<<<<<<<
 *         tmp1 = asarray_int(blocklengths, &iblen, count)
 *         cdef MPI_Aint *idisp=NULL
 */
  __pyx_v_iblen = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":240
 *         cdef int count = len(displacements)
 *         cdef int *iblen=NULL
 *         tmp1 = asarray_int(blocklengths, &iblen, count)             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint *idisp=NULL
 *         tmp2 = asarray_Aint(displacements, &idisp, count)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_blocklengths, (&__pyx_v_iblen), __pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp1);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":241
 *         cdef int *iblen=NULL
 *         tmp1 = asarray_int(blocklengths, &iblen, count)
 *         cdef MPI_Aint *idisp=NULL             # <<<<<<<<<<<<<<
 *         tmp2 = asarray_Aint(displacements, &idisp, count)
 *         cdef MPI_Datatype *itype=NULL
 */
  __pyx_v_idisp = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":242
 *         tmp1 = asarray_int(blocklengths, &iblen, count)
 *         cdef MPI_Aint *idisp=NULL
 *         tmp2 = asarray_Aint(displacements, &idisp, count)             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype *itype=NULL
 *         tmp3 = asarray_Datatype(datatypes, &itype, count)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Aint(__pyx_v_displacements, (&__pyx_v_idisp), __pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":243
 *         cdef MPI_Aint *idisp=NULL
 *         tmp2 = asarray_Aint(displacements, &idisp, count)
 *         cdef MPI_Datatype *itype=NULL             # <<<<<<<<<<<<<<
 *         tmp3 = asarray_Datatype(datatypes, &itype, count)
 *         #
 */
  __pyx_v_itype = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":244
 *         tmp2 = asarray_Aint(displacements, &idisp, count)
 *         cdef MPI_Datatype *itype=NULL
 *         tmp3 = asarray_Datatype(datatypes, &itype, count)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = cls()
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Datatype(__pyx_v_datatypes, (&__pyx_v_itype), __pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_tmp3);
  __pyx_v_tmp3 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":246
 *         tmp3 = asarray_Datatype(datatypes, &itype, count)
 *         #
 *         cdef Datatype datatype = cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_struct(count, iblen, idisp, itype,
 *                                        &datatype.ob_mpi) )
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype = ((PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":248
 *         cdef Datatype datatype = cls()
 *         CHKERR( MPI_Type_create_struct(count, iblen, idisp, itype,
 *                                        &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_struct(__pyx_v_count, __pyx_v_iblen, __pyx_v_idisp, __pyx_v_itype, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":249
 *         CHKERR( MPI_Type_create_struct(count, iblen, idisp, itype,
 *                                        &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     # Size-specific 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_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_struct");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_tmp1);
  __Pyx_DECREF(__pyx_v_tmp2);
  __Pyx_DECREF(__pyx_v_tmp3);
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":255
 * 
 *     @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_Match_size(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Match_size[] = "Datatype.Match_size(cls, int typeclass, int size)\n\n        Find a datatype matching a specified size in bytes\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Match_size(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_typeclass;
  int __pyx_v_size;
  MPI_Datatype __pyx_v_datatype;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_typeclass,&__pyx_kp_size,0};
  __Pyx_SetupRefcountContext("Match_size");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_typeclass);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_size);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Match_size", 1, 2, 2, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 255; __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[19]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_typeclass = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_typeclass == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_size = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_typeclass = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_typeclass == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_size = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 255; __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[19]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Match_size");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":259
 *         Find a datatype matching a specified size in bytes
 *         """
 *         cdef MPI_Datatype datatype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_match_size(typeclass, size, &datatype) )
 *         return _new_Datatype(datatype)
 */
  __pyx_v_datatype = MPI_DATATYPE_NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":260
 *         """
 *         cdef MPI_Datatype datatype = MPI_DATATYPE_NULL
 *         CHKERR( MPI_Type_match_size(typeclass, size, &datatype) )             # <<<<<<<<<<<<<<
 *         return _new_Datatype(datatype)
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_match_size(__pyx_v_typeclass, __pyx_v_size, (&__pyx_v_datatype))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":261
 *         cdef MPI_Datatype datatype = MPI_DATATYPE_NULL
 *         CHKERR( MPI_Type_match_size(typeclass, size, &datatype) )
 *         return _new_Datatype(datatype)             # <<<<<<<<<<<<<<
 * 
 *     # Use of Derived Datatypes
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(__pyx_v_datatype)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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.Match_size");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":266
 *     # ------------------------
 * 
 *     def Commit(self):             # <<<<<<<<<<<<<<
 *         """
 *         Commit the datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Commit(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Commit[] = "Datatype.Commit(self)\n\n        Commit the datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Commit(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Commit");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":270
 *         Commit the datatype
 *         """
 *         CHKERR( MPI_Type_commit(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_commit((&((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":271
 *         """
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":273
 *         return self
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free the datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Free(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Free[] = "Datatype.Free(self)\n\n        Free the datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Free(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Free");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":277
 *         Free the datatype
 *         """
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Datatype Resizing
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_free((&((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Free");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":282
 *     # -----------------
 * 
 *     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_Create_resized(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Create_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_Create_resized(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_6mpi4py_3MPI_Aint __pyx_v_lb;
  __pyx_t_6mpi4py_3MPI_Aint __pyx_v_extent;
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_lb,&__pyx_kp_extent,0};
  __Pyx_SetupRefcountContext("Create_resized");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_lb);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_extent);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_resized", 1, 2, 2, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 282; __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[19]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_lb = __pyx_PyInt_long(values[0]); if (unlikely((__pyx_v_lb == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_extent = __pyx_PyInt_long(values[1]); if (unlikely((__pyx_v_extent == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_lb = __pyx_PyInt_long(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_lb == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_extent = __pyx_PyInt_long(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_extent == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 282; __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[19]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_resized");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":286
 *         Create a datatype with a new lower bound and extent
 *         """
 *         cdef Datatype datatype = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_resized(self.ob_mpi,
 *                                         lb, extent,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 286; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype = ((PyMPIDatatypeObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":289
 *         CHKERR( MPI_Type_create_resized(self.ob_mpi,
 *                                         lb, extent,
 *                                         &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_resized(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_lb, __pyx_v_extent, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":290
 *                                         lb, extent,
 *                                         &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     Resized = Create_resized
 */
  __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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_resized");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":294
 *     Resized = Create_resized
 * 
 *     def Get_true_extent(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the true lower bound and extent of a datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Get_true_extent(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Get_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_Get_true_extent(PyObject *__pyx_v_self, PyObject *unused) {
  MPI_Aint __pyx_v_lb;
  MPI_Aint __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("Get_true_extent");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":298
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":300
 *         cdef MPI_Aint lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                          &lb, &extent) )             # <<<<<<<<<<<<<<
 *         return (lb, extent)
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_true_extent(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":301
 *         CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                          &lb, &extent) )
 *         return (lb, extent)             # <<<<<<<<<<<<<<
 * 
 *     property true_extent:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_lb); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(__pyx_v_extent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 301; __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_t_2 released */
  /* __pyx_t_3 released */
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":305
 *     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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":306
 *         """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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":308
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                              &lb, &extent) )             # <<<<<<<<<<<<<<
 *             return extent
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_true_extent(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":309
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                              &lb, &extent) )
 *             return extent             # <<<<<<<<<<<<<<
 * 
 *     property true_lb:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_extent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":313
 *     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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":314
 *         """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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":316
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                              &lb, &extent) )             # <<<<<<<<<<<<<<
 *             return lb
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_true_extent(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":317
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi,
 *                                              &lb, &extent) )
 *             return lb             # <<<<<<<<<<<<<<
 * 
 *     property true_ub:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_lb); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":321
 *     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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":322
 *         """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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":324
 *             cdef MPI_Aint lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi, &lb,
 *                                              &extent) )             # <<<<<<<<<<<<<<
 *             return lb + extent
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_true_extent(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":325
 *             CHKERR( MPI_Type_get_true_extent(self.ob_mpi, &lb,
 *                                              &extent) )
 *             return lb + extent             # <<<<<<<<<<<<<<
 * 
 *     # Pack and Unpack
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":330
 *     # ---------------
 * 
 *     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_Pack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Pack[] = "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_Pack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_inbuf = 0;
  PyObject *__pyx_v_outbuf = 0;
  int __pyx_v_position;
  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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_inbuf,&__pyx_kp_outbuf,&__pyx_kp_position,&__pyx_kp_comm,0};
  __Pyx_SetupRefcountContext("Pack");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_inbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_outbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Pack", 1, 4, 4, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_position);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Pack", 1, 4, 4, 2); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_comm);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Pack", 1, 4, 4, 3); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 330; __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[19]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_inbuf = values[0];
    __pyx_v_outbuf = values[1];
    __pyx_v_position = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_position == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_comm = ((PyMPICommObject *)values[3]);
  } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_inbuf = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_outbuf = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_position = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_position == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_comm = ((PyMPICommObject *)PyTuple_GET_ITEM(__pyx_args, 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[19]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack");
  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[19]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":334
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":335
 *         """
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":337
 *         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 = asbuffer_r(inbuf,  &ibptr, &iblen)
 */
  __pyx_v_ibptr = NULL;
  __pyx_v_obptr = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":338
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0             # <<<<<<<<<<<<<<
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)
 */
  __pyx_v_iblen = 0;
  __pyx_v_oblen = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":339
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)             # <<<<<<<<<<<<<<
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef int icount = <int>(iblen/extent), osize = <int>oblen
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_inbuf, (&__pyx_v_ibptr), (&__pyx_v_iblen)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":340
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)             # <<<<<<<<<<<<<<
 *         cdef int icount = <int>(iblen/extent), osize = <int>oblen
 *         #
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_outbuf, (&__pyx_v_obptr), (&__pyx_v_oblen)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":341
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = asbuffer_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);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":344
 *         #
 *         CHKERR( MPI_Pack(ibptr, icount, self.ob_mpi, obptr, osize,
 *                          &position, comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return position
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pack(__pyx_v_ibptr, __pyx_v_icount, ((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[19]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":345
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_position); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob1);
  __Pyx_XDECREF(__pyx_v_ob2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":347
 *         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_Unpack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Unpack[] = "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_Unpack(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_inbuf = 0;
  int __pyx_v_position;
  PyObject *__pyx_v_outbuf = 0;
  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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_inbuf,&__pyx_kp_position,&__pyx_kp_outbuf,&__pyx_kp_comm,0};
  __Pyx_SetupRefcountContext("Unpack");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_inbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_position);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Unpack", 1, 4, 4, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_outbuf);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Unpack", 1, 4, 4, 2); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_comm);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Unpack", 1, 4, 4, 3); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 347; __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[19]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_inbuf = values[0];
    __pyx_v_position = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_position == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_outbuf = values[2];
    __pyx_v_comm = ((PyMPICommObject *)values[3]);
  } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_inbuf = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_position = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_position == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_outbuf = PyTuple_GET_ITEM(__pyx_args, 2);
    __pyx_v_comm = ((PyMPICommObject *)PyTuple_GET_ITEM(__pyx_args, 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[19]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Unpack");
  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[19]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":351
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":352
 *         """
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":354
 *         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 = asbuffer_r(inbuf,  &ibptr, &iblen)
 */
  __pyx_v_ibptr = NULL;
  __pyx_v_obptr = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":355
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0             # <<<<<<<<<<<<<<
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)
 */
  __pyx_v_iblen = 0;
  __pyx_v_oblen = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":356
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)             # <<<<<<<<<<<<<<
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef int isize = <int>iblen, ocount = <int>(oblen/extent)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_inbuf, (&__pyx_v_ibptr), (&__pyx_v_iblen)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":357
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)             # <<<<<<<<<<<<<<
 *         cdef int isize = <int>iblen, ocount = <int>(oblen/extent)
 *         #
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_outbuf, (&__pyx_v_obptr), (&__pyx_v_oblen)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":358
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = asbuffer_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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":361
 *         #
 *         CHKERR( MPI_Unpack(ibptr, isize, &position, obptr, ocount,
 *                            self.ob_mpi, comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return position
 * 
 */
  /* __pyx_t_1 allocated */
  __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, ((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_comm->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":362
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_position); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob1);
  __Pyx_XDECREF(__pyx_v_ob2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":364
 *         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_Pack_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Pack_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_Pack_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_count;
  PyMPICommObject *__pyx_v_comm = 0;
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_count,&__pyx_kp_comm,0};
  __Pyx_SetupRefcountContext("Pack_size");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_count);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_comm);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Pack_size", 1, 2, 2, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 364; __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[19]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_count = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_comm = ((PyMPICommObject *)values[1]);
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_count = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_comm = ((PyMPICommObject *)PyTuple_GET_ITEM(__pyx_args, 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[19]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_size");
  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[19]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":369
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":371
 *         cdef int size = 0
 *         CHKERR( MPI_Pack_size(count, self.ob_mpi,
 *                               comm.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pack_size(__pyx_v_count, ((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_comm->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":372
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":377
 *     # -------------------------
 * 
 *     def Pack_external(self, datarep, inbuf, outbuf, Aint position):             # <<<<<<<<<<<<<<
 *         """
 *         Pack into contiguous memory according to datatype,
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Pack_external(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Pack_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_Pack_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;
  __pyx_t_6mpi4py_3MPI_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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_datarep,&__pyx_kp_inbuf,&__pyx_kp_outbuf,&__pyx_kp_position,0};
  __Pyx_SetupRefcountContext("Pack_external");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_datarep);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_inbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Pack_external", 1, 4, 4, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_outbuf);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Pack_external", 1, 4, 4, 2); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_position);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Pack_external", 1, 4, 4, 3); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 377; __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[19]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_datarep = values[0];
    __pyx_v_inbuf = values[1];
    __pyx_v_outbuf = values[2];
    __pyx_v_position = __pyx_PyInt_long(values[3]); if (unlikely((__pyx_v_position == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_datarep = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_inbuf = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_outbuf = PyTuple_GET_ITEM(__pyx_args, 2);
    __pyx_v_position = __pyx_PyInt_long(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((__pyx_v_position == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 377; __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[19]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_external");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_datarep);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":382
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":383
 *         """
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_datarep, (&__pyx_v_cdatarep), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 383; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":384
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":385
 *         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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":387
 *         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 = asbuffer_r(inbuf,  &ibptr, &iblen)
 */
  __pyx_v_ibptr = NULL;
  __pyx_v_obptr = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":388
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0             # <<<<<<<<<<<<<<
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)
 */
  __pyx_v_iblen = 0;
  __pyx_v_oblen = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":389
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)             # <<<<<<<<<<<<<<
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef int icount = <int>(iblen/extent)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_inbuf, (&__pyx_v_ibptr), (&__pyx_v_iblen)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ob1 = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":390
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)             # <<<<<<<<<<<<<<
 *         cdef int icount = <int>(iblen/extent)
 *         cdef MPI_Aint osize = <int>oblen
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_outbuf, (&__pyx_v_obptr), (&__pyx_v_oblen)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ob2 = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":391
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef int icount = <int>(iblen/extent)             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint osize = <int>oblen
 *         #
 */
  __pyx_v_icount = ((int)(__pyx_v_iblen / __pyx_v_extent));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":392
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef int icount = <int>(iblen/extent)
 *         cdef MPI_Aint osize = <int>oblen             # <<<<<<<<<<<<<<
 *         #
 *         CHKERR( MPI_Pack_external(cdatarep, ibptr, icount,
 */
  __pyx_v_osize = ((int)__pyx_v_oblen);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":396
 *         CHKERR( MPI_Pack_external(cdatarep, ibptr, icount,
 *                                   self.ob_mpi,
 *                                   obptr, osize, &position) )             # <<<<<<<<<<<<<<
 *         return position
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pack_external(__pyx_v_cdatarep, __pyx_v_ibptr, __pyx_v_icount, ((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[19]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":397
 *                                   self.ob_mpi,
 *                                   obptr, osize, &position) )
 *         return position             # <<<<<<<<<<<<<<
 * 
 *     def Unpack_external(self, datarep, inbuf, Aint position, outbuf):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_position); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob1);
  __Pyx_XDECREF(__pyx_v_ob2);
  __Pyx_DECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":399
 *         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_Unpack_external(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Unpack_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_Unpack_external(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_datarep = 0;
  PyObject *__pyx_v_inbuf = 0;
  __pyx_t_6mpi4py_3MPI_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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_datarep,&__pyx_kp_inbuf,&__pyx_kp_position,&__pyx_kp_outbuf,0};
  __Pyx_SetupRefcountContext("Unpack_external");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_datarep);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_inbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Unpack_external", 1, 4, 4, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_position);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Unpack_external", 1, 4, 4, 2); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_kp_outbuf);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Unpack_external", 1, 4, 4, 3); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 399; __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[19]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_datarep = values[0];
    __pyx_v_inbuf = values[1];
    __pyx_v_position = __pyx_PyInt_long(values[2]); if (unlikely((__pyx_v_position == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_outbuf = values[3];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_datarep = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_inbuf = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_position = __pyx_PyInt_long(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_position == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_outbuf = PyTuple_GET_ITEM(__pyx_args, 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[19]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Unpack_external");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_datarep);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":404
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":405
 *         """
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_datarep, (&__pyx_v_cdatarep), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 405; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":406
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":407
 *         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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":409
 *         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 = asbuffer_r(inbuf,  &ibptr, &iblen)
 */
  __pyx_v_ibptr = NULL;
  __pyx_v_obptr = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":410
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0             # <<<<<<<<<<<<<<
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)
 */
  __pyx_v_iblen = 0;
  __pyx_v_oblen = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":411
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)             # <<<<<<<<<<<<<<
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Aint isize = iblen,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_inbuf, (&__pyx_v_ibptr), (&__pyx_v_iblen)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ob1 = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":412
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint isize = iblen,
 *         cdef int ocount = <int>(oblen/extent)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_outbuf, (&__pyx_v_obptr), (&__pyx_v_oblen)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ob2 = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":413
 *         cdef ob1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Aint isize = iblen,             # <<<<<<<<<<<<<<
 *         cdef int ocount = <int>(oblen/extent)
 *         #
 */
  __pyx_v_isize = __pyx_v_iblen;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":414
 *         cdef ob2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Aint isize = iblen,
 *         cdef int ocount = <int>(oblen/extent)             # <<<<<<<<<<<<<<
 *         #
 *         CHKERR( MPI_Unpack_external(cdatarep, ibptr, isize, &position,
 */
  __pyx_v_ocount = ((int)(__pyx_v_oblen / __pyx_v_extent));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":417
 *         #
 *         CHKERR( MPI_Unpack_external(cdatarep, ibptr, isize, &position,
 *                                     obptr, ocount, self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return position
 * 
 */
  /* __pyx_t_2 allocated */
  __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, ((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":418
 *         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 allocated */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_position); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob1);
  __Pyx_XDECREF(__pyx_v_ob2);
  __Pyx_DECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":420
 *         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_Pack_external_size(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Pack_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_Pack_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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_datarep,&__pyx_kp_count,0};
  __Pyx_SetupRefcountContext("Pack_external_size");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_datarep);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_count);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Pack_external_size", 1, 2, 2, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 420; __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[19]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_datarep = values[0];
    __pyx_v_count = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_datarep = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_count = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 420; __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[19]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_external_size");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_datarep);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":426
 *         using a portable data representation (**external32**).
 *         """
 *         cdef char *cdatarep = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint size = 0
 *         datarep = asmpistr(datarep, &cdatarep, NULL)
 */
  __pyx_v_cdatarep = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":427
 *         """
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":428
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_datarep, (&__pyx_v_cdatarep), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 428; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":430
 *         datarep = asmpistr(datarep, &cdatarep, NULL)
 *         CHKERR( MPI_Pack_external_size(cdatarep, count,
 *                                        self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pack_external_size(__pyx_v_cdatarep, __pyx_v_count, ((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":431
 *         CHKERR( MPI_Pack_external_size(cdatarep, count,
 *                                        self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     # Naming Objects
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":436
 *     # --------------
 * 
 *     def Get_name(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Get_name(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Get_name[] = "Datatype.Get_name(self)\n\n        Get the print name for this datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Get_name(PyObject *__pyx_v_self, PyObject *unused) {
  char __pyx_v_name[(MPI_MAX_OBJECT_NAME + 1)];
  int __pyx_v_nlen;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_name");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":441
 *         """
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":442
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_name(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_name, (&__pyx_v_nlen))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":443
 *         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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_name, __pyx_v_nlen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":445
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name):             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Set_name(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_Set_name[] = "Datatype.Set_name(self, name)\n\n        Set the print name for this datatype\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_Set_name(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  char *__pyx_v_cname;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Set_name");
  __Pyx_INCREF(__pyx_v_name);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":449
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":450
 *         """
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname, NULL)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_set_name(self.ob_mpi, cname) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_name, (&__pyx_v_cname), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 450; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":451
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname, NULL)
 *         CHKERR( MPI_Type_set_name(self.ob_mpi, cname) )             # <<<<<<<<<<<<<<
 * 
 *     property name:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_set_name(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi, __pyx_v_cname)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  __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_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":455
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":456
 *         """datatype name"""
 *         def __get__(self):
 *             return self.Get_name()             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self.Set_name(value)
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":457
 *         def __get__(self):
 *             return self.Get_name()
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self.Set_name(value)
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_8Datatype_4name___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_8Datatype_4name___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__set__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":458
 *             return self.Get_name()
 *         def __set__(self, value):
 *             self.Set_name(value)             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Set_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 458; __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 allocated */
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 458; __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_t_1 released */
  /* __pyx_t_2 released */
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  __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_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":463
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_py2f(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_py2f[] = "Datatype.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_py2f(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("py2f");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":466
 *         """
 *         """
 *         return MPI_Type_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(MPI_Type_c2f(((PyMPIDatatypeObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":469
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Datatype_f2py[] = "Datatype.f2py(cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  __Pyx_SetupRefcountContext("f2py");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":472
 *         """
 *         """
 *         cdef Datatype datatype = cls()             # <<<<<<<<<<<<<<
 *         datatype.ob_mpi = MPI_Type_f2c(arg)
 *         return datatype
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype = ((PyMPIDatatypeObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":473
 *         """
 *         cdef Datatype datatype = cls()
 *         datatype.ob_mpi = MPI_Type_f2c(arg)             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_long(__pyx_v_arg); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_datatype->ob_mpi = MPI_Type_f2c(__pyx_t_2);
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":474
 *         cdef 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":481
 * # ----------------
 * 
 * def Get_address(location):             # <<<<<<<<<<<<<<
 *     """
 *     Get the address of a location in memory
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Get_address(PyObject *__pyx_self, PyObject *__pyx_v_location); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Get_address[] = "Get_address(location)\n\n    Get the address of a location in memory\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Get_address(PyObject *__pyx_self, PyObject *__pyx_v_location) {
  void *__pyx_v_baseptr;
  MPI_Aint __pyx_v_address;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Get_address");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":485
 *     Get the address of a location in memory
 *     """
 *     cdef void *baseptr = NULL             # <<<<<<<<<<<<<<
 *     asmemory(location, &baseptr, NULL)
 *     cdef MPI_Aint address = 0
 */
  __pyx_v_baseptr = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":486
 *     """
 *     cdef void *baseptr = NULL
 *     asmemory(location, &baseptr, NULL)             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint address = 0
 *     CHKERR( MPI_Get_address(baseptr, &address) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmemory(__pyx_v_location, (&__pyx_v_baseptr), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":487
 *     cdef void *baseptr = NULL
 *     asmemory(location, &baseptr, NULL)
 *     cdef MPI_Aint address = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_address(baseptr, &address) )
 *     return address
 */
  __pyx_v_address = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":488
 *     asmemory(location, &baseptr, NULL)
 *     cdef MPI_Aint address = 0
 *     CHKERR( MPI_Get_address(baseptr, &address) )             # <<<<<<<<<<<<<<
 *     return address
 * 
 */
  /* __pyx_t_2 allocated */
  __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[19]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":489
 *     cdef MPI_Aint address = 0
 *     CHKERR( MPI_Get_address(baseptr, &address) )
 *     return address             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_address); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/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
 */
  ((PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_SOURCE = MPI_ANY_SOURCE;

  /* "/u/dalcinl/Devel/mpi4py-dev/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
 * 
 */
  ((PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_TAG = MPI_ANY_TAG;

  /* "/u/dalcinl/Devel/mpi4py-dev/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):
 */
  ((PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_ERROR = MPI_SUCCESS;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyMPIStatusObject *__pyx_v_s = 0;
  PyMPIStatusObject *__pyx_v_o = 0;
  int __pyx_v_r;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("__richcmp__");

  /* "/u/dalcinl/Devel/mpi4py-dev/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 = self, o = other
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_self, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Status))); 
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 = self, o = other
 *         cdef int r = _eq_Status(&s.ob_mpi, &o.ob_mpi)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_TypeCheck(__pyx_v_other, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Status))); 
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_t_2);
  /* __pyx_t_2 released */
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":15
 *         if not isinstance(self,  Status): return NotImplemented
 *         if not isinstance(other, Status): return NotImplemented
 *         cdef Status s = self, o = other             # <<<<<<<<<<<<<<
 *         cdef int r = _eq_Status(&s.ob_mpi, &o.ob_mpi)
 *         if   op == 2: return  r == 0
 */
  if (!(__Pyx_TypeTest(__pyx_v_self, __pyx_ptype_6mpi4py_3MPI_Status))) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_self);
  __pyx_v_s = ((PyMPIStatusObject *)__pyx_v_self);
  if (!(__Pyx_TypeTest(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Status))) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_other);
  __pyx_v_o = ((PyMPIStatusObject *)__pyx_v_other);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":16
 *         if not isinstance(other, Status): return NotImplemented
 *         cdef Status s = self, o = other
 *         cdef int r = _eq_Status(&s.ob_mpi, &o.ob_mpi)             # <<<<<<<<<<<<<<
 *         if   op == 2: return  r == 0
 *         elif op == 3: return  r != 0
 */
  __pyx_v_r = __pyx_f_6mpi4py_3MPI__eq_Status((&__pyx_v_s->ob_mpi), (&__pyx_v_o->ob_mpi));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":17
 *         cdef Status s = self, o = other
 *         cdef int r = _eq_Status(&s.ob_mpi, &o.ob_mpi)
 *         if   op == 2: return  r == 0             # <<<<<<<<<<<<<<
 *         elif op == 3: return  r != 0
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 */
  switch (__pyx_v_op) {
    case 2:
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_r == 0)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    case 3:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":18
 *         cdef int r = _eq_Status(&s.ob_mpi, &o.ob_mpi)
 *         if   op == 2: return  r == 0
 *         elif op == 3: return  r != 0             # <<<<<<<<<<<<<<
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_r != 0)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    default:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":19
 *         if   op == 2: return  r == 0
 *         elif op == 3: return  r != 0
 *         else: raise TypeError(mpistr("only '==' and '!='"))             # <<<<<<<<<<<<<<
 * 
 * 
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_134); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    {__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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Status.__richcmp__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":22
 * 
 * 
 *     def Get_source(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get message source
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Get_source(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_Get_source[] = "Status.Get_source(self)\n\n        Get message source\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Get_source(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("Get_source");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":26
 *         Get message source
 *         """
 *         return self.ob_mpi.MPI_SOURCE             # <<<<<<<<<<<<<<
 * 
 *     def Set_source(self, source):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(((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;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":28
 *         return self.ob_mpi.MPI_SOURCE
 * 
 *     def Set_source(self, source):             # <<<<<<<<<<<<<<
 *         """
 *         Set message source
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Set_source(PyObject *__pyx_v_self, PyObject *__pyx_v_source); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_Set_source[] = "Status.Set_source(self, source)\n\n        Set message source\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Set_source(PyObject *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Set_source");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":32
 *         Set message source
 *         """
 *         self.ob_mpi.MPI_SOURCE = source             # <<<<<<<<<<<<<<
 * 
 *     property source:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_PyInt_int(__pyx_v_source); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  ((PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_SOURCE = __pyx_t_1;
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_source");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_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 allocated */
  __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_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_6Status_6source___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__set__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":39
 *             return self.Get_source()
 *         def __set__(self, value):
 *             self.Set_source(value)             # <<<<<<<<<<<<<<
 * 
 *     def Get_tag(self):
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_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 allocated */
  __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 allocated */
  __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_t_1 released */
  /* __pyx_t_2 released */
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  __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_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":41
 *             self.Set_source(value)
 * 
 *     def Get_tag(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get message tag
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Get_tag(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_Get_tag[] = "Status.Get_tag(self)\n\n        Get message tag\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Get_tag(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("Get_tag");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":45
 *         Get message tag
 *         """
 *         return self.ob_mpi.MPI_TAG             # <<<<<<<<<<<<<<
 * 
 *     def Set_tag(self, tag):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(((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;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":47
 *         return self.ob_mpi.MPI_TAG
 * 
 *     def Set_tag(self, tag):             # <<<<<<<<<<<<<<
 *         """
 *         Set message tag
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Set_tag(PyObject *__pyx_v_self, PyObject *__pyx_v_tag); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_Set_tag[] = "Status.Set_tag(self, tag)\n\n        Set message tag\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Set_tag(PyObject *__pyx_v_self, PyObject *__pyx_v_tag) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Set_tag");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":51
 *         Set message tag
 *         """
 *         self.ob_mpi.MPI_TAG = tag             # <<<<<<<<<<<<<<
 * 
 *     property tag:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_PyInt_int(__pyx_v_tag); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  ((PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_TAG = __pyx_t_1;
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_tag");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_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 allocated */
  __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_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_6Status_3tag___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__set__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":58
 *             return self.Get_tag()
 *         def __set__(self, value):
 *             self.Set_tag(value)             # <<<<<<<<<<<<<<
 * 
 *     def Get_error(self):
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_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 allocated */
  __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 allocated */
  __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_t_1 released */
  /* __pyx_t_2 released */
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  __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_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":60
 *             self.Set_tag(value)
 * 
 *     def Get_error(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get message error
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Get_error(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_Get_error[] = "Status.Get_error(self)\n\n        Get message error\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Get_error(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("Get_error");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":64
 *         Get message error
 *         """
 *         return self.ob_mpi.MPI_ERROR             # <<<<<<<<<<<<<<
 * 
 *     def Set_error(self, error):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(((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;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":66
 *         return self.ob_mpi.MPI_ERROR
 * 
 *     def Set_error(self, error):             # <<<<<<<<<<<<<<
 *         """
 *         Set message error
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Set_error(PyObject *__pyx_v_self, PyObject *__pyx_v_error); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_Set_error[] = "Status.Set_error(self, error)\n\n        Set message error\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Set_error(PyObject *__pyx_v_self, PyObject *__pyx_v_error) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Set_error");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":70
 *         Set message error
 *         """
 *         self.ob_mpi.MPI_ERROR = error             # <<<<<<<<<<<<<<
 * 
 *     property error:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_PyInt_int(__pyx_v_error); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  ((PyMPIStatusObject *)__pyx_v_self)->ob_mpi.MPI_ERROR = __pyx_t_1;
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_error");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_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 allocated */
  __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_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_6Status_5error___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__set__");

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_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 allocated */
  __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 allocated */
  __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_t_1 released */
  /* __pyx_t_2 released */
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  __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_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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_Get_count(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_Get_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_Get_count(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  int __pyx_v_count;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_datatype,0};
  __Pyx_SetupRefcountContext("Get_count");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = (PyObject*)__pyx_k_63;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_datatype);
        if (unlikely(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;}
    }
    __pyx_v_datatype = ((PyMPIDatatypeObject *)values[0]);
  } else {
    __pyx_v_datatype = __pyx_k_63;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_datatype = ((PyMPIDatatypeObject *)PyTuple_GET_ITEM(__pyx_args, 0));
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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");
  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;}

  /* "/u/dalcinl/Devel/mpi4py-dev/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;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count((&((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;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":85
 *         cdef int count = MPI_UNDEFINED
 *         CHKERR( MPI_Get_count(&self.ob_mpi, datatype.ob_mpi, &count) )
 *         return count             # <<<<<<<<<<<<<<
 * 
 *     def Get_elements(self, Datatype datatype not None):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __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;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":87
 *         return count
 * 
 *     def Get_elements(self, Datatype datatype not None):             # <<<<<<<<<<<<<<
 *         """
 *         Get the number of basic elements in a datatype
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Get_elements(PyObject *__pyx_v_self, PyObject *__pyx_v_datatype); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_Get_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_Get_elements(PyObject *__pyx_v_self, PyObject *__pyx_v_datatype) {
  int __pyx_v_elements;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_elements");
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":91
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":92
 *         """
 *         cdef int elements = MPI_UNDEFINED
 *         CHKERR( MPI_Get_elements(&self.ob_mpi, datatype.ob_mpi, &elements) )             # <<<<<<<<<<<<<<
 *         return elements
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_elements((&((PyMPIStatusObject *)__pyx_v_self)->ob_mpi), ((PyMPIDatatypeObject *)__pyx_v_datatype)->ob_mpi, (&__pyx_v_elements))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":93
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_elements); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":95
 *         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_Set_elements(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_Set_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_Set_elements(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIDatatypeObject *__pyx_v_datatype = 0;
  int __pyx_v_count;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_datatype,&__pyx_kp_count,0};
  __Pyx_SetupRefcountContext("Set_elements");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_datatype);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_count);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Set_elements", 1, 2, 2, 1); {__pyx_filename = __pyx_f[20]; __pyx_lineno = 95; __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 = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_datatype = ((PyMPIDatatypeObject *)values[0]);
    __pyx_v_count = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_datatype = ((PyMPIDatatypeObject *)PyTuple_GET_ITEM(__pyx_args, 0));
    __pyx_v_count = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_count == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 95; __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 = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_elements");
  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 = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":102
 *            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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_set_elements((&((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 = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_elements");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":104
 *         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_Is_cancelled(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_Is_cancelled[] = "Status.Is_cancelled(self)\n\n        Test to see if a request was cancelled\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Is_cancelled(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Is_cancelled");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":108
 *         Test to see if a request was cancelled
 *         """
 *         cdef bint flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Test_cancelled(&self.ob_mpi, &flag) )
 *         return flag
 */
  __pyx_v_flag = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":109
 *         """
 *         cdef bint flag = 0
 *         CHKERR( MPI_Test_cancelled(&self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Test_cancelled((&((PyMPIStatusObject *)__pyx_v_self)->ob_mpi), ((int *)(&__pyx_v_flag)))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":110
 *         cdef bint flag = 0
 *         CHKERR( MPI_Test_cancelled(&self.ob_mpi, &flag) )
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     def Set_cancelled(self, bint flag):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":112
 *         return flag
 * 
 *     def Set_cancelled(self, bint flag):             # <<<<<<<<<<<<<<
 *         """
 *         Set the cancelled state associated with a status
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_Set_cancelled(PyObject *__pyx_v_self, PyObject *__pyx_arg_flag); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_6Status_Set_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_Set_cancelled(PyObject *__pyx_v_self, PyObject *__pyx_arg_flag) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Set_cancelled");
  assert(__pyx_arg_flag); {
    __pyx_v_flag = __Pyx_PyObject_IsTrue(__pyx_arg_flag); if (unlikely((__pyx_v_flag == (int)-1))) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_cancelled");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":119
 *            query callback functions for generalized requests
 *         """
 *         CHKERR( MPI_Status_set_cancelled(&self.ob_mpi, flag) )             # <<<<<<<<<<<<<<
 * 
 *     property cancelled:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_set_cancelled((&((PyMPIStatusObject *)__pyx_v_self)->ob_mpi), __pyx_v_flag)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_cancelled");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":125
 *         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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":126
 *         """
 *         def __get__(self):
 *             return self.Is_cancelled()             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self.Set_cancelled(value)
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Is_cancelled); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __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 = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":127
 *         def __get__(self):
 *             return self.Is_cancelled()
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self.Set_cancelled(value)
 */

static int __pyx_pf_6mpi4py_3MPI_6Status_9cancelled___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_6Status_9cancelled___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__set__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Status.pyx":128
 *             return self.Is_cancelled()
 *         def __set__(self, value):
 *             self.Set_cancelled(value)             # <<<<<<<<<<<<<<
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Set_cancelled); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 128; __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 allocated */
  __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 = 128; __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_t_1 released */
  /* __pyx_t_2 released */
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  __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_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":7
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ob_mpi = MPI_REQUEST_NULL
 * 
 */

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) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":8
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_REQUEST_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((PyMPIRequestObject *)__pyx_v_self)->ob_mpi = MPI_REQUEST_NULL;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":10
 *         self.ob_mpi = MPI_REQUEST_NULL
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( _del_Request(&self.ob_mpi) )
 */

static void __pyx_pf_6mpi4py_3MPI_7Request___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_7Request___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("__dealloc__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":11
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( _del_Request(&self.ob_mpi) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!(((PyMPIRequestObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":12
 *     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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI__del_Request((&((PyMPIRequestObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.__dealloc__");
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":14
 *         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___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyMPIRequestObject *__pyx_v_s = 0;
  PyMPIRequestObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("__richcmp__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":15
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Request): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Request): return NotImplemented
 *         cdef Request s = self, o = other
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_self, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request))); 
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":16
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Request): return NotImplemented
 *         if not isinstance(other, Request): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Request s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_TypeCheck(__pyx_v_other, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request))); 
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_t_2);
  /* __pyx_t_2 released */
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":17
 *         if not isinstance(self,  Request): return NotImplemented
 *         if not isinstance(other, Request): return NotImplemented
 *         cdef Request s = self, o = other             # <<<<<<<<<<<<<<
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 */
  if (!(__Pyx_TypeTest(__pyx_v_self, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_self);
  __pyx_v_s = ((PyMPIRequestObject *)__pyx_v_self);
  if (!(__Pyx_TypeTest(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_other);
  __pyx_v_o = ((PyMPIRequestObject *)__pyx_v_other);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":18
 *         if not isinstance(other, Request): return NotImplemented
 *         cdef Request s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 */
  switch (__pyx_v_op) {
    case 2:
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    case 3:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":19
 *         cdef Request s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    default:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":20
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_135); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    {__pyx_filename = __pyx_f[21]; __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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Request.__richcmp__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":22
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_REQUEST_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_7Request___nonzero__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_7Request___nonzero__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__nonzero__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":23
 * 
 *     def __nonzero__(self):
 *         return self.ob_mpi != MPI_REQUEST_NULL             # <<<<<<<<<<<<<<
 * 
 *     # Completion Operations
 */
  __pyx_r = (((PyMPIRequestObject *)__pyx_v_self)->ob_mpi != MPI_REQUEST_NULL);
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":28
 *     # ---------------------
 * 
 *     def Wait(self, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for an MPI send or receive to complete.
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_Wait[] = "Request.Wait(self, Status status=None)\n\n        Wait for an MPI send or receive to complete.\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Wait(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIStatusObject *__pyx_v_status = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Wait");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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 = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_status = ((PyMPIStatusObject *)values[0]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 0));
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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 = 28; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Wait");
  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 = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":32
 *         Wait for an MPI 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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":33
 *         """
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         with nogil: CHKERR( MPI_Wait(&self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Test(self, Status status=None):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Wait((&((PyMPIRequestObject *)__pyx_v_self)->ob_mpi), __pyx_v_statusp)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
    }
    /*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.Request.Wait");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":35
 *         with nogil: CHKERR( MPI_Wait(&self.ob_mpi, statusp) )
 * 
 *     def Test(self, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for the completion of a send or receive.
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Test(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_Test[] = "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_Test(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Test");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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 = 35; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_status = ((PyMPIStatusObject *)values[0]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 0));
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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 = 35; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Test");
  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 = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":39
 *         Test for the completion of a send or receive.
 *         """
 *         cdef bint flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         with nogil: CHKERR( MPI_Test(&self.ob_mpi, &flag, statusp) )
 */
  __pyx_v_flag = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":40
 *         """
 *         cdef bint flag = 0
 *         cdef MPI_Status *statusp = _arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Test(&self.ob_mpi, &flag, statusp) )
 *         return flag
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI__arg_Status(((PyObject *)__pyx_v_status));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":41
 *         cdef bint flag = 0
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         with nogil: CHKERR( MPI_Test(&self.ob_mpi, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Test((&((PyMPIRequestObject *)__pyx_v_self)->ob_mpi), ((int *)(&__pyx_v_flag)), __pyx_v_statusp)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":42
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         with nogil: CHKERR( MPI_Test(&self.ob_mpi, &flag, statusp) )
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     def Free(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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.Test");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":44
 *         return flag
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free a communication request
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Free(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_Free[] = "Request.Free(self)\n\n        Free a communication request\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Free(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Free");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":48
 *         Free a communication request
 *         """
 *         with nogil: CHKERR( MPI_Request_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_status(self, Status status=None):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Request_free((&((PyMPIRequestObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":50
 *         with nogil: CHKERR( MPI_Request_free(&self.ob_mpi) )
 * 
 *     def Get_status(self, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Non-destructive test for the
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Get_status(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_Get_status[] = "Request.Get_status(self, Status status=None)\n\n        Non-destructive test for the\n        completion of a request\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Get_status(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Get_status");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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 = 50; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_status = ((PyMPIStatusObject *)values[0]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 0));
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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 = 50; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Get_status");
  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 = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":55
 *         completion of a request
 *         """
 *         cdef bint flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(self.ob_mpi, &flag, statusp) )
 */
  __pyx_v_flag = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":56
 *         """
 *         cdef bint flag = 0
 *         cdef MPI_Status *statusp = _arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Request_get_status(self.ob_mpi, &flag, statusp) )
 *         return flag
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI__arg_Status(((PyObject *)__pyx_v_status));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":57
 *         cdef bint flag = 0
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(self.ob_mpi, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Request_get_status(((PyMPIRequestObject *)__pyx_v_self)->ob_mpi, ((int *)(&__pyx_v_flag)), __pyx_v_statusp)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":58
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(self.ob_mpi, &flag, statusp) )
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     # Multiple Completions
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":64
 * 
 *     @classmethod
 *     def Waitany(cls, requests, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for any previously initiated request to complete
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Waitany(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_Waitany[] = "Request.Waitany(cls, requests, Status status=None)\n\n        Wait for any previously initiated request to complete\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Waitany(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_requests = 0;
  PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_count;
  MPI_Request *__pyx_v_irequests;
  PyObject *__pyx_v_tmp1 = 0;
  MPI_Status *__pyx_v_statusp;
  int __pyx_v_index;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_requests,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Waitany");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_requests);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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 = 64; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_requests = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_requests = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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 = 64; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitany");
  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 = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":68
 *         Wait for any previously initiated request to complete
 *         """
 *         cdef int count = len(requests)             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_requests); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_count = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":69
 *         """
 *         cdef int count = len(requests)
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 *         cdef MPI_Status *statusp = _arg_Status(status)
 */
  __pyx_v_irequests = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":70
 *         cdef int count = len(requests)
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         cdef int index = MPI_UNDEFINED
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":71
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 *         cdef MPI_Status *statusp = _arg_Status(status)             # <<<<<<<<<<<<<<
 *         cdef int index = MPI_UNDEFINED
 *         #
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI__arg_Status(((PyObject *)__pyx_v_status));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":72
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         cdef int index = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         #
 *         try:
 */
  __pyx_v_index = MPI_UNDEFINED;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":74
 *         cdef int index = MPI_UNDEFINED
 *         #
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Waitany(count, irequests, &index, statusp) )
 *         finally:
 */
  /*try:*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":75
 *         #
 *         try:
 *             with nogil: CHKERR( MPI_Waitany(count, irequests, &index, statusp) )             # <<<<<<<<<<<<<<
 *         finally:
 *             restore_Request(requests, &irequests, count);
 */
    /*with nogil:*/ {
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {
        /* __pyx_t_3 allocated */
        __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 = 75; __pyx_clineno = __LINE__; goto __pyx_L10;}
        /* __pyx_t_3 released */
      }
      /*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;
        }
      }
    }
  }
  /*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:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":77
 *             with nogil: CHKERR( MPI_Waitany(count, irequests, &index, statusp) )
 *         finally:
 *             restore_Request(requests, &irequests, count);             # <<<<<<<<<<<<<<
 *         #
 *         return index
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_restore_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_count); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    /* __pyx_t_3 released */
    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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":79
 *             restore_Request(requests, &irequests, count);
 *         #
 *         return index             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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.Waitany");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":82
 * 
 *     @classmethod
 *     def Testany(cls, requests, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of any previously initiated request
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Testany(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_Testany[] = "Request.Testany(cls, requests, Status status=None)\n\n        Test for completion of any previously initiated request\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Testany(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_requests = 0;
  PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_count;
  MPI_Request *__pyx_v_irequests;
  PyObject *__pyx_v_tmp1 = 0;
  int __pyx_v_index;
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  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;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_requests,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Testany");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_requests);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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 = 82; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_requests = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_requests = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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 = 82; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testany");
  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 = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":86
 *         Test for completion of any previously initiated request
 *         """
 *         cdef int count = len(requests)             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_requests); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_count = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":87
 *         """
 *         cdef int count = len(requests)
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 *         cdef int index = MPI_UNDEFINED
 */
  __pyx_v_irequests = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":88
 *         cdef int count = len(requests)
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)             # <<<<<<<<<<<<<<
 *         cdef int index = MPI_UNDEFINED
 *         cdef bint flag = 0
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_count); 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_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":89
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 *         cdef int index = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef bint flag = 0
 *         cdef MPI_Status *statusp = _arg_Status(status)
 */
  __pyx_v_index = MPI_UNDEFINED;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":90
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 *         cdef int index = MPI_UNDEFINED
 *         cdef bint flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         #
 */
  __pyx_v_flag = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":91
 *         cdef int index = MPI_UNDEFINED
 *         cdef bint flag = 0
 *         cdef MPI_Status *statusp = _arg_Status(status)             # <<<<<<<<<<<<<<
 *         #
 *         try:
 */
  __pyx_v_statusp = __pyx_f_6mpi4py_3MPI__arg_Status(((PyObject *)__pyx_v_status));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":93
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         #
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Testany(count, irequests, &index, &flag, statusp) )
 *         finally:
 */
  /*try:*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":94
 *         #
 *         try:
 *             with nogil: CHKERR( MPI_Testany(count, irequests, &index, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         finally:
 *             restore_Request(requests, &irequests, count)
 */
    /*with nogil:*/ {
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {
        /* __pyx_t_3 allocated */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Testany(__pyx_v_count, __pyx_v_irequests, (&__pyx_v_index), ((int *)(&__pyx_v_flag)), __pyx_v_statusp)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L10;}
        /* __pyx_t_3 released */
      }
      /*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;
        }
      }
    }
  }
  /*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:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":96
 *             with nogil: CHKERR( MPI_Testany(count, irequests, &index, &flag, statusp) )
 *         finally:
 *             restore_Request(requests, &irequests, count)             # <<<<<<<<<<<<<<
 *         #
 *         return (index, flag)
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_restore_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_count); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    /* __pyx_t_3 released */
    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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":98
 *             restore_Request(requests, &irequests, count)
 *         #
 *         return (index, flag)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  /* __pyx_t_5 allocated */
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 98; __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_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_4 released */
  __pyx_r = ((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;
  /* __pyx_t_5 released */
  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_AddTraceback("mpi4py.MPI.Request.Testany");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":101
 * 
 *     @classmethod
 *     def Waitall(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for all previously initiated requests to complete
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Waitall(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_Waitall[] = "Request.Waitall(cls, requests, statuses=None)\n\n        Wait for all previously initiated requests to complete\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Waitall(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;
  PyObject *__pyx_v_tmp1 = 0;
  MPI_Status *__pyx_v_istatuses;
  PyObject *__pyx_v_tmp2 = 0;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_requests,&__pyx_kp_statuses,0};
  __Pyx_SetupRefcountContext("Waitall");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_requests);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_statuses);
        if (unlikely(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 = 101; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  } else {
    __pyx_v_statuses = Py_None;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_statuses = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_requests = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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 = 101; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitall");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":105
 *         Wait for all previously initiated requests to complete
 *         """
 *         cdef int count = len(requests)             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_requests); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_count = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":106
 *         """
 *         cdef int count = len(requests)
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 */
  __pyx_v_irequests = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":107
 *         cdef int count = len(requests)
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, count)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":108
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE             # <<<<<<<<<<<<<<
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, count)
 *         #
 */
  __pyx_v_istatuses = MPI_STATUSES_IGNORE;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":109
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, count)             # <<<<<<<<<<<<<<
 *         #
 *         try:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Status(__pyx_v_statuses, (&__pyx_v_istatuses), __pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":111
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, count)
 *         #
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Waitall(count, irequests, istatuses) )
 *         finally:
 */
  /*try:*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":112
 *         #
 *         try:
 *             with nogil: CHKERR( MPI_Waitall(count, irequests, istatuses) )             # <<<<<<<<<<<<<<
 *         finally:
 *             restore_Request(requests, &irequests, count)
 */
    /*with nogil:*/ {
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {
        /* __pyx_t_3 allocated */
        __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[21]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L10;}
        /* __pyx_t_3 released */
      }
      /*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;
        }
      }
    }
  }
  /*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:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":114
 *             with nogil: CHKERR( MPI_Waitall(count, irequests, istatuses) )
 *         finally:
 *             restore_Request(requests, &irequests, count)             # <<<<<<<<<<<<<<
 *             restore_Status(statuses, &istatuses, count)
 *         #
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_restore_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_count); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":115
 *         finally:
 *             restore_Request(requests, &irequests, count)
 *             restore_Status(statuses, &istatuses, count)             # <<<<<<<<<<<<<<
 *         #
 *         return None
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_restore_Status(__pyx_v_statuses, (&__pyx_v_istatuses), __pyx_v_count); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    /* __pyx_t_3 released */
    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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":117
 *             restore_Status(statuses, &istatuses, count)
 *         #
 *         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_2);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitall");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":120
 * 
 *     @classmethod
 *     def Testall(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of all previously initiated requests
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Testall(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_Testall[] = "Request.Testall(cls, requests, statuses=None)\n\n        Test for completion of all previously initiated requests\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Testall(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;
  PyObject *__pyx_v_tmp1 = 0;
  MPI_Status *__pyx_v_istatuses;
  PyObject *__pyx_v_tmp2 = 0;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_requests,&__pyx_kp_statuses,0};
  __Pyx_SetupRefcountContext("Testall");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_requests);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_statuses);
        if (unlikely(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 = 120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  } else {
    __pyx_v_statuses = Py_None;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_statuses = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_requests = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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 = 120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testall");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":124
 *         Test for completion of all previously initiated requests
 *         """
 *         cdef int count = len(requests)             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_requests); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_count = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":125
 *         """
 *         cdef int count = len(requests)
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 */
  __pyx_v_irequests = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":126
 *         cdef int count = len(requests)
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, count)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":127
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE             # <<<<<<<<<<<<<<
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, count)
 *         cdef bint flag = 0
 */
  __pyx_v_istatuses = MPI_STATUSES_IGNORE;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":128
 *         cdef tmp1 = asarray_Request(requests, &irequests, count)
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, count)             # <<<<<<<<<<<<<<
 *         cdef bint flag = 0
 *         #
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Status(__pyx_v_statuses, (&__pyx_v_istatuses), __pyx_v_count); 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_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":129
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, count)
 *         cdef bint flag = 0             # <<<<<<<<<<<<<<
 *         #
 *         try:
 */
  __pyx_v_flag = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":131
 *         cdef bint flag = 0
 *         #
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Testall(count, irequests, &flag, istatuses) )
 *         finally:
 */
  /*try:*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":132
 *         #
 *         try:
 *             with nogil: CHKERR( MPI_Testall(count, irequests, &flag, istatuses) )             # <<<<<<<<<<<<<<
 *         finally:
 *             restore_Request(requests, &irequests, count)
 */
    /*with nogil:*/ {
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {
        /* __pyx_t_3 allocated */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Testall(__pyx_v_count, __pyx_v_irequests, ((int *)(&__pyx_v_flag)), __pyx_v_istatuses)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L10;}
        /* __pyx_t_3 released */
      }
      /*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;
        }
      }
    }
  }
  /*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:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":134
 *             with nogil: CHKERR( MPI_Testall(count, irequests, &flag, istatuses) )
 *         finally:
 *             restore_Request(requests, &irequests, count)             # <<<<<<<<<<<<<<
 *             restore_Status(statuses, &istatuses, count)
 *         #
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_restore_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_count); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":135
 *         finally:
 *             restore_Request(requests, &irequests, count)
 *             restore_Status(statuses, &istatuses, count)             # <<<<<<<<<<<<<<
 *         #
 *         return flag
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_restore_Status(__pyx_v_statuses, (&__pyx_v_istatuses), __pyx_v_count); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    /* __pyx_t_3 released */
    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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":137
 *             restore_Status(statuses, &istatuses, count)
 *         #
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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.Testall");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":140
 * 
 *     @classmethod
 *     def Waitsome(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for some previously initiated requests to complete
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Waitsome(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_Waitsome[] = "Request.Waitsome(cls, requests, statuses=None)\n\n        Wait for some previously initiated requests to complete\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Waitsome(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;
  PyObject *__pyx_v_tmp1 = 0;
  MPI_Status *__pyx_v_istatuses;
  PyObject *__pyx_v_tmp2 = 0;
  int __pyx_v_outcount;
  int *__pyx_v_iindices;
  PyObject *__pyx_v_tmp3 = 0;
  int __pyx_v_i;
  PyObject *__pyx_v_indices;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_requests,&__pyx_kp_statuses,0};
  __Pyx_SetupRefcountContext("Waitsome");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_requests);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_statuses);
        if (unlikely(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 = 140; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  } else {
    __pyx_v_statuses = Py_None;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_statuses = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_requests = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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 = 140; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitsome");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_indices = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":144
 *         Wait for some previously initiated requests to complete
 *         """
 *         cdef int incount = len(requests)             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, incount)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_requests); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_incount = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":145
 *         """
 *         cdef int incount = len(requests)
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = asarray_Request(requests, &irequests, incount)
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 */
  __pyx_v_irequests = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":146
 *         cdef int incount = len(requests)
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, incount)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, incount)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_incount); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":147
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, incount)
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE             # <<<<<<<<<<<<<<
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, incount)
 *         cdef int outcount = MPI_UNDEFINED
 */
  __pyx_v_istatuses = MPI_STATUSES_IGNORE;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":148
 *         cdef tmp1 = asarray_Request(requests, &irequests, incount)
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, incount)             # <<<<<<<<<<<<<<
 *         cdef int outcount = MPI_UNDEFINED
 *         cdef int *iindices = NULL
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Status(__pyx_v_statuses, (&__pyx_v_istatuses), __pyx_v_incount); 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_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":149
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, incount)
 *         cdef int outcount = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef int *iindices = NULL
 *         cdef tmp3 = newarray_int(incount, &iindices)
 */
  __pyx_v_outcount = MPI_UNDEFINED;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":150
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, incount)
 *         cdef int outcount = MPI_UNDEFINED
 *         cdef int *iindices = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp3 = newarray_int(incount, &iindices)
 *         #
 */
  __pyx_v_iindices = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":151
 *         cdef int outcount = MPI_UNDEFINED
 *         cdef int *iindices = NULL
 *         cdef tmp3 = newarray_int(incount, &iindices)             # <<<<<<<<<<<<<<
 *         #
 *         try:
 */
  /* __pyx_t_2 allocated */
  __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 = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp3 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":153
 *         cdef tmp3 = newarray_int(incount, &iindices)
 *         #
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Waitsome(incount, irequests, &outcount, iindices, istatuses) )
 *         finally:
 */
  /*try:*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":154
 *         #
 *         try:
 *             with nogil: CHKERR( MPI_Waitsome(incount, irequests, &outcount, iindices, istatuses) )             # <<<<<<<<<<<<<<
 *         finally:
 *             restore_Request(requests, &irequests, incount)
 */
    /*with nogil:*/ {
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {
        /* __pyx_t_3 allocated */
        __pyx_t_3 = __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_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L10;}
        /* __pyx_t_3 released */
      }
      /*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;
        }
      }
    }
  }
  /*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:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":156
 *             with nogil: CHKERR( MPI_Waitsome(incount, irequests, &outcount, iindices, istatuses) )
 *         finally:
 *             restore_Request(requests, &irequests, incount)             # <<<<<<<<<<<<<<
 *             restore_Status(statuses, &istatuses, incount)
 *         #
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_restore_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_incount); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":157
 *         finally:
 *             restore_Request(requests, &irequests, incount)
 *             restore_Status(statuses, &istatuses, incount)             # <<<<<<<<<<<<<<
 *         #
 *         cdef int i = 0
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_restore_Status(__pyx_v_statuses, (&__pyx_v_istatuses), __pyx_v_incount); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    /* __pyx_t_3 released */
    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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":159
 *             restore_Status(statuses, &istatuses, incount)
 *         #
 *         cdef int i = 0             # <<<<<<<<<<<<<<
 *         indices = []
 *         if outcount != 0 and outcount != MPI_UNDEFINED:
 */
  __pyx_v_i = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":160
 *         #
 *         cdef int i = 0
 *         indices = []             # <<<<<<<<<<<<<<
 *         if outcount != 0 and outcount != MPI_UNDEFINED:
 *             indices = [iindices[i] for i from 0 <= i < outcount]
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_DECREF(__pyx_v_indices);
  __pyx_v_indices = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":161
 *         cdef int i = 0
 *         indices = []
 *         if outcount != 0 and outcount != MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *             indices = [iindices[i] for i from 0 <= i < outcount]
 *         return (outcount, indices)
 */
  if ((__pyx_v_outcount != 0)) {
    /* __pyx_t_4 allocated */
    __pyx_t_4 = (__pyx_v_outcount != MPI_UNDEFINED);
  } else {
    __pyx_t_4 = (__pyx_v_outcount != 0);
  }
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":162
 *         indices = []
 *         if outcount != 0 and outcount != MPI_UNDEFINED:
 *             indices = [iindices[i] for i from 0 <= i < outcount]             # <<<<<<<<<<<<<<
 *         return (outcount, indices)
 * 
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_outcount; __pyx_v_i++) {
      /* __pyx_t_5 allocated */
      __pyx_t_5 = PyInt_FromLong((__pyx_v_iindices[__pyx_v_i])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_5); if (unlikely(__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      /* __pyx_t_5 released */
      /* __pyx_t_3 released */
    }
    __Pyx_INCREF(((PyObject *)__pyx_t_2));
    __Pyx_DECREF(__pyx_v_indices);
    __pyx_v_indices = ((PyObject *)__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":163
 *         if outcount != 0 and outcount != MPI_UNDEFINED:
 *             indices = [iindices[i] for i from 0 <= i < outcount]
 *         return (outcount, indices)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_outcount); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_5 allocated */
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 163; __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_t_2 released */
  __pyx_r = ((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;
  /* __pyx_t_5 released */
  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.Waitsome");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF(__pyx_v_tmp3);
  __Pyx_DECREF(__pyx_v_indices);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":166
 * 
 *     @classmethod
 *     def Testsome(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of some previously initiated requests
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Testsome(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_Testsome[] = "Request.Testsome(cls, requests, statuses=None)\n\n        Test for completion of some previously initiated requests\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Testsome(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;
  PyObject *__pyx_v_tmp1 = 0;
  MPI_Status *__pyx_v_istatuses;
  PyObject *__pyx_v_tmp2 = 0;
  int __pyx_v_outcount;
  int *__pyx_v_iindices;
  PyObject *__pyx_v_tmp3 = 0;
  int __pyx_v_i;
  PyObject *__pyx_v_indices;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_requests,&__pyx_kp_statuses,0};
  __Pyx_SetupRefcountContext("Testsome");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_requests);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_statuses);
        if (unlikely(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 = 166; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  } else {
    __pyx_v_statuses = Py_None;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_statuses = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_requests = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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 = 166; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testsome");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_indices = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":170
 *         Test for completion of some previously initiated requests
 *         """
 *         cdef int incount = len(requests)             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, incount)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_requests); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_incount = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":171
 *         """
 *         cdef int incount = len(requests)
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = asarray_Request(requests, &irequests, incount)
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 */
  __pyx_v_irequests = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":172
 *         cdef int incount = len(requests)
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, incount)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, incount)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_incount); 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_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":173
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp1 = asarray_Request(requests, &irequests, incount)
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE             # <<<<<<<<<<<<<<
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, incount)
 *         cdef int outcount = MPI_UNDEFINED
 */
  __pyx_v_istatuses = MPI_STATUSES_IGNORE;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":174
 *         cdef tmp1 = asarray_Request(requests, &irequests, incount)
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, incount)             # <<<<<<<<<<<<<<
 *         cdef int outcount = MPI_UNDEFINED
 *         cdef int *iindices = NULL
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Status(__pyx_v_statuses, (&__pyx_v_istatuses), __pyx_v_incount); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":175
 *         cdef MPI_Status *istatuses = MPI_STATUSES_IGNORE
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, incount)
 *         cdef int outcount = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef int *iindices = NULL
 *         cdef tmp3 = newarray_int(incount, &iindices)
 */
  __pyx_v_outcount = MPI_UNDEFINED;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":176
 *         cdef tmp2 = asarray_Status(statuses, &istatuses, incount)
 *         cdef int outcount = MPI_UNDEFINED
 *         cdef int *iindices = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp3 = newarray_int(incount, &iindices)
 *         #
 */
  __pyx_v_iindices = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":177
 *         cdef int outcount = MPI_UNDEFINED
 *         cdef int *iindices = NULL
 *         cdef tmp3 = newarray_int(incount, &iindices)             # <<<<<<<<<<<<<<
 *         #
 *         try:
 */
  /* __pyx_t_2 allocated */
  __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 = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp3 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":179
 *         cdef tmp3 = newarray_int(incount, &iindices)
 *         #
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Waitsome(incount, irequests, &outcount, iindices, istatuses) )
 *         finally:
 */
  /*try:*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":180
 *         #
 *         try:
 *             with nogil: CHKERR( MPI_Waitsome(incount, irequests, &outcount, iindices, istatuses) )             # <<<<<<<<<<<<<<
 *         finally:
 *             restore_Request(requests, &irequests, incount)
 */
    /*with nogil:*/ {
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {
        /* __pyx_t_3 allocated */
        __pyx_t_3 = __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_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L10;}
        /* __pyx_t_3 released */
      }
      /*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;
        }
      }
    }
  }
  /*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:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":182
 *             with nogil: CHKERR( MPI_Waitsome(incount, irequests, &outcount, iindices, istatuses) )
 *         finally:
 *             restore_Request(requests, &irequests, incount)             # <<<<<<<<<<<<<<
 *             restore_Status(statuses, &istatuses, incount)
 *         #
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_restore_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_incount); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":183
 *         finally:
 *             restore_Request(requests, &irequests, incount)
 *             restore_Status(statuses, &istatuses, incount)             # <<<<<<<<<<<<<<
 *         #
 *         cdef int i = 0
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_restore_Status(__pyx_v_statuses, (&__pyx_v_istatuses), __pyx_v_incount); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    /* __pyx_t_3 released */
    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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":185
 *             restore_Status(statuses, &istatuses, incount)
 *         #
 *         cdef int i = 0             # <<<<<<<<<<<<<<
 *         indices = []
 *         if outcount != 0 and outcount != MPI_UNDEFINED:
 */
  __pyx_v_i = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":186
 *         #
 *         cdef int i = 0
 *         indices = []             # <<<<<<<<<<<<<<
 *         if outcount != 0 and outcount != MPI_UNDEFINED:
 *             indices = [iindices[i] for i from 0 <= i < outcount]
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_DECREF(__pyx_v_indices);
  __pyx_v_indices = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":187
 *         cdef int i = 0
 *         indices = []
 *         if outcount != 0 and outcount != MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *             indices = [iindices[i] for i from 0 <= i < outcount]
 *         return (outcount, indices)
 */
  if ((__pyx_v_outcount != 0)) {
    /* __pyx_t_4 allocated */
    __pyx_t_4 = (__pyx_v_outcount != MPI_UNDEFINED);
  } else {
    __pyx_t_4 = (__pyx_v_outcount != 0);
  }
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":188
 *         indices = []
 *         if outcount != 0 and outcount != MPI_UNDEFINED:
 *             indices = [iindices[i] for i from 0 <= i < outcount]             # <<<<<<<<<<<<<<
 *         return (outcount, indices)
 * 
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_outcount; __pyx_v_i++) {
      /* __pyx_t_5 allocated */
      __pyx_t_5 = PyInt_FromLong((__pyx_v_iindices[__pyx_v_i])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_5); if (unlikely(__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      /* __pyx_t_5 released */
      /* __pyx_t_3 released */
    }
    __Pyx_INCREF(((PyObject *)__pyx_t_2));
    __Pyx_DECREF(__pyx_v_indices);
    __pyx_v_indices = ((PyObject *)__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":189
 *         if outcount != 0 and outcount != MPI_UNDEFINED:
 *             indices = [iindices[i] for i from 0 <= i < outcount]
 *         return (outcount, indices)             # <<<<<<<<<<<<<<
 * 
 *     # Cancel
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_outcount); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_5 allocated */
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 189; __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_t_2 released */
  __pyx_r = ((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;
  /* __pyx_t_5 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF(__pyx_v_tmp3);
  __Pyx_DECREF(__pyx_v_indices);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":194
 *     # ------
 * 
 *     def Cancel(self):             # <<<<<<<<<<<<<<
 *         """
 *         Cancel a communication request
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Cancel(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_Cancel[] = "Request.Cancel(self)\n\n        Cancel a communication request\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_Cancel(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Cancel");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":198
 *         Cancel a communication request
 *         """
 *         with nogil: CHKERR( MPI_Cancel(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cancel((&((PyMPIRequestObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":203
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_py2f(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_py2f[] = "Request.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_py2f(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("py2f");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":206
 *         """
 *         """
 *         return MPI_Request_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(MPI_Request_c2f(((PyMPIRequestObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":209
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_7Request_f2py[] = "Request.f2py(cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  __Pyx_SetupRefcountContext("f2py");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":212
 *         """
 *         """
 *         cdef Request request = cls()             # <<<<<<<<<<<<<<
 *         request.ob_mpi = MPI_Request_f2c(arg)
 *         return request
 */
  /* __pyx_t_1 allocated */
  __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 = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":213
 *         """
 *         cdef Request request = cls()
 *         request.ob_mpi = MPI_Request_f2c(arg)             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_long(__pyx_v_arg); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request->ob_mpi = MPI_Request_f2c(__pyx_t_2);
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":214
 *         cdef Request request = cls()
 *         request.ob_mpi = MPI_Request_f2c(arg)
 *         return request             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":224
 *     """
 * 
 *     def Start(self):             # <<<<<<<<<<<<<<
 *         """
 *         Initiate a communication with a persistent request
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_Start(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Prequest_Start[] = "Prequest.Start(self)\n\n        Initiate a communication with a persistent request\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_Start(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Start");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":228
 *         Initiate a communication with a persistent request
 *         """
 *         with nogil: CHKERR( MPI_Start(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Start((&((PyMPIPrequestObject *)__pyx_v_self)->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":231
 * 
 *     @classmethod
 *     def Startall(cls, requests):             # <<<<<<<<<<<<<<
 *         """
 *         Start a collection of persistent requests
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_Startall(PyObject *__pyx_v_cls, PyObject *__pyx_v_requests); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Prequest_Startall[] = "Prequest.Startall(cls, requests)\n\n        Start a collection of persistent requests\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_Startall(PyObject *__pyx_v_cls, PyObject *__pyx_v_requests) {
  int __pyx_v_count;
  MPI_Request *__pyx_v_irequests;
  PyObject *__pyx_v_tmp = 0;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Startall");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":235
 *         Start a collection of persistent requests
 *         """
 *         cdef int count = len(requests)             # <<<<<<<<<<<<<<
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp = asarray_Request(requests, &irequests, count)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_requests); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_count = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":236
 *         """
 *         cdef int count = len(requests)
 *         cdef MPI_Request *irequests = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp = asarray_Request(requests, &irequests, count)
 *         #
 */
  __pyx_v_irequests = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":237
 *         cdef int count = len(requests)
 *         cdef MPI_Request *irequests = NULL
 *         cdef tmp = asarray_Request(requests, &irequests, count)             # <<<<<<<<<<<<<<
 *         #
 *         try:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":239
 *         cdef tmp = asarray_Request(requests, &irequests, count)
 *         #
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Startall(count, irequests) )
 *         finally:
 */
  /*try:*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":240
 *         #
 *         try:
 *             with nogil: CHKERR( MPI_Startall(count, irequests) )             # <<<<<<<<<<<<<<
 *         finally:
 *             restore_Request(requests, &irequests, count)
 */
    /*with nogil:*/ {
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {
        /* __pyx_t_3 allocated */
        __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 = 240; __pyx_clineno = __LINE__; goto __pyx_L9;}
        /* __pyx_t_3 released */
      }
      /*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_L6;
        }
      }
    }
  }
  /*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_L7;
    __pyx_L6: {
      __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_L7;
    }
    __pyx_L7:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":242
 *             with nogil: CHKERR( MPI_Startall(count, irequests) )
 *         finally:
 *             restore_Request(requests, &irequests, count)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_restore_Request(__pyx_v_requests, (&__pyx_v_irequests), __pyx_v_count); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
    /* __pyx_t_3 released */
    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;
      }
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Startall");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":252
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ob_grequest = 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) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":253
 * 
 *     def __cinit__(self):
 *         self.ob_grequest = MPI_REQUEST_NULL             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  ((PyMPIGrequestObject *)__pyx_v_self)->ob_grequest = MPI_REQUEST_NULL;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":256
 * 
 *     @classmethod
 *     def Start(cls, query_fn, free_fn, cancel_fn,             # <<<<<<<<<<<<<<
 *               args=None, kargs=None):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Grequest_Start(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Grequest_Start[] = "Grequest.Start(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_Start(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;
  PyMPIGrequestObject *__pyx_v_request = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_state = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_query_fn,&__pyx_kp_free_fn,&__pyx_kp_cancel_fn,&__pyx_kp_args,&__pyx_kp_kargs,0};
  __Pyx_SetupRefcountContext("Start");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[5] = {0,0,0,0,0};
    values[3] = Py_None;
    values[4] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_query_fn);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_free_fn);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Start", 0, 3, 5, 1); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_cancel_fn);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Start", 0, 3, 5, 2); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_args);
        if (unlikely(value)) { values[3] = value; kw_args--; }
      }
      case  4:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_kargs);
        if (unlikely(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 = 256; __pyx_clineno = __LINE__; goto __pyx_L3_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];
  } else {
    __pyx_v_args = Py_None;
    __pyx_v_kargs = Py_None;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  5:
      __pyx_v_kargs = PyTuple_GET_ITEM(__pyx_args, 4);
      case  4:
      __pyx_v_args = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3:
      __pyx_v_cancel_fn = PyTuple_GET_ITEM(__pyx_args, 2);
      __pyx_v_free_fn = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_query_fn = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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 = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.Start");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":262
 *         """
 *         #
 *         cdef Grequest request = cls()             # <<<<<<<<<<<<<<
 *         cdef _p_greq state = \
 *              _p_greq(query_fn, free_fn, cancel_fn,
 */
  /* __pyx_t_1 allocated */
  __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 = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Grequest))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIGrequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":265
 *         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 allocated */
  __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 264; __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 allocated */
  __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 = 264; __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 released */
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI__p_greq))) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":266
 *              _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) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":268
 *         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 allocated */
      __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 = 266; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_3 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":269
 *             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)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":270
 *             <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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":271
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":273
 *         return request
 * 
 *     def Complete(self):             # <<<<<<<<<<<<<<
 *         """
 *         Notify that a user-defined request is complete
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Grequest_Complete(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Grequest_Complete[] = "Grequest.Complete(self)\n\n        Notify that a user-defined request is complete\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Grequest_Complete(PyObject *__pyx_v_self, PyObject *unused) {
  MPI_Request __pyx_v_grequest;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_SetupRefcountContext("Complete");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":277
 *         Notify that a user-defined request is complete
 *         """
 *         if self.ob_mpi != MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             if self.ob_mpi != self.ob_grequest:
 *                 raise Exception(MPI_ERR_REQUEST)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (((PyMPIGrequestObject *)__pyx_v_self)->__pyx_base.ob_mpi != MPI_REQUEST_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":278
 *         """
 *         if self.ob_mpi != MPI_REQUEST_NULL:
 *             if self.ob_mpi != self.ob_grequest:             # <<<<<<<<<<<<<<
 *                 raise Exception(MPI_ERR_REQUEST)
 *         cdef MPI_Request grequest = self.ob_grequest
 */
    /* __pyx_t_1 allocated */
    __pyx_t_1 = (((PyMPIGrequestObject *)__pyx_v_self)->__pyx_base.ob_mpi != ((PyMPIGrequestObject *)__pyx_v_self)->ob_grequest);
    if (__pyx_t_1) {
      /* __pyx_t_1 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":279
 *         if self.ob_mpi != MPI_REQUEST_NULL:
 *             if self.ob_mpi != self.ob_grequest:
 *                 raise Exception(MPI_ERR_REQUEST)             # <<<<<<<<<<<<<<
 *         cdef MPI_Request grequest = self.ob_grequest
 *         self.ob_grequest = self.ob_mpi # sync handles
 */
      __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_Exception); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_1);
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyInt_FromLong(MPI_ERR_REQUEST); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 279; __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 released */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyObject_Call(__pyx_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      /* __pyx_t_3 released */
      __Pyx_Raise(__pyx_t_2, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      {__pyx_filename = __pyx_f[21]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":280
 *             if self.ob_mpi != self.ob_grequest:
 *                 raise Exception(MPI_ERR_REQUEST)
 *         cdef MPI_Request grequest = self.ob_grequest             # <<<<<<<<<<<<<<
 *         self.ob_grequest = self.ob_mpi # sync handles
 *         with nogil: CHKERR( MPI_Grequest_complete(grequest) )
 */
  __pyx_v_grequest = ((PyMPIGrequestObject *)__pyx_v_self)->ob_grequest;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":281
 *                 raise Exception(MPI_ERR_REQUEST)
 *         cdef MPI_Request grequest = self.ob_grequest
 *         self.ob_grequest = self.ob_mpi # sync handles             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Grequest_complete(grequest) )
 * 
 */
  ((PyMPIGrequestObject *)__pyx_v_self)->ob_grequest = ((PyMPIGrequestObject *)__pyx_v_self)->__pyx_base.ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":282
 *         cdef MPI_Request grequest = self.ob_grequest
 *         self.ob_grequest = self.ob_mpi # sync handles
 *         with nogil: CHKERR( MPI_Grequest_complete(grequest) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_4 allocated */
      __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 = 282; __pyx_clineno = __LINE__; goto __pyx_L8;}
      /* __pyx_t_4 released */
    }
    /*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;
      }
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.Complete");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":8
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_INFO_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((PyMPIInfoObject *)__pyx_v_self)->ob_mpi = MPI_INFO_NULL;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_4Info___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("__dealloc__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":11
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( _del_Info(&self.ob_mpi) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!(((PyMPIInfoObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI__del_Info((&((PyMPIInfoObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.__dealloc__");
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyMPIInfoObject *__pyx_v_s = 0;
  PyMPIInfoObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("__richcmp__");

  /* "/u/dalcinl/Devel/mpi4py-dev/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 = self, o = other
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_self, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Info))); 
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_TypeCheck(__pyx_v_other, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Info))); 
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_t_2);
  /* __pyx_t_2 released */
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":17
 *         if not isinstance(self,  Info): return NotImplemented
 *         if not isinstance(other, Info): return NotImplemented
 *         cdef Info s = self, o = other             # <<<<<<<<<<<<<<
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 */
  if (!(__Pyx_TypeTest(__pyx_v_self, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_self);
  __pyx_v_s = ((PyMPIInfoObject *)__pyx_v_self);
  if (!(__Pyx_TypeTest(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_other);
  __pyx_v_o = ((PyMPIInfoObject *)__pyx_v_other);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":18
 *         if not isinstance(other, Info): return NotImplemented
 *         cdef Info s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 */
  switch (__pyx_v_op) {
    case 2:
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    case 3:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":19
 *         cdef Info s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    default:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":20
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_136); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    {__pyx_filename = __pyx_f[7]; __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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__richcmp__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":22
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_INFO_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_4Info___nonzero__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Info___nonzero__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__nonzero__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":23
 * 
 *     def __nonzero__(self):
 *         return self.ob_mpi != MPI_INFO_NULL             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_r = (((PyMPIInfoObject *)__pyx_v_self)->ob_mpi != MPI_INFO_NULL);
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":26
 * 
 *     @classmethod
 *     def Create(cls):             # <<<<<<<<<<<<<<
 *         """
 *         Create a new, empty info object
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_Create(PyObject *__pyx_v_cls, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_Create[] = "Info.Create(cls)\n\n        Create a new, empty info object\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_Create(PyObject *__pyx_v_cls, PyObject *unused) {
  PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Create");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":30
 *         Create a new, empty info object
 *         """
 *         cdef Info info = cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_create(&info.ob_mpi) )
 *         return info
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_info = ((PyMPIInfoObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":31
 *         """
 *         cdef Info info = cls()
 *         CHKERR( MPI_Info_create(&info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
  /* __pyx_t_2 allocated */
  __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[7]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":32
 *         cdef 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":34
 *         return info
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free a info object
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_Free(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_Free[] = "Info.Free(self)\n\n        Free a info object\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_Free(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Free");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":38
 *         Free a info object
 *         """
 *         CHKERR( MPI_Info_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Dup(self):
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_free((&((PyMPIInfoObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.Free");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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_Dup(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_Dup[] = "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_Dup(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Dup");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":45
 *         the same (key, value) pairs and the same ordering of keys
 *         """
 *         cdef Info info = Info()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_dup(self.ob_mpi, &info.ob_mpi) )
 *         return info
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Info)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_info = ((PyMPIInfoObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":46
 *         """
 *         cdef Info info = Info()
 *         CHKERR( MPI_Info_dup(self.ob_mpi, &info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_dup(((PyMPIInfoObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":47
 *         cdef Info info = Info()
 *         CHKERR( MPI_Info_dup(self.ob_mpi, &info.ob_mpi) )
 *         return info             # <<<<<<<<<<<<<<
 * 
 *     def Get(self, 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":49
 *         return info
 * 
 *     def Get(self, key, int maxlen=-1):             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve the value associated with a key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_Get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_Get[] = "Info.Get(self, key, int maxlen=-1)\n\n        Retrieve the value associated with a key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_Get(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_v_value;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_key,&__pyx_kp_maxlen,0};
  __Pyx_SetupRefcountContext("Get");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_key);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_maxlen);
        if (unlikely(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[7]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_key = values[0];
    if (values[1]) {
      __pyx_v_maxlen = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_maxlen == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_maxlen = -1;
    }
  } else {
    __pyx_v_maxlen = -1;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_maxlen = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_maxlen == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_key = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[7]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.Get");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_key);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = (__pyx_v_maxlen < 0);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_v_maxlen = MPI_MAX_INFO_VAL;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = (__pyx_v_maxlen > MPI_MAX_INFO_VAL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_v_maxlen = MPI_MAX_INFO_VAL;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 bint flag = 0
 */
  __pyx_v_ckey = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 bint flag = 0
 *         key = asmpistr(key, &ckey, NULL)
 */
  __pyx_v_cvalue = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":57
 *         cdef char *ckey = NULL
 *         cdef char *cvalue = NULL
 *         cdef bint flag = 0             # <<<<<<<<<<<<<<
 *         key = asmpistr(key, &ckey, NULL)
 *         cdef object tmp = allocate((maxlen+1), <void**>&cvalue)
 */
  __pyx_v_flag = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":58
 *         cdef char *cvalue = NULL
 *         cdef bint flag = 0
 *         key = asmpistr(key, &ckey, NULL)             # <<<<<<<<<<<<<<
 *         cdef object tmp = allocate((maxlen+1), <void**>&cvalue)
 *         CHKERR( MPI_Info_get(self.ob_mpi, ckey, maxlen, cvalue, &flag) )
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_key, (&__pyx_v_ckey), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __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;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":59
 *         cdef bint flag = 0
 *         key = asmpistr(key, &ckey, NULL)
 *         cdef object tmp = allocate((maxlen+1), <void**>&cvalue)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_get(self.ob_mpi, ckey, maxlen, cvalue, &flag) )
 *         cvalue[maxlen] = 0 # just in case
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_allocate((__pyx_v_maxlen + 1), ((void **)(&__pyx_v_cvalue))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __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;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":60
 *         key = asmpistr(key, &ckey, NULL)
 *         cdef object tmp = allocate((maxlen+1), <void**>&cvalue)
 *         CHKERR( MPI_Info_get(self.ob_mpi, ckey, maxlen, cvalue, &flag) )             # <<<<<<<<<<<<<<
 *         cvalue[maxlen] = 0 # just in case
 *         value = mpistr(cvalue) if flag else None
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_get(((PyMPIInfoObject *)__pyx_v_self)->ob_mpi, __pyx_v_ckey, __pyx_v_maxlen, __pyx_v_cvalue, ((int *)(&__pyx_v_flag)))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":61
 *         cdef object tmp = allocate((maxlen+1), <void**>&cvalue)
 *         CHKERR( MPI_Info_get(self.ob_mpi, ckey, maxlen, cvalue, &flag) )
 *         cvalue[maxlen] = 0 # just in case             # <<<<<<<<<<<<<<
 *         value = mpistr(cvalue) if flag else None
 *         return (value, flag)
 */
  (__pyx_v_cvalue[__pyx_v_maxlen]) = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":62
 *         CHKERR( MPI_Info_get(self.ob_mpi, ckey, maxlen, cvalue, &flag) )
 *         cvalue[maxlen] = 0 # just in case
 *         value = mpistr(cvalue) if flag else None             # <<<<<<<<<<<<<<
 *         return (value, flag)
 * 
 */
  if (__pyx_v_flag) {
    __pyx_1 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_cvalue); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
  } else {
    __pyx_1 = Py_None;
    __Pyx_INCREF(__pyx_1);
  }
  __Pyx_DECREF(__pyx_v_value);
  __pyx_v_value = __pyx_1;
  __pyx_1 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":63
 *         cvalue[maxlen] = 0 # just in case
 *         value = mpistr(cvalue) if flag else None
 *         return (value, flag)             # <<<<<<<<<<<<<<
 * 
 *     def Set(self, key, value):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  __Pyx_INCREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Get");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":65
 *         return (value, flag)
 * 
 *     def Set(self, key, value):             # <<<<<<<<<<<<<<
 *         """
 *         Add the (key, value) pair to info, and overrides the value if
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_Set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_Set[] = "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_Set(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_key,&__pyx_kp_value,0};
  __Pyx_SetupRefcountContext("Set");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_key);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_value);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Set", 1, 2, 2, 1); {__pyx_filename = __pyx_f[7]; __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[7]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_key = values[0];
    __pyx_v_value = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_key = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_value = PyTuple_GET_ITEM(__pyx_args, 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[7]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.Set");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_key);
  __Pyx_INCREF(__pyx_v_value);

  /* "/u/dalcinl/Devel/mpi4py-dev/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;

  /* "/u/dalcinl/Devel/mpi4py-dev/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;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_key, (&__pyx_v_ckey), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_value, (&__pyx_v_cvalue), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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, key):
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_set(((PyMPIInfoObject *)__pyx_v_self)->ob_mpi, __pyx_v_ckey, __pyx_v_cvalue)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  __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_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":76
 *         CHKERR( MPI_Info_set(self.ob_mpi, ckey, cvalue) )
 * 
 *     def Delete(self, key):             # <<<<<<<<<<<<<<
 *         """
 *         Remove a (key, value) pair from info
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_Delete(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_Delete[] = "Info.Delete(self, key)\n\n        Remove a (key, value) pair from info\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_Delete(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  char *__pyx_v_ckey;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Delete");
  __Pyx_INCREF(__pyx_v_key);

  /* "/u/dalcinl/Devel/mpi4py-dev/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;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_key, (&__pyx_v_ckey), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_delete(((PyMPIInfoObject *)__pyx_v_self)->ob_mpi, __pyx_v_ckey)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  __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_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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_Get_nkeys(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_Get_nkeys[] = "Info.Get_nkeys(self)\n\n        Return the number of currently defined keys in info\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_Get_nkeys(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_nkeys;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_nkeys");

  /* "/u/dalcinl/Devel/mpi4py-dev/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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":89
 *         """
 *         cdef int nkeys = 0
 *         CHKERR( MPI_Info_get_nkeys(self.ob_mpi, &nkeys) )             # <<<<<<<<<<<<<<
 *         return nkeys
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_get_nkeys(((PyMPIInfoObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_nkeys))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_nkeys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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_Get_nthkey(PyObject *__pyx_v_self, PyObject *__pyx_arg_n); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_Get_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_Get_nthkey(PyObject *__pyx_v_self, PyObject *__pyx_arg_n) {
  int __pyx_v_n;
  char __pyx_v_ckey[(MPI_MAX_INFO_KEY + 1)];
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_nthkey");
  assert(__pyx_arg_n); {
    __pyx_v_n = __pyx_PyInt_int(__pyx_arg_n); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.Get_nthkey");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_get_nthkey(((PyMPIInfoObject *)__pyx_v_self)->ob_mpi, __pyx_v_n, __pyx_v_ckey)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_ckey); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":106
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_py2f(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_py2f[] = "Info.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_py2f(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("py2f");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":109
 *         """
 *         """
 *         return MPI_Info_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(MPI_Info_c2f(((PyMPIInfoObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":112
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_f2py[] = "Info.f2py(cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  __Pyx_SetupRefcountContext("f2py");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":115
 *         """
 *         """
 *         cdef Info info = cls()             # <<<<<<<<<<<<<<
 *         info.ob_mpi = MPI_Info_f2c(arg)
 *         return info
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_info = ((PyMPIInfoObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":116
 *         """
 *         cdef Info info = cls()
 *         info.ob_mpi = MPI_Info_f2c(arg)             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_long(__pyx_v_arg); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_info->ob_mpi = MPI_Info_f2c(__pyx_t_2);
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":117
 *         cdef 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pf_6mpi4py_3MPI_4Info___len__(PyObject *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  __Pyx_SetupRefcountContext("__len__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":123
 * 
 *     def __len__(self):
 *         if not self: return 0             # <<<<<<<<<<<<<<
 *         return self.Get_nkeys()
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":124
 *     def __len__(self):
 *         if not self: return 0
 *         return self.Get_nkeys()             # <<<<<<<<<<<<<<
 * 
 *     def __contains__(self, key):
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_nkeys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __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_3 released */
  /* __pyx_t_5 allocated */
  __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[7]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  __pyx_r = __pyx_t_5;
  /* __pyx_t_5 released */
  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_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":126
 *         return self.Get_nkeys()
 * 
 *     def __contains__(self, key):             # <<<<<<<<<<<<<<
 *         if not self: return False
 *         cdef char *ckey = NULL
 */

static int __pyx_pf_6mpi4py_3MPI_4Info___contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Info___contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  char *__pyx_v_ckey;
  int __pyx_v_dummy;
  int __pyx_v_haskey;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_SetupRefcountContext("__contains__");
  __Pyx_INCREF(__pyx_v_key);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":127
 * 
 *     def __contains__(self, key):
 *         if not self: return False             # <<<<<<<<<<<<<<
 *         cdef char *ckey = NULL
 *         cdef int dummy = 0
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":128
 *     def __contains__(self, key):
 *         if not self: return False
 *         cdef char *ckey = NULL             # <<<<<<<<<<<<<<
 *         cdef int dummy = 0
 *         cdef bint haskey = 0
 */
  __pyx_v_ckey = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":129
 *         if not self: return False
 *         cdef char *ckey = NULL
 *         cdef int dummy = 0             # <<<<<<<<<<<<<<
 *         cdef bint haskey = 0
 *         key = asmpistr(key, &ckey, NULL)
 */
  __pyx_v_dummy = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":130
 *         cdef char *ckey = NULL
 *         cdef int dummy = 0
 *         cdef bint haskey = 0             # <<<<<<<<<<<<<<
 *         key = asmpistr(key, &ckey, NULL)
 *         CHKERR( MPI_Info_get_valuelen(self.ob_mpi, ckey, &dummy, &haskey) )
 */
  __pyx_v_haskey = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":131
 *         cdef int dummy = 0
 *         cdef bint haskey = 0
 *         key = asmpistr(key, &ckey, NULL)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_get_valuelen(self.ob_mpi, ckey, &dummy, &haskey) )
 *         return haskey
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_key, (&__pyx_v_ckey), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __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;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":132
 *         cdef bint haskey = 0
 *         key = asmpistr(key, &ckey, NULL)
 *         CHKERR( MPI_Info_get_valuelen(self.ob_mpi, ckey, &dummy, &haskey) )             # <<<<<<<<<<<<<<
 *         return haskey
 * 
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_get_valuelen(((PyMPIInfoObject *)__pyx_v_self)->ob_mpi, __pyx_v_ckey, (&__pyx_v_dummy), ((int *)(&__pyx_v_haskey)))); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":133
 *         key = asmpistr(key, &ckey, NULL)
 *         CHKERR( MPI_Info_get_valuelen(self.ob_mpi, ckey, &dummy, &haskey) )
 *         return haskey             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __pyx_r = __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_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":135
 *         return haskey
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.keys())
 * 
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info___iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__iter__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":136
 * 
 *     def __iter__(self):
 *         return iter(self.keys())             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, key):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_keys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __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 = 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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __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_t_2 released */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":138
 *         return iter(self.keys())
 * 
 *     def __getitem__(self, key):             # <<<<<<<<<<<<<<
 *         if not self: raise KeyError(key)
 *         value, haskey = self.Get(key)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  PyObject *__pyx_v_value;
  PyObject *__pyx_v_haskey;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_SetupRefcountContext("__getitem__");
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_haskey = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":139
 * 
 *     def __getitem__(self, key):
 *         if not self: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         value, haskey = self.Get(key)
 *         if not haskey: raise KeyError(key)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __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 allocated */
    __pyx_t_4 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __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_t_3 released */
    __Pyx_Raise(__pyx_t_4, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":140
 *     def __getitem__(self, key):
 *         if not self: raise KeyError(key)
 *         value, haskey = self.Get(key)             # <<<<<<<<<<<<<<
 *         if not haskey: raise KeyError(key)
 *         return value
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __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 allocated */
  __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __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_t_4 released */
  /* __pyx_t_3 released */
  if (PyTuple_CheckExact(__pyx_t_5) && PyTuple_GET_SIZE(__pyx_t_5) == 2) {
    PyObject* tuple = __pyx_t_5;
    __pyx_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_2);
    __pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_2;
    __pyx_2 = 0;
    __Pyx_DECREF(__pyx_v_haskey);
    __pyx_v_haskey = __pyx_3;
    __pyx_3 = 0;
  } else {
    __pyx_1 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_2);
    __pyx_3 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_3);
    if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_2;
    __pyx_2 = 0;
    __Pyx_DECREF(__pyx_v_haskey);
    __pyx_v_haskey = __pyx_3;
    __pyx_3 = 0;
  }
  /* __pyx_t_5 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":141
 *         if not self: raise KeyError(key)
 *         value, haskey = self.Get(key)
 *         if not haskey: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         return value
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_haskey); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_t_2);
  /* __pyx_t_2 released */
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __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 allocated */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __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_t_5 released */
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":142
 *         value, haskey = self.Get(key)
 *         if not haskey: raise KeyError(key)
 *         return value             # <<<<<<<<<<<<<<
 * 
 *     def __setitem__(self, key, 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_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__getitem__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_DECREF(__pyx_v_haskey);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":144
 *         return value
 * 
 *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
 *         if not self: raise KeyError(key)
 *         self.Set(key, value)
 */

static int __pyx_pf_6mpi4py_3MPI_4Info___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Info___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_SetupRefcountContext("__setitem__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":145
 * 
 *     def __setitem__(self, key, value):
 *         if not self: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         self.Set(key, value)
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __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 allocated */
    __pyx_t_4 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __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_t_3 released */
    __Pyx_Raise(__pyx_t_4, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":146
 *     def __setitem__(self, key, value):
 *         if not self: raise KeyError(key)
 *         self.Set(key, value)             # <<<<<<<<<<<<<<
 * 
 *     def __delitem__(self, key):
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Set); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __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 allocated */
  __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __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_t_4 released */
  /* __pyx_t_3 released */
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  /* __pyx_t_5 released */

  __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_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":148
 *         self.Set(key, value)
 * 
 *     def __delitem__(self, key):             # <<<<<<<<<<<<<<
 *         if not self: raise KeyError(key)
 *         if key not in self: raise KeyError(key)
 */

static int __pyx_pf_6mpi4py_3MPI_4Info___delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Info___delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_SetupRefcountContext("__delitem__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":149
 * 
 *     def __delitem__(self, key):
 *         if not self: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         if key not in self: raise KeyError(key)
 *         self.Delete(key)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __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 allocated */
    __pyx_t_4 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __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_t_3 released */
    __Pyx_Raise(__pyx_t_4, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":150
 *     def __delitem__(self, key):
 *         if not self: raise KeyError(key)
 *         if key not in self: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         self.Delete(key)
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!PySequence_Contains(__pyx_v_self, __pyx_v_key)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __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 allocated */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_KeyError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __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_t_4 released */
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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, key, default=None):
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Delete); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __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 allocated */
  __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __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_t_3 released */
  /* __pyx_t_4 released */
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  /* __pyx_t_5 released */

  __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_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":153
 *         self.Delete(key)
 * 
 *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
 *         """info get"""
 *         if not self: return default
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_get[] = "Info.get(self, key, default=None)\ninfo get";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_v_value;
  PyObject *__pyx_v_haskey;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_key,&__pyx_kp_default,0};
  __Pyx_SetupRefcountContext("get");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_key);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_default);
        if (unlikely(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[7]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_key = values[0];
    __pyx_v_default = values[1];
  } else {
    __pyx_v_default = Py_None;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_default = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_key = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[7]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.get");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_haskey = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":155
 *     def get(self, key, default=None):
 *         """info get"""
 *         if not self: return default             # <<<<<<<<<<<<<<
 *         value, haskey = self.Get(key)
 *         if not haskey: return default
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_default);
    __pyx_r = __pyx_v_default;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":156
 *         """info get"""
 *         if not self: return default
 *         value, haskey = self.Get(key)             # <<<<<<<<<<<<<<
 *         if not haskey: return default
 *         return value
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __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 allocated */
  __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __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_t_3 released */
  /* __pyx_t_4 released */
  if (PyTuple_CheckExact(__pyx_t_5) && PyTuple_GET_SIZE(__pyx_t_5) == 2) {
    PyObject* tuple = __pyx_t_5;
    __pyx_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_2);
    __pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_2;
    __pyx_2 = 0;
    __Pyx_DECREF(__pyx_v_haskey);
    __pyx_v_haskey = __pyx_3;
    __pyx_3 = 0;
  } else {
    __pyx_1 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_2);
    __pyx_3 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_3);
    if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_2;
    __pyx_2 = 0;
    __Pyx_DECREF(__pyx_v_haskey);
    __pyx_v_haskey = __pyx_3;
    __pyx_3 = 0;
  }
  /* __pyx_t_5 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":157
 *         if not self: return default
 *         value, haskey = self.Get(key)
 *         if not haskey: return default             # <<<<<<<<<<<<<<
 *         return value
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_haskey); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_t_2);
  /* __pyx_t_2 released */
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_default);
    __pyx_r = __pyx_v_default;
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":158
 *         value, haskey = self.Get(key)
 *         if not haskey: 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_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Info.get");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_DECREF(__pyx_v_haskey);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":160
 *         return value
 * 
 *     def keys(self):             # <<<<<<<<<<<<<<
 *         """info keys"""
 *         if not self: return []
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_keys(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_keys[] = "Info.keys(self)\ninfo keys";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_keys(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_nkeys;
  PyObject *__pyx_v_keys = 0;
  PyObject *__pyx_v_k;
  PyObject *__pyx_v_key;
  PyObject *__pyx_r = NULL;
  long __pyx_1;
  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;
  __Pyx_SetupRefcountContext("keys");
  __pyx_v_k = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_key = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":162
 *     def keys(self):
 *         """info keys"""
 *         if not self: return []             # <<<<<<<<<<<<<<
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef list keys = []
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __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;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":163
 *         """info keys"""
 *         if not self: return []
 *         cdef int nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         cdef list keys = []
 *         for k from 0 <= k < nkeys:
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_nkeys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = __pyx_PyInt_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  __pyx_v_nkeys = __pyx_t_5;
  /* __pyx_t_5 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":164
 *         if not self: return []
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef list keys = []             # <<<<<<<<<<<<<<
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  __pyx_v_keys = __pyx_t_4;
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":165
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef list keys = []
 *         for k from 0 <= k < nkeys:             # <<<<<<<<<<<<<<
 *             key = self.Get_nthkey(k)
 *             keys.append(key)
 */
  for (__pyx_1 = 0; __pyx_1 < __pyx_v_nkeys; __pyx_1++) {
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyInt_FromLong(__pyx_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_v_k);
    __pyx_v_k = __pyx_t_4;
    __pyx_t_4 = 0;
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":166
 *         cdef list keys = []
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)             # <<<<<<<<<<<<<<
 *             keys.append(key)
 *         return keys
 */
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_nthkey); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(__pyx_v_k);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_k);
    __Pyx_GIVEREF(__pyx_v_k);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    /* __pyx_t_4 released */
    /* __pyx_t_3 released */
    __Pyx_DECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_6;
    __pyx_t_6 = 0;
    /* __pyx_t_6 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":167
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)
 *             keys.append(key)             # <<<<<<<<<<<<<<
 *         return keys
 * 
 */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_keys), __pyx_v_key); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_5 released */
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":168
 *             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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_keys);
  __Pyx_DECREF(__pyx_v_k);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":170
 *         return keys
 * 
 *     def values(self):             # <<<<<<<<<<<<<<
 *         """info values"""
 *         if not self: return []
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_values(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_values[] = "Info.values(self)\ninfo values";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_values(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_nkeys;
  PyObject *__pyx_v_values = 0;
  PyObject *__pyx_v_k;
  PyObject *__pyx_v_key;
  PyObject *__pyx_v_val;
  PyObject *__pyx_v__;
  PyObject *__pyx_r = NULL;
  long __pyx_1;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  PyObject *__pyx_4 = 0;
  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;
  __Pyx_SetupRefcountContext("values");
  __pyx_v_k = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_key = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_val = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v__ = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":172
 *     def values(self):
 *         """info values"""
 *         if not self: return []             # <<<<<<<<<<<<<<
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef list values = []
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_r = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":173
 *         """info values"""
 *         if not self: return []
 *         cdef int nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         cdef list values = []
 *         for k from 0 <= k < nkeys:
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_nkeys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = __pyx_PyInt_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  __pyx_v_nkeys = __pyx_t_5;
  /* __pyx_t_5 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":174
 *         if not self: return []
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef list values = []             # <<<<<<<<<<<<<<
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  __pyx_v_values = __pyx_t_4;
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":175
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef list values = []
 *         for k from 0 <= k < nkeys:             # <<<<<<<<<<<<<<
 *             key = self.Get_nthkey(k)
 *             val, _ = self.Get(key)
 */
  for (__pyx_1 = 0; __pyx_1 < __pyx_v_nkeys; __pyx_1++) {
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyInt_FromLong(__pyx_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_v_k);
    __pyx_v_k = __pyx_t_4;
    __pyx_t_4 = 0;
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":176
 *         cdef list values = []
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)             # <<<<<<<<<<<<<<
 *             val, _ = self.Get(key)
 *             values.append(val)
 */
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_nthkey); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(__pyx_v_k);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_k);
    __Pyx_GIVEREF(__pyx_v_k);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    /* __pyx_t_4 released */
    /* __pyx_t_3 released */
    __Pyx_DECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_6;
    __pyx_t_6 = 0;
    /* __pyx_t_6 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":177
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)
 *             val, _ = self.Get(key)             # <<<<<<<<<<<<<<
 *             values.append(val)
 *         return values
 */
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 177; __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 allocated */
    __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    /* __pyx_t_6 released */
    /* __pyx_t_3 released */
    if (PyTuple_CheckExact(__pyx_t_4) && PyTuple_GET_SIZE(__pyx_t_4) == 2) {
      PyObject* tuple = __pyx_t_4;
      __pyx_3 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_3);
      __pyx_4 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_val);
      __pyx_v_val = __pyx_3;
      __pyx_3 = 0;
      __Pyx_DECREF(__pyx_v__);
      __pyx_v__ = __pyx_4;
      __pyx_4 = 0;
    } else {
      __pyx_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_3 = __Pyx_UnpackItem(__pyx_2, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_3);
      __pyx_4 = __Pyx_UnpackItem(__pyx_2, 1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_4);
      if (__Pyx_EndUnpack(__pyx_2) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
      __Pyx_DECREF(__pyx_v_val);
      __pyx_v_val = __pyx_3;
      __pyx_3 = 0;
      __Pyx_DECREF(__pyx_v__);
      __pyx_v__ = __pyx_4;
      __pyx_4 = 0;
    }
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":178
 *             key = self.Get_nthkey(k)
 *             val, _ = self.Get(key)
 *             values.append(val)             # <<<<<<<<<<<<<<
 *         return values
 * 
 */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_values), __pyx_v_val); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_5 released */
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":179
 *             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_2);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_4);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Info.values");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_DECREF(__pyx_v_k);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_DECREF(__pyx_v_val);
  __Pyx_DECREF(__pyx_v__);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":181
 *         return values
 * 
 *     def items(self):             # <<<<<<<<<<<<<<
 *         """info items"""
 *         if not self: return []
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_items(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_items[] = "Info.items(self)\ninfo items";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_items(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_nkeys;
  PyObject *__pyx_v_items = 0;
  PyObject *__pyx_v_k;
  PyObject *__pyx_v_key;
  PyObject *__pyx_v_val;
  PyObject *__pyx_v__;
  PyObject *__pyx_r = NULL;
  long __pyx_1;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  PyObject *__pyx_4 = 0;
  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;
  __Pyx_SetupRefcountContext("items");
  __pyx_v_k = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_key = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_val = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v__ = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":183
 *     def items(self):
 *         """info items"""
 *         if not self: return []             # <<<<<<<<<<<<<<
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef list items = []
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_r = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":184
 *         """info items"""
 *         if not self: return []
 *         cdef int nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         cdef list items = []
 *         for k from 0 <= k < nkeys:
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_nkeys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = __pyx_PyInt_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  __pyx_v_nkeys = __pyx_t_5;
  /* __pyx_t_5 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":185
 *         if not self: return []
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef list items = []             # <<<<<<<<<<<<<<
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  __pyx_v_items = __pyx_t_4;
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":186
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef list items = []
 *         for k from 0 <= k < nkeys:             # <<<<<<<<<<<<<<
 *             key = self.Get_nthkey(k)
 *             val, _ = self.Get(key)
 */
  for (__pyx_1 = 0; __pyx_1 < __pyx_v_nkeys; __pyx_1++) {
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyInt_FromLong(__pyx_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_v_k);
    __pyx_v_k = __pyx_t_4;
    __pyx_t_4 = 0;
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":187
 *         cdef list items = []
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)             # <<<<<<<<<<<<<<
 *             val, _ = self.Get(key)
 *             items.append((key, val))
 */
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_nthkey); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(__pyx_v_k);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_k);
    __Pyx_GIVEREF(__pyx_v_k);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    /* __pyx_t_4 released */
    /* __pyx_t_3 released */
    __Pyx_DECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_6;
    __pyx_t_6 = 0;
    /* __pyx_t_6 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":188
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(k)
 *             val, _ = self.Get(key)             # <<<<<<<<<<<<<<
 *             items.append((key, val))
 *         return items
 */
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 188; __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 allocated */
    __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    /* __pyx_t_6 released */
    /* __pyx_t_3 released */
    if (PyTuple_CheckExact(__pyx_t_4) && PyTuple_GET_SIZE(__pyx_t_4) == 2) {
      PyObject* tuple = __pyx_t_4;
      __pyx_3 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_3);
      __pyx_4 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_val);
      __pyx_v_val = __pyx_3;
      __pyx_3 = 0;
      __Pyx_DECREF(__pyx_v__);
      __pyx_v__ = __pyx_4;
      __pyx_4 = 0;
    } else {
      __pyx_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_3 = __Pyx_UnpackItem(__pyx_2, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_3);
      __pyx_4 = __Pyx_UnpackItem(__pyx_2, 1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_4);
      if (__Pyx_EndUnpack(__pyx_2) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
      __Pyx_DECREF(__pyx_v_val);
      __pyx_v_val = __pyx_3;
      __pyx_3 = 0;
      __Pyx_DECREF(__pyx_v__);
      __pyx_v__ = __pyx_4;
      __pyx_4 = 0;
    }
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":189
 *             key = self.Get_nthkey(k)
 *             val, _ = self.Get(key)
 *             items.append((key, val))             # <<<<<<<<<<<<<<
 *         return items
 * 
 */
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 189; __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_val);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_val);
    __Pyx_GIVEREF(__pyx_v_val);
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_items), ((PyObject *)__pyx_t_4)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    /* __pyx_t_5 released */
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":190
 *             val, _ = self.Get(key)
 *             items.append((key, val))
 *         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_2);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_4);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Info.items");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_DECREF(__pyx_v_k);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_DECREF(__pyx_v_val);
  __Pyx_DECREF(__pyx_v__);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":192
 *         return items
 * 
 *     def update(self, other=(), **kwds):             # <<<<<<<<<<<<<<
 *         """info update"""
 *         if not self: raise KeyError
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_update(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_update[] = "Info.update(self, other=<\077\077?>, **kwds)\ninfo update";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_update(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_other = 0;
  PyObject *__pyx_v_kwds = 0;
  PyObject *__pyx_v_key;
  PyObject *__pyx_v_value;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  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;
  PyObject *__pyx_t_7 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_other,0};
  __Pyx_SetupRefcountContext("update");
  __pyx_v_kwds = PyDict_New(); if (unlikely(!__pyx_v_kwds)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwds);
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)__pyx_empty_tuple);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_other);
        if (unlikely(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[7]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_other = values[0];
  } else {
    __pyx_v_other = ((PyObject *)__pyx_empty_tuple);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_other = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[7]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_kwds);
  __Pyx_AddTraceback("mpi4py.MPI.Info.update");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_key = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":194
 *     def update(self, other=(), **kwds):
 *         """info update"""
 *         if not self: raise KeyError             # <<<<<<<<<<<<<<
 *         if hasattr(other, "keys"):
 *             for key in other.keys():
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_Raise(__pyx_builtin_KeyError, 0, 0);
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":195
 *         """info update"""
 *         if not self: raise KeyError
 *         if hasattr(other, "keys"):             # <<<<<<<<<<<<<<
 *             for key in other.keys():
 *                 self.Set(key, other[key])
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_HasAttr(__pyx_v_other, __pyx_kp_137); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":196
 *         if not self: raise KeyError
 *         if hasattr(other, "keys"):
 *             for key in other.keys():             # <<<<<<<<<<<<<<
 *                 self.Set(key, other[key])
 *         else:
 */
    /* __pyx_t_3 allocated */
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_other, __pyx_kp_keys); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    /* __pyx_t_4 allocated */
    if (PyList_CheckExact(__pyx_t_5) || PyTuple_CheckExact(__pyx_t_5)) {
      __pyx_t_3 = 0; __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4);
    } else {
      __pyx_t_3 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    /* __pyx_t_5 released */
    for (;;) {
      /* __pyx_t_5 allocated */
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++;
      } else {
        __pyx_t_5 = PyIter_Next(__pyx_t_4);
        if (!__pyx_t_5) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_DECREF(__pyx_v_key);
      __pyx_v_key = __pyx_t_5;
      __pyx_t_5 = 0;
      /* __pyx_t_5 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":197
 *         if hasattr(other, "keys"):
 *             for key in other.keys():
 *                 self.Set(key, other[key])             # <<<<<<<<<<<<<<
 *         else:
 *             for key, value in other:
 */
      /* __pyx_t_5 allocated */
      __pyx_t_5 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Set); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_1 = PyObject_GetItem(__pyx_v_other, __pyx_v_key); if (!__pyx_1) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_1);
      /* __pyx_t_6 allocated */
      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 197; __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);
      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_1);
      __Pyx_GIVEREF(__pyx_1);
      __pyx_1 = 0;
      /* __pyx_t_7 allocated */
      __pyx_t_7 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      /* __pyx_t_5 released */
      /* __pyx_t_6 released */
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      /* __pyx_t_7 released */
    }
    /* __pyx_t_3 released */
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":199
 *                 self.Set(key, other[key])
 *         else:
 *             for key, value in other:             # <<<<<<<<<<<<<<
 *                 self.Set(key, value)
 *         for key, value in kwds.items():
 */
    /* __pyx_t_3 allocated */
    /* __pyx_t_4 allocated */
    if (PyList_CheckExact(__pyx_v_other) || PyTuple_CheckExact(__pyx_v_other)) {
      __pyx_t_3 = 0; __pyx_t_4 = __pyx_v_other; __Pyx_INCREF(__pyx_t_4);
    } else {
      __pyx_t_3 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_other); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
    }
    for (;;) {
      /* __pyx_t_7 allocated */
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_t_7); __pyx_t_3++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_t_7); __pyx_t_3++;
      } else {
        __pyx_t_7 = PyIter_Next(__pyx_t_4);
        if (!__pyx_t_7) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_7);
      }
      if (PyTuple_CheckExact(__pyx_t_7) && PyTuple_GET_SIZE(__pyx_t_7) == 2) {
        PyObject* tuple = __pyx_t_7;
        __pyx_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_2);
        __pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_v_key);
        __pyx_v_key = __pyx_2;
        __pyx_2 = 0;
        __Pyx_DECREF(__pyx_v_value);
        __pyx_v_value = __pyx_3;
        __pyx_3 = 0;
      } else {
        __pyx_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_2);
        __pyx_3 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_3);
        if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
        __Pyx_DECREF(__pyx_v_key);
        __pyx_v_key = __pyx_2;
        __pyx_2 = 0;
        __Pyx_DECREF(__pyx_v_value);
        __pyx_v_value = __pyx_3;
        __pyx_3 = 0;
      }
      /* __pyx_t_7 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":200
 *         else:
 *             for key, value in other:
 *                 self.Set(key, value)             # <<<<<<<<<<<<<<
 *         for key, value in kwds.items():
 *             self.Set(key, value)
 */
      /* __pyx_t_7 allocated */
      __pyx_t_7 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Set); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      /* __pyx_t_6 allocated */
      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 200; __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_INCREF(__pyx_v_value);
      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_value);
      __Pyx_GIVEREF(__pyx_v_value);
      /* __pyx_t_5 allocated */
      __pyx_t_5 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      /* __pyx_t_7 released */
      /* __pyx_t_6 released */
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      /* __pyx_t_5 released */
    }
    /* __pyx_t_3 released */
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":201
 *             for key, value in other:
 *                 self.Set(key, value)
 *         for key, value in kwds.items():             # <<<<<<<<<<<<<<
 *             self.Set(key, value)
 * 
 */
  /* __pyx_t_3 allocated */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_GetAttr(__pyx_v_kwds, __pyx_kp_items); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  /* __pyx_t_5 allocated */
  __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  /* __pyx_t_4 allocated */
  if (PyList_CheckExact(__pyx_t_5) || PyTuple_CheckExact(__pyx_t_5)) {
    __pyx_t_3 = 0; __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4);
  } else {
    __pyx_t_3 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  /* __pyx_t_5 released */
  for (;;) {
    /* __pyx_t_5 allocated */
    if (likely(PyList_CheckExact(__pyx_t_4))) {
      if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_4)) break;
      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
      if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++;
    } else {
      __pyx_t_5 = PyIter_Next(__pyx_t_4);
      if (!__pyx_t_5) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    if (PyTuple_CheckExact(__pyx_t_5) && PyTuple_GET_SIZE(__pyx_t_5) == 2) {
      PyObject* tuple = __pyx_t_5;
      __pyx_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_2);
      __pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_key);
      __pyx_v_key = __pyx_2;
      __pyx_2 = 0;
      __Pyx_DECREF(__pyx_v_value);
      __pyx_v_value = __pyx_3;
      __pyx_3 = 0;
    } else {
      __pyx_1 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_2 = __Pyx_UnpackItem(__pyx_1, 0); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_2);
      __pyx_3 = __Pyx_UnpackItem(__pyx_1, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_3);
      if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_v_key);
      __pyx_v_key = __pyx_2;
      __pyx_2 = 0;
      __Pyx_DECREF(__pyx_v_value);
      __pyx_v_value = __pyx_3;
      __pyx_3 = 0;
    }
    /* __pyx_t_5 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":202
 *                 self.Set(key, value)
 *         for key, value in kwds.items():
 *             self.Set(key, value)             # <<<<<<<<<<<<<<
 * 
 *     def clear(self):
 */
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Set); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 202; __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_INCREF(__pyx_v_value);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_value);
    __Pyx_GIVEREF(__pyx_v_value);
    /* __pyx_t_7 allocated */
    __pyx_t_7 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    /* __pyx_t_5 released */
    /* __pyx_t_6 released */
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    /* __pyx_t_7 released */
  }
  /* __pyx_t_3 released */
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  /* __pyx_t_4 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.Info.update");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_kwds);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":204
 *             self.Set(key, value)
 * 
 *     def clear(self):             # <<<<<<<<<<<<<<
 *         """info clear"""
 *         if not self: return None
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_clear(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Info_clear[] = "Info.clear(self)\ninfo clear";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_clear(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_k;
  int __pyx_v_nkeys;
  PyObject *__pyx_v_key;
  PyObject *__pyx_r = NULL;
  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;
  __Pyx_SetupRefcountContext("clear");
  __pyx_v_key = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":206
 *     def clear(self):
 *         """info clear"""
 *         if not self: return None             # <<<<<<<<<<<<<<
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         for k from 0 <= k < nkeys:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":207
 *         """info clear"""
 *         if not self: return None
 *         cdef int k = 0, nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(0)
 */
  __pyx_v_k = 0;
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_nkeys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = __pyx_PyInt_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  __pyx_v_nkeys = __pyx_t_5;
  /* __pyx_t_5 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":208
 *         if not self: return None
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         for k from 0 <= k < nkeys:             # <<<<<<<<<<<<<<
 *             key = self.Get_nthkey(0)
 *             self.Delete(key)
 */
  for (__pyx_v_k = 0; __pyx_v_k < __pyx_v_nkeys; __pyx_v_k++) {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":209
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(0)             # <<<<<<<<<<<<<<
 *             self.Delete(key)
 * 
 */
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_nthkey); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __Pyx_INCREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    /* __pyx_t_4 released */
    /* __pyx_t_3 released */
    __Pyx_DECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_6;
    __pyx_t_6 = 0;
    /* __pyx_t_6 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":210
 *         for k from 0 <= k < nkeys:
 *             key = self.Get_nthkey(0)
 *             self.Delete(key)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    /* __pyx_t_6 allocated */
    __pyx_t_6 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Delete); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 210; __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 allocated */
    __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    /* __pyx_t_6 released */
    /* __pyx_t_3 released */
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
  }

  __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_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":8
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_OP_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((PyMPIOpObject *)__pyx_v_self)->ob_mpi = MPI_OP_NULL;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_2Op___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("__dealloc__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":11
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( _del_Op(&self.ob_mpi) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!(((PyMPIOpObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":12
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( _del_Op(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI__del_Op((&((PyMPIOpObject *)__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;}
  /* __pyx_t_2 released */

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Op.__dealloc__");
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":14
 *         CHKERR( _del_Op(&self.ob_mpi) )
 * 
 *     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___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyMPIOpObject *__pyx_v_s = 0;
  PyMPIOpObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("__richcmp__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":15
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Op): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Op): return NotImplemented
 *         cdef Op s = self, o = other
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_self, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Op))); 
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_TypeCheck(__pyx_v_other, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Op))); 
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_t_2);
  /* __pyx_t_2 released */
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":17
 *         if not isinstance(self,  Op): return NotImplemented
 *         if not isinstance(other, Op): return NotImplemented
 *         cdef Op s = self, o = other             # <<<<<<<<<<<<<<
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 */
  if (!(__Pyx_TypeTest(__pyx_v_self, __pyx_ptype_6mpi4py_3MPI_Op))) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_self);
  __pyx_v_s = ((PyMPIOpObject *)__pyx_v_self);
  if (!(__Pyx_TypeTest(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Op))) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_other);
  __pyx_v_o = ((PyMPIOpObject *)__pyx_v_other);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":18
 *         if not isinstance(other, Op): return NotImplemented
 *         cdef Op s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 */
  switch (__pyx_v_op) {
    case 2:
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    case 3:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":19
 *         cdef Op s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    default:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":20
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_138); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    {__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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Op.__richcmp__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":22
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_OP_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_2Op___nonzero__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_2Op___nonzero__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__nonzero__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":23
 * 
 *     def __nonzero__(self):
 *         return self.ob_mpi != MPI_OP_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __call__(self, x, y):
 */
  __pyx_r = (((PyMPIOpObject *)__pyx_v_self)->ob_mpi != MPI_OP_NULL);
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":25
 *         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___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op___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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_x,&__pyx_kp_y,0};
  __Pyx_SetupRefcountContext("__call__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_x);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_y);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__call__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[22]; __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), "__call__") < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_x = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_y = PyTuple_GET_ITEM(__pyx_args, 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[22]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Op.__call__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":26
 * 
 *     def __call__(self, x, y):
 *         if self.ob_func != NULL:             # <<<<<<<<<<<<<<
 *             return self.ob_func(x, y)
 *         else:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (((PyMPIOpObject *)__pyx_v_self)->ob_func != NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":27
 *     def __call__(self, x, y):
 *         if self.ob_func != NULL:
 *             return self.ob_func(x, y)             # <<<<<<<<<<<<<<
 *         else:
 *             return self.ob_callable(x, y)
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_2 allocated */
    __pyx_t_2 = ((PyMPIOpObject *)__pyx_v_self)->ob_func(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    goto __pyx_L0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":29
 *             return self.ob_func(x, y)
 *         else:
 *             return self.ob_callable(x, y)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 29; __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_t_3 allocated */
    __pyx_t_3 = PyObject_Call(((PyMPIOpObject *)__pyx_v_self)->ob_callable, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 29; __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 released */
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":32
 * 
 *     @classmethod
 *     def Create(cls, function, bint commute=False):             # <<<<<<<<<<<<<<
 *         """
 *         Create a user-defined operation
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_Create(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_2Op_Create[] = "Op.Create(cls, function, int commute=False)\n\n        Create a user-defined operation\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_Create(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_function = 0;
  int __pyx_v_commute;
  PyMPIOpObject *__pyx_v_op = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_function,&__pyx_kp_commute,0};
  __Pyx_SetupRefcountContext("Create");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_function);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_commute);
        if (unlikely(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[22]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_function = values[0];
    if (values[1]) {
      __pyx_v_commute = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_commute == (int)-1))) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_commute = 0;
    }
  } else {
    __pyx_v_commute = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_commute = __Pyx_PyObject_IsTrue(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_commute == (int)-1))) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_function = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[22]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Op.Create");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":36
 *         Create a user-defined operation
 *         """
 *         cdef Op op = cls()             # <<<<<<<<<<<<<<
 *         op.ob_mpi = MPI_OP_NULL
 *         op.ob_callable = function
 */
  /* __pyx_t_1 allocated */
  __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 = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Op))) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_op = ((PyMPIOpObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":37
 *         """
 *         cdef Op op = cls()
 *         op.ob_mpi = MPI_OP_NULL             # <<<<<<<<<<<<<<
 *         op.ob_callable = function
 *         op.ob_commute  = commute
 */
  __pyx_v_op->ob_mpi = MPI_OP_NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":38
 *         cdef Op op = cls()
 *         op.ob_mpi = MPI_OP_NULL
 *         op.ob_callable = function             # <<<<<<<<<<<<<<
 *         op.ob_commute  = commute
 * 
 */
  __Pyx_INCREF(__pyx_v_function);
  __Pyx_GIVEREF(__pyx_v_function);
  __Pyx_GOTREF(__pyx_v_op->ob_callable);
  __Pyx_DECREF(__pyx_v_op->ob_callable);
  __pyx_v_op->ob_callable = __pyx_v_function;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":39
 *         op.ob_mpi = MPI_OP_NULL
 *         op.ob_callable = function
 *         op.ob_commute  = commute             # <<<<<<<<<<<<<<
 * 
 *     def Free(self):
 */
  __pyx_v_op->ob_commute = __pyx_v_commute;

  __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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_op);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":41
 *         op.ob_commute  = commute
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free the operation
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_Free(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_2Op_Free[] = "Op.Free(self)\n\n        Free the operation\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_Free(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Free");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":45
 *         Free the operation
 *         """
 *         CHKERR( MPI_Op_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         self.ob_callable = None
 *         self.ob_commute  = False
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Op_free((&((PyMPIOpObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":46
 *         """
 *         CHKERR( MPI_Op_free(&self.ob_mpi) )
 *         self.ob_callable = None             # <<<<<<<<<<<<<<
 *         self.ob_commute  = False
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(((PyMPIOpObject *)__pyx_v_self)->ob_callable);
  __Pyx_DECREF(((PyMPIOpObject *)__pyx_v_self)->ob_callable);
  ((PyMPIOpObject *)__pyx_v_self)->ob_callable = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":47
 *         CHKERR( MPI_Op_free(&self.ob_mpi) )
 *         self.ob_callable = None
 *         self.ob_commute  = False             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  ((PyMPIOpObject *)__pyx_v_self)->ob_commute = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Op.Free");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":52
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_py2f(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_2Op_py2f[] = "Op.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_py2f(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("py2f");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":55
 *         """
 *         """
 *         return MPI_Op_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(MPI_Op_c2f(((PyMPIOpObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":58
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_2Op_f2py[] = "Op.f2py(cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyMPIOpObject *__pyx_v_op = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  __Pyx_SetupRefcountContext("f2py");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":61
 *         """
 *         """
 *         cdef Op op = cls()             # <<<<<<<<<<<<<<
 *         op.ob_mpi = MPI_Op_f2c(arg)
 *         return op
 */
  /* __pyx_t_1 allocated */
  __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 = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Op))) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_op = ((PyMPIOpObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":62
 *         """
 *         cdef Op op = cls()
 *         op.ob_mpi = MPI_Op_f2c(arg)             # <<<<<<<<<<<<<<
 *         return op
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_long(__pyx_v_arg); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_op->ob_mpi = MPI_Op_f2c(__pyx_t_2);
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":63
 *         cdef 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_op);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":8
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((PyMPIGroupObject *)__pyx_v_self)->ob_mpi = MPI_GROUP_NULL;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_5Group___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("__dealloc__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":11
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( _del_Group(&self.ob_mpi) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!(((PyMPIGroupObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI__del_Group((&((PyMPIGroupObject *)__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;}
  /* __pyx_t_2 released */

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.__dealloc__");
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
}

/* "/u/dalcinl/Devel/mpi4py-dev/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___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyMPIGroupObject *__pyx_v_s = 0;
  PyMPIGroupObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("__richcmp__");

  /* "/u/dalcinl/Devel/mpi4py-dev/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 = self, o = other
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_self, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Group))); 
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_TypeCheck(__pyx_v_other, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Group))); 
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_t_2);
  /* __pyx_t_2 released */
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":17
 *         if not isinstance(self,  Group): return NotImplemented
 *         if not isinstance(other, Group): return NotImplemented
 *         cdef Group s = self, o = other             # <<<<<<<<<<<<<<
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 */
  if (!(__Pyx_TypeTest(__pyx_v_self, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_self);
  __pyx_v_s = ((PyMPIGroupObject *)__pyx_v_self);
  if (!(__Pyx_TypeTest(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_other);
  __pyx_v_o = ((PyMPIGroupObject *)__pyx_v_other);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":18
 *         if not isinstance(other, Group): return NotImplemented
 *         cdef Group s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 */
  switch (__pyx_v_op) {
    case 2:
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    case 3:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":19
 *         cdef Group s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    default:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":20
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_139); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    {__pyx_filename = __pyx_f[23]; __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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Group.__richcmp__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":22
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_GROUP_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_5Group___nonzero__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_5Group___nonzero__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__nonzero__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":23
 * 
 *     def __nonzero__(self):
 *         return self.ob_mpi != MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 * 
 *     # Group Accessors
 */
  __pyx_r = (((PyMPIGroupObject *)__pyx_v_self)->ob_mpi != MPI_GROUP_NULL);
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":28
 *     # ---------------
 * 
 *     def Get_size(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the size of a group
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Get_size(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_Get_size[] = "Group.Get_size(self)\n\n        Return the size of a group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Get_size(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_size");

  /* "/u/dalcinl/Devel/mpi4py-dev/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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":33
 *         """
 *         cdef int size = -1
 *         CHKERR( MPI_Group_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_size(((PyMPIGroupObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":38
 *     property size:
 *         """number of processes in group"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return Group.Get_size(self)
 * 
 */

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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":39
 *         """number of processes in group"""
 *         def __get__(self):
 *             return Group.Get_size(self)             # <<<<<<<<<<<<<<
 * 
 *     def Get_rank(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Group)), __pyx_kp_Get_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __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_t_1 released */
  /* __pyx_t_2 released */
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  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.Group.size.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":41
 *             return Group.Get_size(self)
 * 
 *     def Get_rank(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the rank of this process in a group
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Get_rank(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_Get_rank[] = "Group.Get_rank(self)\n\n        Return the rank of this process in a group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Get_rank(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_rank");

  /* "/u/dalcinl/Devel/mpi4py-dev/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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":46
 *         """
 *         cdef int rank = -1
 *         CHKERR( MPI_Group_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_rank(((PyMPIGroupObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":51
 *     property rank:
 *         """rank of this process in group"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return Group.Get_rank(self)
 * 
 */

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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":52
 *         """rank of this process in group"""
 *         def __get__(self):
 *             return Group.Get_rank(self)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Group)), __pyx_kp_Get_rank); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 52; __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_t_1 released */
  /* __pyx_t_2 released */
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  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.Group.rank.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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_Translate_ranks(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_Translate_ranks[] = "Group.Translate_ranks(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_Translate_ranks(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIGroupObject *__pyx_v_group1 = 0;
  PyObject *__pyx_v_ranks1 = 0;
  PyMPIGroupObject *__pyx_v_group2 = 0;
  MPI_Group __pyx_v_grp1;
  MPI_Group __pyx_v_grp2;
  int __pyx_v_i;
  int __pyx_v_n;
  int *__pyx_v_iranks1;
  int *__pyx_v_iranks2;
  PyObject *__pyx_v_tmp1 = 0;
  PyObject *__pyx_v_tmp2 = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_48,&__pyx_kp_49,&__pyx_kp_50,0};
  __Pyx_SetupRefcountContext("Translate_ranks");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject*)((PyMPIGroupObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_48);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_49);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Translate_ranks", 0, 2, 3, 1); {__pyx_filename = __pyx_f[23]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_50);
        if (unlikely(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[23]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_group1 = ((PyMPIGroupObject *)values[0]);
    __pyx_v_ranks1 = values[1];
    __pyx_v_group2 = ((PyMPIGroupObject *)values[2]);
  } else {
    __pyx_v_group2 = ((PyMPIGroupObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_group2 = ((PyMPIGroupObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2:
      __pyx_v_ranks1 = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_group1 = ((PyMPIGroupObject *)PyTuple_GET_ITEM(__pyx_args, 0));
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[23]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Translate_ranks");
  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[23]; __pyx_lineno = 55; __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[23]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":61
 *         one group to those in another group
 *         """
 *         cdef MPI_Group grp1 = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Group grp2 = MPI_GROUP_NULL
 *         cdef int i = 0, n = len(ranks1)
 */
  __pyx_v_grp1 = MPI_GROUP_NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":62
 *         """
 *         cdef MPI_Group grp1 = MPI_GROUP_NULL
 *         cdef MPI_Group grp2 = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 *         cdef int i = 0, n = len(ranks1)
 *         cdef int *iranks1 = NULL, *iranks2 = NULL
 */
  __pyx_v_grp2 = MPI_GROUP_NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":63
 *         cdef MPI_Group grp1 = MPI_GROUP_NULL
 *         cdef MPI_Group grp2 = MPI_GROUP_NULL
 *         cdef int i = 0, n = len(ranks1)             # <<<<<<<<<<<<<<
 *         cdef int *iranks1 = NULL, *iranks2 = NULL
 *         cdef object tmp1 = newarray_int(n, &iranks1)
 */
  __pyx_v_i = 0;
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_ranks1); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":64
 *         cdef MPI_Group grp2 = MPI_GROUP_NULL
 *         cdef int i = 0, n = len(ranks1)
 *         cdef int *iranks1 = NULL, *iranks2 = NULL             # <<<<<<<<<<<<<<
 *         cdef object tmp1 = newarray_int(n, &iranks1)
 *         cdef object tmp2 = newarray_int(n, &iranks2)
 */
  __pyx_v_iranks1 = NULL;
  __pyx_v_iranks2 = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":65
 *         cdef int i = 0, n = len(ranks1)
 *         cdef int *iranks1 = NULL, *iranks2 = NULL
 *         cdef object tmp1 = newarray_int(n, &iranks1)             # <<<<<<<<<<<<<<
 *         cdef object tmp2 = newarray_int(n, &iranks2)
 *         for i from 0 <= i < n: iranks1[i] = ranks1[i]
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_n, (&__pyx_v_iranks1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":66
 *         cdef int *iranks1 = NULL, *iranks2 = NULL
 *         cdef object tmp1 = newarray_int(n, &iranks1)
 *         cdef object tmp2 = newarray_int(n, &iranks2)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < n: iranks1[i] = ranks1[i]
 *         #
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_n, (&__pyx_v_iranks2)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":67
 *         cdef object tmp1 = newarray_int(n, &iranks1)
 *         cdef object tmp2 = newarray_int(n, &iranks2)
 *         for i from 0 <= i < n: iranks1[i] = ranks1[i]             # <<<<<<<<<<<<<<
 *         #
 *         grp1 = group1.ob_mpi
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_ranks1, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_PyInt_int(__pyx_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    (__pyx_v_iranks1[__pyx_v_i]) = __pyx_t_3;
    /* __pyx_t_3 released */
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":69
 *         for i from 0 <= i < n: iranks1[i] = ranks1[i]
 *         #
 *         grp1 = group1.ob_mpi             # <<<<<<<<<<<<<<
 *         if group2 is not None:
 *             grp2 = group2.ob_mpi
 */
  __pyx_v_grp1 = __pyx_v_group1->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":70
 *         #
 *         grp1 = group1.ob_mpi
 *         if group2 is not None:             # <<<<<<<<<<<<<<
 *             grp2 = group2.ob_mpi
 *         else:
 */
  /* __pyx_t_4 allocated */
  __pyx_t_4 = (((PyObject *)__pyx_v_group2) != Py_None);
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":71
 *         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_L8;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":73
 *             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 allocated */
    __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[23]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_3 released */
  }
  __pyx_L8:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":74
 *         else:
 *             CHKERR( MPI_Comm_group(MPI_COMM_WORLD, &grp2) )
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Group_translate_ranks(grp1, n, iranks1,
 *                                               grp2, iranks2) )
 */
  /*try:*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":76
 *         try:
 *             CHKERR( MPI_Group_translate_ranks(grp1, n, iranks1,
 *                                               grp2, iranks2) )             # <<<<<<<<<<<<<<
 *         finally:
 *             if group2 is None:
 */
    /* __pyx_t_3 allocated */
    __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[23]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L10;}
    /* __pyx_t_3 released */
  }
  /*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_L11;
    __pyx_L10: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_1); __pyx_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_L11;
    }
    __pyx_L11:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":78
 *                                               grp2, iranks2) )
 *         finally:
 *             if group2 is None:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Group_free(&grp2) )
 *         #
 */
    /* __pyx_t_4 allocated */
    __pyx_t_4 = (((PyObject *)__pyx_v_group2) == Py_None);
    if (__pyx_t_4) {
      /* __pyx_t_4 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":79
 *         finally:
 *             if group2 is None:
 *                 CHKERR( MPI_Group_free(&grp2) )             # <<<<<<<<<<<<<<
 *         #
 *         return [iranks2[i] for i from 0 <= i < n]
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_grp2))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
      /* __pyx_t_3 released */
      goto __pyx_L13;
    }
    __pyx_L13:;
    goto __pyx_L14;
    __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_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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":81
 *                 CHKERR( MPI_Group_free(&grp2) )
 *         #
 *         return [iranks2[i] for i from 0 <= i < n]             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyInt_FromLong((__pyx_v_iranks2[__pyx_v_i])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_5); if (unlikely(__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    /* __pyx_t_5 released */
    /* __pyx_t_3 released */
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __pyx_r = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Translate_ranks");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":84
 * 
 *     @classmethod
 *     def Compare(cls,             # <<<<<<<<<<<<<<
 *                 Group group1 not None,
 *                 Group group2 not None):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Compare(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_Compare[] = "Group.Compare(cls, Group group1, Group group2)\n\n        Compare two groups\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Compare(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIGroupObject *__pyx_v_group1 = 0;
  PyMPIGroupObject *__pyx_v_group2 = 0;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_48,&__pyx_kp_50,0};
  __Pyx_SetupRefcountContext("Compare");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_48);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_50);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Compare", 1, 2, 2, 1); {__pyx_filename = __pyx_f[23]; __pyx_lineno = 84; __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[23]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_group1 = ((PyMPIGroupObject *)values[0]);
    __pyx_v_group2 = ((PyMPIGroupObject *)values[1]);
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_group1 = ((PyMPIGroupObject *)PyTuple_GET_ITEM(__pyx_args, 0));
    __pyx_v_group2 = ((PyMPIGroupObject *)PyTuple_GET_ITEM(__pyx_args, 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[23]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Compare");
  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[23]; __pyx_lineno = 85; __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[23]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":90
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":91
 *         """
 *         cdef int flag = MPI_UNEQUAL
 *         CHKERR( MPI_Group_compare(group1.ob_mpi, group2.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
  /* __pyx_t_1 allocated */
  __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[23]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":92
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":97
 *     # ------------------
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a group
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Dup(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_Dup[] = "Group.Dup(self)\n\n        Duplicate a group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Dup(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Dup");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":101
 *         Duplicate a group
 *         """
 *         cdef Group group = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_union(self.ob_mpi, MPI_GROUP_EMPTY, &group.ob_mpi) )
 *         return group
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 101; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":102
 *         """
 *         cdef Group group = type(self)()
 *         CHKERR( MPI_Group_union(self.ob_mpi, MPI_GROUP_EMPTY, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_union(((PyMPIGroupObject *)__pyx_v_self)->ob_mpi, MPI_GROUP_EMPTY, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":103
 *         cdef 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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Dup");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":106
 * 
 *     @classmethod
 *     def Union(cls,             # <<<<<<<<<<<<<<
 *               Group group1 not None,
 *               Group group2 not None):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Union(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_Union[] = "Group.Union(cls, Group group1, Group group2)\n\n        Produce a group by combining\n        two existing groups\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Union(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIGroupObject *__pyx_v_group1 = 0;
  PyMPIGroupObject *__pyx_v_group2 = 0;
  PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_48,&__pyx_kp_50,0};
  __Pyx_SetupRefcountContext("Union");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_48);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_50);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Union", 1, 2, 2, 1); {__pyx_filename = __pyx_f[23]; __pyx_lineno = 106; __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[23]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_group1 = ((PyMPIGroupObject *)values[0]);
    __pyx_v_group2 = ((PyMPIGroupObject *)values[1]);
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_group1 = ((PyMPIGroupObject *)PyTuple_GET_ITEM(__pyx_args, 0));
    __pyx_v_group2 = ((PyMPIGroupObject *)PyTuple_GET_ITEM(__pyx_args, 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[23]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Union");
  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[23]; __pyx_lineno = 107; __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[23]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":113
 *         two existing groups
 *         """
 *         cdef Group group = cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_union(group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  /* __pyx_t_1 allocated */
  __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 = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":114
 *         """
 *         cdef Group group = cls()
 *         CHKERR( MPI_Group_union(group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  /* __pyx_t_2 allocated */
  __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[23]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":115
 *         cdef Group group = cls()
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":118
 * 
 *     @classmethod
 *     def Intersect(cls,             # <<<<<<<<<<<<<<
 *                   Group group1 not None,
 *                   Group group2 not None):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Intersect(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_Intersect[] = "Group.Intersect(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_Intersect(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIGroupObject *__pyx_v_group1 = 0;
  PyMPIGroupObject *__pyx_v_group2 = 0;
  PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_48,&__pyx_kp_50,0};
  __Pyx_SetupRefcountContext("Intersect");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_48);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_50);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Intersect", 1, 2, 2, 1); {__pyx_filename = __pyx_f[23]; __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[23]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_group1 = ((PyMPIGroupObject *)values[0]);
    __pyx_v_group2 = ((PyMPIGroupObject *)values[1]);
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_group1 = ((PyMPIGroupObject *)PyTuple_GET_ITEM(__pyx_args, 0));
    __pyx_v_group2 = ((PyMPIGroupObject *)PyTuple_GET_ITEM(__pyx_args, 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[23]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Intersect");
  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[23]; __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[23]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":125
 *         of two existing groups
 *         """
 *         cdef Group group = cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_intersection(group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  /* __pyx_t_1 allocated */
  __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 = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":126
 *         """
 *         cdef Group group = cls()
 *         CHKERR( MPI_Group_intersection(group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  /* __pyx_t_2 allocated */
  __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[23]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":127
 *         cdef Group group = cls()
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":130
 * 
 *     @classmethod
 *     def Difference(cls,             # <<<<<<<<<<<<<<
 *                    Group group1 not None,
 *                    Group group2 not None):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Difference(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_Difference[] = "Group.Difference(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_Difference(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIGroupObject *__pyx_v_group1 = 0;
  PyMPIGroupObject *__pyx_v_group2 = 0;
  PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_48,&__pyx_kp_50,0};
  __Pyx_SetupRefcountContext("Difference");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_48);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_50);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Difference", 1, 2, 2, 1); {__pyx_filename = __pyx_f[23]; __pyx_lineno = 130; __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[23]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_group1 = ((PyMPIGroupObject *)values[0]);
    __pyx_v_group2 = ((PyMPIGroupObject *)values[1]);
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_group1 = ((PyMPIGroupObject *)PyTuple_GET_ITEM(__pyx_args, 0));
    __pyx_v_group2 = ((PyMPIGroupObject *)PyTuple_GET_ITEM(__pyx_args, 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[23]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Difference");
  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[23]; __pyx_lineno = 131; __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[23]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":137
 *         of two existing groups
 *         """
 *         cdef Group group = cls()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_difference(group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  /* __pyx_t_1 allocated */
  __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 = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":138
 *         """
 *         cdef Group group = cls()
 *         CHKERR( MPI_Group_difference(group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  /* __pyx_t_2 allocated */
  __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[23]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":139
 *         cdef Group group = cls()
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":141
 *         return group
 * 
 *     def Incl(self, ranks):             # <<<<<<<<<<<<<<
 *         """
 *         Produce a group by reordering an existing
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Incl(PyObject *__pyx_v_self, PyObject *__pyx_v_ranks); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_Incl[] = "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_Incl(PyObject *__pyx_v_self, PyObject *__pyx_v_ranks) {
  int __pyx_v_i;
  int __pyx_v_n;
  int *__pyx_v_iranks;
  PyObject *__pyx_v_tmp = 0;
  PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("Incl");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":146
 *         group and taking only listed members
 *         """
 *         cdef int i, n = len(ranks), *iranks = NULL             # <<<<<<<<<<<<<<
 *         cdef object tmp = newarray_int(n, &iranks)
 *         for i from 0 <= i < n: iranks[i] = ranks[i]
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_ranks); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;
  /* __pyx_t_1 released */
  __pyx_v_iranks = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":147
 *         """
 *         cdef int i, n = len(ranks), *iranks = NULL
 *         cdef object tmp = newarray_int(n, &iranks)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < n: iranks[i] = ranks[i]
 *         cdef Group group = type(self)()
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_n, (&__pyx_v_iranks)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":148
 *         cdef int i, n = len(ranks), *iranks = NULL
 *         cdef object tmp = newarray_int(n, &iranks)
 *         for i from 0 <= i < n: iranks[i] = ranks[i]             # <<<<<<<<<<<<<<
 *         cdef Group group = type(self)()
 *         CHKERR( MPI_Group_incl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_ranks, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_PyInt_int(__pyx_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    (__pyx_v_iranks[__pyx_v_i]) = __pyx_t_3;
    /* __pyx_t_3 released */
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":149
 *         cdef object tmp = newarray_int(n, &iranks)
 *         for i from 0 <= i < n: iranks[i] = ranks[i]
 *         cdef Group group = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_incl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 *         return group
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":150
 *         for i from 0 <= i < n: iranks[i] = ranks[i]
 *         cdef Group group = type(self)()
 *         CHKERR( MPI_Group_incl(self.ob_mpi, n, iranks, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_incl(((PyMPIGroupObject *)__pyx_v_self)->ob_mpi, __pyx_v_n, __pyx_v_iranks, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":151
 *         cdef 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_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Incl");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":153
 *         return group
 * 
 *     def Excl(self, ranks):             # <<<<<<<<<<<<<<
 *         """
 *         Produce a group by reordering an existing
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Excl(PyObject *__pyx_v_self, PyObject *__pyx_v_ranks); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_Excl[] = "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_Excl(PyObject *__pyx_v_self, PyObject *__pyx_v_ranks) {
  int __pyx_v_i;
  int __pyx_v_n;
  int *__pyx_v_iranks;
  PyObject *__pyx_v_tmp = 0;
  PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("Excl");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":158
 *         group and taking only unlisted members
 *         """
 *         cdef int i, n = len(ranks), *iranks = NULL             # <<<<<<<<<<<<<<
 *         cdef object tmp = newarray_int(n, &iranks)
 *         for i from 0 <= i < n: iranks[i] = ranks[i]
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_ranks); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;
  /* __pyx_t_1 released */
  __pyx_v_iranks = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":159
 *         """
 *         cdef int i, n = len(ranks), *iranks = NULL
 *         cdef object tmp = newarray_int(n, &iranks)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < n: iranks[i] = ranks[i]
 *         cdef Group group = type(self)()
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_n, (&__pyx_v_iranks)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":160
 *         cdef int i, n = len(ranks), *iranks = NULL
 *         cdef object tmp = newarray_int(n, &iranks)
 *         for i from 0 <= i < n: iranks[i] = ranks[i]             # <<<<<<<<<<<<<<
 *         cdef Group group = type(self)()
 *         CHKERR( MPI_Group_excl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_ranks, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_PyInt_int(__pyx_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    (__pyx_v_iranks[__pyx_v_i]) = __pyx_t_3;
    /* __pyx_t_3 released */
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":161
 *         cdef object tmp = newarray_int(n, &iranks)
 *         for i from 0 <= i < n: iranks[i] = ranks[i]
 *         cdef Group group = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_excl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 *         return group
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":162
 *         for i from 0 <= i < n: iranks[i] = ranks[i]
 *         cdef Group group = type(self)()
 *         CHKERR( MPI_Group_excl(self.ob_mpi, n, iranks, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_excl(((PyMPIGroupObject *)__pyx_v_self)->ob_mpi, __pyx_v_n, __pyx_v_iranks, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":163
 *         cdef 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_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Excl");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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_Range_incl(PyObject *__pyx_v_self, PyObject *__pyx_v_ranks); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_Range_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_Range_incl(PyObject *__pyx_v_self, PyObject *__pyx_v_ranks) {
  int __pyx_v_i;
  int __pyx_v_n;
  int *__pyx_v_p;
  int (*__pyx_v_ranges)[3];
  PyObject *__pyx_v_tmp1 = 0;
  PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_SetupRefcountContext("Range_incl");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":170
 *         of ranks in an existing group
 *         """
 *         cdef int i, n = len(ranks), *p = NULL,             # <<<<<<<<<<<<<<
 *         cdef int (*ranges)[3] # = NULL ## XXX cython fails
 *         ranges = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_ranks); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;
  /* __pyx_t_1 released */
  __pyx_v_p = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":172
 *         cdef int i, n = len(ranks), *p = NULL,
 *         cdef int (*ranges)[3] # = NULL ## XXX cython fails
 *         ranges = NULL             # <<<<<<<<<<<<<<
 *         cdef object tmp1 = newarray_int3(n, &ranges)
 *         for i from 0 <= i < n:
 */
  __pyx_v_ranges = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":173
 *         cdef int (*ranges)[3] # = NULL ## XXX cython fails
 *         ranges = NULL
 *         cdef object tmp1 = newarray_int3(n, &ranges)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < n:
 *             p = <int*> ranges[i]
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int3(__pyx_v_n, (&__pyx_v_ranges)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __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;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":174
 *         ranges = NULL
 *         cdef object tmp1 = newarray_int3(n, &ranges)
 *         for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":175
 *         cdef object tmp1 = newarray_int3(n, &ranges)
 *         for i from 0 <= i < n:
 *             p = <int*> ranges[i]             # <<<<<<<<<<<<<<
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = type(self)()
 */
    __pyx_v_p = ((int *)(__pyx_v_ranges[__pyx_v_i]));

    /* "/u/dalcinl/Devel/mpi4py-dev/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 = type(self)()
 *         CHKERR( MPI_Group_range_incl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_ranks, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    if (PyTuple_CheckExact(__pyx_1) && PyTuple_GET_SIZE(__pyx_1) == 3) {
      PyObject* tuple = __pyx_1;
      __pyx_3 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_3);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
      /* __pyx_t_4 allocated */
      __pyx_t_4 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __pyx_3 = PyTuple_GET_ITEM(tuple, 2); __Pyx_INCREF(__pyx_3);
      /* __pyx_t_5 allocated */
      __pyx_t_5 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      (__pyx_v_p[0]) = __pyx_t_3;
      /* __pyx_t_3 released */
      (__pyx_v_p[1]) = __pyx_t_4;
      /* __pyx_t_4 released */
      (__pyx_v_p[2]) = __pyx_t_5;
      /* __pyx_t_5 released */
    } else {
      __pyx_2 = PyObject_GetIter(__pyx_1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_2);
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __pyx_3 = __Pyx_UnpackItem(__pyx_2, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_3);
      /* __pyx_t_5 allocated */
      __pyx_t_5 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __pyx_3 = __Pyx_UnpackItem(__pyx_2, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_3);
      /* __pyx_t_4 allocated */
      __pyx_t_4 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __pyx_3 = __Pyx_UnpackItem(__pyx_2, 2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_3);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      if (__Pyx_EndUnpack(__pyx_2) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
      (__pyx_v_p[0]) = __pyx_t_5;
      /* __pyx_t_5 released */
      (__pyx_v_p[1]) = __pyx_t_4;
      /* __pyx_t_4 released */
      (__pyx_v_p[2]) = __pyx_t_3;
      /* __pyx_t_3 released */
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":177
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_range_incl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 *         return group
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_6 allocated */
  __pyx_t_6 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  /* __pyx_t_6 released */
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":178
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = type(self)()
 *         CHKERR( MPI_Group_range_incl(self.ob_mpi, n, ranges, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_range_incl(((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[23]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":179
 *         cdef 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_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Range_incl");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/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_Range_excl(PyObject *__pyx_v_self, PyObject *__pyx_v_ranks); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_Range_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_Range_excl(PyObject *__pyx_v_self, PyObject *__pyx_v_ranks) {
  int __pyx_v_i;
  int __pyx_v_n;
  int *__pyx_v_p;
  int (*__pyx_v_ranges)[3];
  PyObject *__pyx_v_tmp1 = 0;
  PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_SetupRefcountContext("Range_excl");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":186
 *         of processes from an existing group
 *         """
 *         cdef int i, n = len(ranks), *p = NULL,             # <<<<<<<<<<<<<<
 *         cdef int (*ranges)[3] # = NULL ## XXX cython fails
 *         ranges = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_ranks); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;
  /* __pyx_t_1 released */
  __pyx_v_p = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":188
 *         cdef int i, n = len(ranks), *p = NULL,
 *         cdef int (*ranges)[3] # = NULL ## XXX cython fails
 *         ranges = NULL             # <<<<<<<<<<<<<<
 *         cdef object tmp1 = newarray_int3(n, &ranges)
 *         for i from 0 <= i < n:
 */
  __pyx_v_ranges = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":189
 *         cdef int (*ranges)[3] # = NULL ## XXX cython fails
 *         ranges = NULL
 *         cdef object tmp1 = newarray_int3(n, &ranges)             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < n:
 *             p = <int*> ranges[i]
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int3(__pyx_v_n, (&__pyx_v_ranges)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __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;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":190
 *         ranges = NULL
 *         cdef object tmp1 = newarray_int3(n, &ranges)
 *         for i from 0 <= i < n:             # <<<<<<<<<<<<<<
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]
 */
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_n; __pyx_v_i++) {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":191
 *         cdef object tmp1 = newarray_int3(n, &ranges)
 *         for i from 0 <= i < n:
 *             p = <int*> ranges[i]             # <<<<<<<<<<<<<<
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = type(self)()
 */
    __pyx_v_p = ((int *)(__pyx_v_ranges[__pyx_v_i]));

    /* "/u/dalcinl/Devel/mpi4py-dev/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 = type(self)()
 *         CHKERR( MPI_Group_range_excl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 */
    __pyx_1 = __Pyx_GetItemInt(__pyx_v_ranks, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    if (PyTuple_CheckExact(__pyx_1) && PyTuple_GET_SIZE(__pyx_1) == 3) {
      PyObject* tuple = __pyx_1;
      __pyx_3 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_3);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __pyx_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_3);
      /* __pyx_t_4 allocated */
      __pyx_t_4 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __pyx_3 = PyTuple_GET_ITEM(tuple, 2); __Pyx_INCREF(__pyx_3);
      /* __pyx_t_5 allocated */
      __pyx_t_5 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      (__pyx_v_p[0]) = __pyx_t_3;
      /* __pyx_t_3 released */
      (__pyx_v_p[1]) = __pyx_t_4;
      /* __pyx_t_4 released */
      (__pyx_v_p[2]) = __pyx_t_5;
      /* __pyx_t_5 released */
    } else {
      __pyx_2 = PyObject_GetIter(__pyx_1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_2);
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __pyx_3 = __Pyx_UnpackItem(__pyx_2, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_3);
      /* __pyx_t_5 allocated */
      __pyx_t_5 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __pyx_3 = __Pyx_UnpackItem(__pyx_2, 1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_3);
      /* __pyx_t_4 allocated */
      __pyx_t_4 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      __pyx_3 = __Pyx_UnpackItem(__pyx_2, 2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_3);
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_PyInt_int(__pyx_3); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      if (__Pyx_EndUnpack(__pyx_2) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
      (__pyx_v_p[0]) = __pyx_t_5;
      /* __pyx_t_5 released */
      (__pyx_v_p[1]) = __pyx_t_4;
      /* __pyx_t_4 released */
      (__pyx_v_p[2]) = __pyx_t_3;
      /* __pyx_t_3 released */
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":193
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = type(self)()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_range_excl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 *         return group
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_6 allocated */
  __pyx_t_6 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  /* __pyx_t_6 released */
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":194
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = type(self)()
 *         CHKERR( MPI_Group_range_excl(self.ob_mpi, n, ranges, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_range_excl(((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[23]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":195
 *         cdef 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_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Range_excl");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":200
 *     # ----------------
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free a group
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Free(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_Free[] = "Group.Free(self)\n\n        Free a group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_Free(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Free");

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = (((PyMPIGroupObject *)__pyx_v_self)->ob_mpi != MPI_GROUP_EMPTY);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&((PyMPIGroupObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */
    goto __pyx_L5;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_1 = (((PyMPIGroupObject *)__pyx_v_self) != __pyx_v_6mpi4py_3MPI___GROUP_EMPTY__);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/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 )
 * 
 */
    ((PyMPIGroupObject *)__pyx_v_self)->ob_mpi = MPI_GROUP_NULL;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_ERR_GROUP); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    /* __pyx_t_2 released */
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Free");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":213
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_py2f(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_py2f[] = "Group.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_py2f(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("py2f");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":216
 *         """
 *         """
 *         return MPI_Group_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(MPI_Group_c2f(((PyMPIGroupObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":219
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_5Group_f2py[] = "Group.f2py(cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  __Pyx_SetupRefcountContext("f2py");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":222
 *         """
 *         """
 *         cdef Group group = cls()             # <<<<<<<<<<<<<<
 *         group.ob_mpi = MPI_Group_f2c(arg)
 *         return group
 */
  /* __pyx_t_1 allocated */
  __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 = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":223
 *         """
 *         cdef Group group = cls()
 *         group.ob_mpi = MPI_Group_f2c(arg)             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_long(__pyx_v_arg); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group->ob_mpi = MPI_Group_f2c(__pyx_t_2);
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":224
 *         cdef 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":23
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ob_mpi = MPI_COMM_NULL
 * 
 */

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) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":24
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_COMM_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((PyMPICommObject *)__pyx_v_self)->ob_mpi = MPI_COMM_NULL;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":26
 *         self.ob_mpi = MPI_COMM_NULL
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( _del_Comm(&self.ob_mpi) )
 */

static void __pyx_pf_6mpi4py_3MPI_4Comm___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_4Comm___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("__dealloc__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":27
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( _del_Comm(&self.ob_mpi) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!(((PyMPICommObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":28
 *     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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI__del_Comm((&((PyMPICommObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.__dealloc__");
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":30
 *         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___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyMPICommObject *__pyx_v_s = 0;
  PyMPICommObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("__richcmp__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":31
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Comm): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Comm): return NotImplemented
 *         cdef Comm s = self, o = other
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_self, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Comm))); 
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":32
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Comm): return NotImplemented
 *         if not isinstance(other, Comm): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Comm s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_TypeCheck(__pyx_v_other, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Comm))); 
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_t_2);
  /* __pyx_t_2 released */
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":33
 *         if not isinstance(self,  Comm): return NotImplemented
 *         if not isinstance(other, Comm): return NotImplemented
 *         cdef Comm s = self, o = other             # <<<<<<<<<<<<<<
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 */
  if (!(__Pyx_TypeTest(__pyx_v_self, __pyx_ptype_6mpi4py_3MPI_Comm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_self);
  __pyx_v_s = ((PyMPICommObject *)__pyx_v_self);
  if (!(__Pyx_TypeTest(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Comm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_other);
  __pyx_v_o = ((PyMPICommObject *)__pyx_v_other);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":34
 *         if not isinstance(other, Comm): return NotImplemented
 *         cdef Comm s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 */
  switch (__pyx_v_op) {
    case 2:
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    case 3:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":35
 *         cdef Comm s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    default:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":36
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_140); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __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_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    {__pyx_filename = __pyx_f[8]; __pyx_lineno = 36; __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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.__richcmp__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":38
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_COMM_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_4Comm___nonzero__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Comm___nonzero__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__nonzero__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":39
 * 
 *     def __nonzero__(self):
 *         return self.ob_mpi != MPI_COMM_NULL             # <<<<<<<<<<<<<<
 * 
 *     # Group
 */
  __pyx_r = (((PyMPICommObject *)__pyx_v_self)->ob_mpi != MPI_COMM_NULL);
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":44
 *     # -----
 * 
 *     def Get_group(self):             # <<<<<<<<<<<<<<
 *         """
 *         Access the group associated with a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_group(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Get_group[] = "Comm.Get_group(self)\n\n        Access the group associated with a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_group(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Get_group");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":48
 *         Access the group associated with a communicator
 *         """
 *         cdef Group group = Group()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_group(self.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":49
 *         """
 *         cdef Group group = Group()
 *         CHKERR( MPI_Comm_group(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_group(((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":50
 *         cdef Group group = Group()
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":54
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":55
 *         """communicator group"""
 *         def __get__(self):
 *             return self.Get_group()             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Accessors
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_group); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":60
 *     # ----------------------
 * 
 *     def Get_size(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the size of a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_size(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Get_size[] = "Comm.Get_size(self)\n\n        Return the size of a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_size(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_size");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":64
 *         Return the size of a communicator
 *         """
 *         cdef int size = -1             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_size(self.ob_mpi, &size) )
 *         return size
 */
  __pyx_v_size = -1;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":65
 *         """
 *         cdef int size = -1
 *         CHKERR( MPI_Comm_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":66
 *         cdef int size = -1
 *         CHKERR( MPI_Comm_size(self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     property size:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":70
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":71
 *         """number of processes in communicator"""
 *         def __get__(self):
 *             return self.Get_size()             # <<<<<<<<<<<<<<
 * 
 *     def Get_rank(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":73
 *             return self.Get_size()
 * 
 *     def Get_rank(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the rank of this process in a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_rank(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Get_rank[] = "Comm.Get_rank(self)\n\n        Return the rank of this process in a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_rank(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_rank");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":77
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":78
 *         """
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":79
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":83
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":84
 *         """rank of this process in communicator"""
 *         def __get__(self):
 *             return self.Get_rank()             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_rank); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":87
 * 
 *     @classmethod
 *     def Compare(cls, Comm comm1 not None, Comm comm2 not None):             # <<<<<<<<<<<<<<
 *         """
 *         Compare two communicators
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Compare(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Compare[] = "Comm.Compare(cls, Comm comm1, Comm comm2)\n\n        Compare two communicators\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Compare(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPICommObject *__pyx_v_comm1 = 0;
  PyMPICommObject *__pyx_v_comm2 = 0;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_51,&__pyx_kp_52,0};
  __Pyx_SetupRefcountContext("Compare");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_51);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_52);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Compare", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 87; __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[8]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_comm1 = ((PyMPICommObject *)values[0]);
    __pyx_v_comm2 = ((PyMPICommObject *)values[1]);
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_comm1 = ((PyMPICommObject *)PyTuple_GET_ITEM(__pyx_args, 0));
    __pyx_v_comm2 = ((PyMPICommObject *)PyTuple_GET_ITEM(__pyx_args, 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[8]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Compare");
  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[8]; __pyx_lineno = 87; __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[8]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":91
 *         Compare two communicators
 *         """
 *         cdef int flag = MPI_UNEQUAL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_compare(comm1.ob_mpi, comm2.ob_mpi, &flag) )
 *         return flag
 */
  __pyx_v_flag = MPI_UNEQUAL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":92
 *         """
 *         cdef int flag = MPI_UNEQUAL
 *         CHKERR( MPI_Comm_compare(comm1.ob_mpi, comm2.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":93
 *         cdef int flag = MPI_UNEQUAL
 *         CHKERR( MPI_Comm_compare(comm1.ob_mpi, comm2.ob_mpi, &flag) )
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Constructors
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":98
 *     # -------------------------
 * 
 *     def Clone(self):             # <<<<<<<<<<<<<<
 *         """
 *         Clone an existing communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Clone(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Clone[] = "Comm.Clone(self)\n\n        Clone an existing communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Clone(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPICommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Clone");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":102
 *         Clone an existing communicator
 *         """
 *         cdef Comm comm = type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 102; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPICommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":103
 *         """
 *         cdef Comm comm = type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup(((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_comm->ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_3 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":104
 *         cdef 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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Clone");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":109
 *     # -----------------------
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Free(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Free[] = "Comm.Free(self)\n\n        Free a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Free(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Free");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":113
 *         Free a communicator
 *         """
 *         with nogil: CHKERR( MPI_Comm_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Point to Point communication
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_free((&((PyMPICommObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":121
 *     # ------------------------------------
 * 
 *     def Send(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Blocking send
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Send(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Send[] = "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_Send(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_dest,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Send");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_dest = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Send");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":129
 *            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 allocated */
  __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[8]; __pyx_lineno = 129; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":130
 *         """
 *         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) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":132
 *         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 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":134
 *             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_Recv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Recv[] = "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_Recv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_source,&__pyx_kp_tag,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Recv");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[3] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_source);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[8]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
    __pyx_v_status = ((PyMPIStatusObject *)values[3]);
  } else {
    __pyx_v_source = 0;
    __pyx_v_tag = 0;
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 3));
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_source = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Recv");
  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[8]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":140
 *         .. 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 allocated */
  __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[8]; __pyx_lineno = 140; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":141
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":142
 *         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) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":144
 *         with nogil: CHKERR( MPI_Recv(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     # Send-Receive
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":149
 *     # ------------
 * 
 *     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_Sendrecv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Sendrecv[] = "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_Sendrecv(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;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_dest,&__pyx_kp_sendtag,&__pyx_kp_recvbuf,&__pyx_kp_source,&__pyx_kp_recvtag,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Sendrecv");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[7] = {0,0,0,0,0,0,0};
    values[3] = Py_None;
    values[6] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendtag);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
        if (unlikely(value)) { values[3] = value; kw_args--; }
      }
      case  4:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_source);
        if (unlikely(value)) { values[4] = value; kw_args--; }
      }
      case  5:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvtag);
        if (unlikely(value)) { values[5] = value; kw_args--; }
      }
      case  6:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[8]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_sendtag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_sendtag = 0;
    }
    __pyx_v_recvbuf = values[3];
    if (values[4]) {
      __pyx_v_source = __pyx_PyInt_int(values[4]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = 0;
    }
    if (values[5]) {
      __pyx_v_recvtag = __pyx_PyInt_int(values[5]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_recvtag = 0;
    }
    __pyx_v_status = ((PyMPIStatusObject *)values[6]);
  } else {
    __pyx_v_dest = 0;
    __pyx_v_sendtag = 0;
    __pyx_v_recvbuf = Py_None;
    __pyx_v_source = 0;
    __pyx_v_recvtag = 0;
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  7: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 6));
      case  6: __pyx_v_recvtag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  5: __pyx_v_source = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  4: __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: __pyx_v_sendtag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Sendrecv");
  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[8]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":163
 *            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 allocated */
  __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[8]; __pyx_lineno = 163; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":164
 *         """
 *         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 allocated */
  __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[8]; __pyx_lineno = 164; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":165
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":166
 *         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,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":169
 *             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 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":171
 *             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_Sendrecv_replace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Sendrecv_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_Sendrecv_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;
  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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_dest,&__pyx_kp_sendtag,&__pyx_kp_source,&__pyx_kp_recvtag,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Sendrecv_replace");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[6] = {0,0,0,0,0,0};
    values[5] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendtag);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_source);
        if (unlikely(value)) { values[3] = value; kw_args--; }
      }
      case  4:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvtag);
        if (unlikely(value)) { values[4] = value; kw_args--; }
      }
      case  5:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[8]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_sendtag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_sendtag = 0;
    }
    if (values[3]) {
      __pyx_v_source = __pyx_PyInt_int(values[3]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = 0;
    }
    if (values[4]) {
      __pyx_v_recvtag = __pyx_PyInt_int(values[4]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_recvtag = 0;
    }
    __pyx_v_status = ((PyMPIStatusObject *)values[5]);
  } else {
    __pyx_v_dest = 0;
    __pyx_v_sendtag = 0;
    __pyx_v_source = 0;
    __pyx_v_recvtag = 0;
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  6: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 5));
      case  5: __pyx_v_recvtag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  4: __pyx_v_source = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  3: __pyx_v_sendtag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Sendrecv_replace");
  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[8]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":186
 *            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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":187
 *         """
 *         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 allocated */
  __pyx_t_1 = (__pyx_v_dest != MPI_PROC_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_v_rank = __pyx_v_dest;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":188
 *         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 allocated */
  __pyx_t_1 = (__pyx_v_source != MPI_PROC_NULL);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_v_rank = __pyx_v_source;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":189
 *         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 allocated */
  __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[8]; __pyx_lineno = 189; __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;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":190
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":191
 *         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,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":194
 *                 rmsg.buf, rmsg.count, rmsg.dtype,
 *                 dest, sendtag, source, recvtag,
 *                 self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     # Nonblocking Communications
 */
      /* __pyx_t_3 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L9;}
      /* __pyx_t_3 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":199
 *     # --------------------------
 * 
 *     def Isend(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking send
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Isend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Isend[] = "Comm.Isend(self, buf, int dest=0, int tag=0)\n\n        Nonblocking send\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Isend(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;
  PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_dest,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Isend");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_dest = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Isend");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":203
 *         Nonblocking send
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_Isend(
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 203; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":204
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = Request()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Isend(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":205
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_Isend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":207
 *         with nogil: CHKERR( MPI_Isend(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":208
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":210
 *         return request
 * 
 *     def Irecv(self, buf, int source=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking receive
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Irecv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Irecv[] = "Comm.Irecv(self, buf, int source=0, int tag=0)\n\n        Nonblocking receive\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Irecv(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;
  PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_source,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Irecv");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_source);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_source = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_source = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Irecv");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":214
 *         Nonblocking receive
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)             # <<<<<<<<<<<<<<
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_Irecv(
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 214; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":215
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Request request = Request()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Irecv(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":216
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_Irecv(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":218
 *         with nogil: CHKERR( MPI_Irecv(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":219
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":224
 *     # -----
 * 
 *     def Probe(self, int source=0, int tag=0, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Blocking test for a message
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Probe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Probe[] = "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_Probe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_source;
  int __pyx_v_tag;
  PyMPIStatusObject *__pyx_v_status = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_source,&__pyx_kp_tag,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Probe");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_source);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[8]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    if (values[0]) {
      __pyx_v_source = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = 0;
    }
    if (values[1]) {
      __pyx_v_tag = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
    __pyx_v_status = ((PyMPIStatusObject *)values[2]);
  } else {
    __pyx_v_source = 0;
    __pyx_v_tag = 0;
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_source = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Probe");
  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[8]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":230
 *         .. 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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":231
 *         """
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         with nogil: CHKERR( MPI_Probe(             # <<<<<<<<<<<<<<
 *             source, tag, self.ob_mpi, statusp) )
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":232
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         with nogil: CHKERR( MPI_Probe(
 *             source, tag, self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Iprobe(self, source=0, tag=0, Status status=None):
 */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Probe(__pyx_v_source, __pyx_v_tag, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_statusp)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":234
 *             source, tag, self.ob_mpi, statusp) )
 * 
 *     def Iprobe(self, source=0, tag=0, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking test for a message
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Iprobe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Iprobe[] = "Comm.Iprobe(self, source=0, tag=0, Status status=None)\n\n        Nonblocking test for a message\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Iprobe(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_source = 0;
  PyObject *__pyx_v_tag = 0;
  PyMPIStatusObject *__pyx_v_status = 0;
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_source,&__pyx_kp_tag,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Iprobe");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[0] = __pyx_int_0;
    values[1] = __pyx_int_0;
    values[2] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_source);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[8]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_source = values[0];
    __pyx_v_tag = values[1];
    __pyx_v_status = ((PyMPIStatusObject *)values[2]);
  } else {
    __pyx_v_source = __pyx_int_0;
    __pyx_v_tag = __pyx_int_0;
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_source = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iprobe");
  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[8]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":238
 *         Nonblocking test for a message
 *         """
 *         cdef bint flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         with nogil: CHKERR( MPI_Iprobe(
 */
  __pyx_v_flag = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":239
 *         """
 *         cdef bint 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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":240
 *         cdef bint flag = 0
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         with nogil: CHKERR( MPI_Iprobe(             # <<<<<<<<<<<<<<
 *             source, tag, self.ob_mpi, &flag, statusp) )
 *         return flag
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":241
 *         cdef MPI_Status *statusp = _arg_Status(status)
 *         with nogil: CHKERR( MPI_Iprobe(
 *             source, tag, self.ob_mpi, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_PyInt_int(__pyx_v_source); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_PyInt_int(__pyx_v_tag); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Iprobe(__pyx_t_1, __pyx_t_2, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, ((int *)(&__pyx_v_flag)), __pyx_v_statusp)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
      /* __pyx_t_2 released */
      /* __pyx_t_3 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":242
 *         with nogil: CHKERR( MPI_Iprobe(
 *             source, tag, self.ob_mpi, &flag, statusp) )
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     # Persistent Communication
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  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.Comm.Iprobe");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":247
 *     # ------------------------
 * 
 *     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_Send_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Send_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_Send_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;
  PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_dest,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Send_init");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_dest = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Send_init");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":251
 *         Create a persistent request for a standard send
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = Prequest()
 *         with nogil: CHKERR( MPI_Send_init(
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 251; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":252
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = Prequest()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Send_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Prequest)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Prequest))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIPrequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":253
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = Prequest()
 *         with nogil: CHKERR( MPI_Send_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":255
 *         with nogil: CHKERR( MPI_Send_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":256
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":258
 *         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_Recv_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Recv_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_Recv_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;
  PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_source,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Recv_init");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_source);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_source = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_source = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Recv_init");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":262
 *         Create a persistent request for a receive
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = Prequest()
 *         with nogil: CHKERR( MPI_Recv_init(
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 262; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":263
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Prequest request = Prequest()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Recv_init(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Prequest)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Prequest))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIPrequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":264
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Prequest request = Prequest()
 *         with nogil: CHKERR( MPI_Recv_init(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":266
 *         with nogil: CHKERR( MPI_Recv_init(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":267
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":274
 *     # Blocking calls
 * 
 *     def Bsend(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Blocking send in buffered mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Bsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Bsend[] = "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_Bsend(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_dest,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Bsend");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_dest = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bsend");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":278
 *         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 allocated */
  __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[8]; __pyx_lineno = 278; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":279
 *         """
 *         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) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":281
 *         with nogil: CHKERR( MPI_Bsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Ssend(self, buf, dest=0, tag=0):
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":283
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Ssend(self, buf, dest=0, tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Blocking send in synchronous mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Ssend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Ssend[] = "Comm.Ssend(self, buf, dest=0, tag=0)\n\n        Blocking send in synchronous mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Ssend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_v_dest = 0;
  PyObject *__pyx_v_tag = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_dest,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Ssend");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = __pyx_int_0;
    values[2] = __pyx_int_0;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = values[1];
    __pyx_v_tag = values[2];
  } else {
    __pyx_v_dest = __pyx_int_0;
    __pyx_v_tag = __pyx_int_0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: __pyx_v_dest = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ssend");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":287
 *         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 allocated */
  __pyx_t_1 = __pyx_PyInt_int(__pyx_v_dest); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 allocated */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_1 released */
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":288
 *         """
 *         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) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":290
 *         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_1 allocated */
      __pyx_t_1 = __pyx_PyInt_int(__pyx_v_dest); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_PyInt_int(__pyx_v_tag); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_4 allocated */
      __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ssend(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_t_1, __pyx_t_3, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
      /* __pyx_t_3 released */
      /* __pyx_t_4 released */
    }
    /*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_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ssend");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":292
 *             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_Rsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Rsend[] = "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_Rsend(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_dest,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Rsend");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_dest = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Rsend");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":296
 *         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 allocated */
  __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[8]; __pyx_lineno = 296; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":297
 *         """
 *         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) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":299
 *         with nogil: CHKERR( MPI_Rsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Nonblocking calls
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":303
 *     # Nonblocking calls
 * 
 *     def Ibsend(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking send in buffered mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Ibsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Ibsend[] = "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_Ibsend(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;
  PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_dest,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Ibsend");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_dest = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ibsend");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":307
 *         Nonblocking send in buffered mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_Ibsend(
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 307; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":308
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = Request()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ibsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":309
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_Ibsend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":311
 *         with nogil: CHKERR( MPI_Ibsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":312
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":314
 *         return request
 * 
 *     def Issend(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking send in synchronous mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Issend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Issend[] = "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_Issend(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;
  PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_dest,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Issend");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_dest = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Issend");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":318
 *         Nonblocking send in synchronous mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_Issend(
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 318; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":319
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = Request()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Issend(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":320
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_Issend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":322
 *         with nogil: CHKERR( MPI_Issend(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":323
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":325
 *         return request
 * 
 *     def Irsend(self, buf, int dest=0, int tag=0):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking send in ready mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Irsend(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Irsend[] = "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_Irsend(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;
  PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_dest,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Irsend");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_dest = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Irsend");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":329
 *         Nonblocking send in ready mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_Irsend(
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 329; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":330
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = Request()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Irsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":331
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_Irsend(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":333
 *         with nogil: CHKERR( MPI_Irsend(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":334
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":338
 *     # 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_Bsend_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Bsend_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_Bsend_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;
  PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_dest,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Bsend_init");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_dest = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bsend_init");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":342
 *         Persistent request for a send in buffered mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = Prequest()
 *         with nogil: CHKERR( MPI_Bsend_init(
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 342; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":343
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = Prequest()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bsend_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Prequest)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Prequest))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIPrequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":344
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = Prequest()
 *         with nogil: CHKERR( MPI_Bsend_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":346
 *         with nogil: CHKERR( MPI_Bsend_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":347
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":349
 *         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_Ssend_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Ssend_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_Ssend_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;
  PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_dest,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Ssend_init");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_dest = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ssend_init");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":353
 *         Persistent request for a send in synchronous mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = Prequest()
 *         with nogil: CHKERR( MPI_Ssend_init(
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 353; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":354
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = Prequest()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ssend_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Prequest)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Prequest))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIPrequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":355
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = Prequest()
 *         with nogil: CHKERR( MPI_Ssend_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":357
 *         with nogil: CHKERR( MPI_Ssend_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":358
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":360
 *         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_Rsend_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Rsend_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_Rsend_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;
  PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_dest,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Rsend_init");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_dest = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Rsend_init");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":364
 *         Persistent request for a send in ready mode
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = Prequest()
 *         with nogil: CHKERR( MPI_Rsend_init(
 */
  /* __pyx_t_1 allocated */
  __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[8]; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":365
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = Prequest()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Rsend_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Prequest)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Prequest))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIPrequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":366
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = Prequest()
 *         with nogil: CHKERR( MPI_Rsend_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":368
 *         with nogil: CHKERR( MPI_Rsend_init(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":369
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":377
 *     # -----------------------
 * 
 *     def Barrier(self):             # <<<<<<<<<<<<<<
 *         """
 *         Barrier synchronization
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Barrier(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Barrier[] = "Comm.Barrier(self)\n\n        Barrier synchronization\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Barrier(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Barrier");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":381
 *         Barrier synchronization
 *         """
 *         with nogil: CHKERR( MPI_Barrier(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Global Communication Functions
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Barrier(((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":386
 *     # ------------------------------
 * 
 *     def Bcast(self, buf, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Broadcast a message from one process
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Bcast(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Bcast[] = "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_Bcast(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_root,0};
  __Pyx_SetupRefcountContext("Bcast");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_root);
        if (unlikely(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[8]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_root = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = 0;
    }
  } else {
    __pyx_v_root = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_root = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bcast");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":391
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __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_cco *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":392
 *         """
 *         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_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_bcast(__pyx_v_m, __pyx_v_buf, __pyx_v_root, ((PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":393
 *         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) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":395
 *         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 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":397
 *             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_Gather(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Gather[] = "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_Gather(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,&__pyx_kp_root,0};
  __Pyx_SetupRefcountContext("Gather");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Gather", 0, 2, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_root);
        if (unlikely(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[8]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = 0;
    }
  } else {
    __pyx_v_root = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_root = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2:
      __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gather");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":401
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 401; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":402
 *         """
 *         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_1 allocated */
  __pyx_t_1 = ((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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":403
 *         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,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":406
 *             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 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":408
 *             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_Gatherv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Gatherv[] = "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_Gatherv(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,&__pyx_kp_root,0};
  __Pyx_SetupRefcountContext("Gatherv");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Gatherv", 0, 2, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_root);
        if (unlikely(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[8]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = 0;
    }
  } else {
    __pyx_v_root = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_root = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2:
      __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gatherv");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":414
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":415
 *         """
 *         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_1 allocated */
  __pyx_t_1 = ((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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":416
 *         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,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":419
 *             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 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":421
 *             root, self.ob_mpi) )
 * 
 *     def Scatter(self, sendbuf, recvbuf, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Scatter Vector, scatter data from one process
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Scatter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Scatter[] = "Comm.Scatter(self, sendbuf, recvbuf, int root=0)\n\n        Scatter Vector, scatter data from one process\n        to all other processes in a group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Scatter(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,&__pyx_kp_root,0};
  __Pyx_SetupRefcountContext("Scatter");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Scatter", 0, 2, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_root);
        if (unlikely(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[8]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = 0;
    }
  } else {
    __pyx_v_root = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_root = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2:
      __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatter");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":426
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 426; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":427
 *         """
 *         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_1 allocated */
  __pyx_t_1 = ((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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":428
 *         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,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":431
 *             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 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":433
 *             root, self.ob_mpi) )
 * 
 *     def Scatterv(self, sendbuf, recvbuf, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Scatter data from one process to all other processes in a
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Scatterv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Scatterv[] = "Comm.Scatterv(self, sendbuf, recvbuf, int root=0)\n\n        Scatter data from one process to all other processes in a\n        group providing different amount of data and displacements at\n        the sending side\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Scatterv(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,&__pyx_kp_root,0};
  __Pyx_SetupRefcountContext("Scatterv");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Scatterv", 0, 2, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_root);
        if (unlikely(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[8]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = 0;
    }
  } else {
    __pyx_v_root = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_root = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2:
      __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatterv");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":439
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":440
 *         """
 *         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_1 allocated */
  __pyx_t_1 = ((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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":441
 *         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,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":444
 *             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 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":446
 *             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_Allgather(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Allgather[] = "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_Allgather(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,0};
  __Pyx_SetupRefcountContext("Allgather");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Allgather", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 446; __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[8]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 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[8]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgather");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":451
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __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_cco *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":452
 *         """
 *         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_1 allocated */
  __pyx_t_1 = ((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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":453
 *         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,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":456
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Allgatherv(self, sendbuf, recvbuf):
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":458
 *             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_Allgatherv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Allgatherv[] = "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_Allgatherv(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,0};
  __Pyx_SetupRefcountContext("Allgatherv");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Allgatherv", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 458; __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[8]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 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[8]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgatherv");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":464
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":465
 *         """
 *         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_1 allocated */
  __pyx_t_1 = ((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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":466
 *         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,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":469
 *             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 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":471
 *             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_Alltoall(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Alltoall[] = "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_Alltoall(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,0};
  __Pyx_SetupRefcountContext("Alltoall");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Alltoall", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __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), "Alltoall") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 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[8]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoall");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":476
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __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_cco *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":477
 *         """
 *         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_1 allocated */
  __pyx_t_1 = ((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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":478
 *         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,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":481
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Alltoallv(self, sendbuf, recvbuf):
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":483
 *             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_Alltoallv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Alltoallv[] = "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_Alltoallv(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,0};
  __Pyx_SetupRefcountContext("Alltoallv");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Alltoallv", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 483; __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[8]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 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[8]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallv");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":489
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":490
 *         """
 *         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_1 allocated */
  __pyx_t_1 = ((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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":491
 *         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,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":494
 *             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 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":496
 *             self.ob_mpi) )
 * 
 *     def Alltoallw(self, sendbuf, recvbuf):             # <<<<<<<<<<<<<<
 *         """
 *         Generalized All-to-All communication allowing different
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Alltoallw(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Alltoallw[] = "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_Alltoallw(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  void *__pyx_v_sbuf;
  void *__pyx_v_rbuf;
  int *__pyx_v_scounts;
  int *__pyx_v_rcounts;
  int *__pyx_v_sdispls;
  int *__pyx_v_rdispls;
  MPI_Datatype *__pyx_v_stypes;
  MPI_Datatype *__pyx_v_rtypes;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,0};
  __Pyx_SetupRefcountContext("Alltoallw");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Alltoallw", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __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), "Alltoallw") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 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[8]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallw");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":501
 *         counts, displacements and datatypes for each partner
 *         """
 *         raise NotImplementedError # XXX implement!             # <<<<<<<<<<<<<<
 *         cdef void *sbuf = NULL, *rbuf = NULL
 *         cdef int  *scounts = NULL, *rcounts = NULL
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0);
  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":502
 *         """
 *         raise NotImplementedError # XXX implement!
 *         cdef void *sbuf = NULL, *rbuf = NULL             # <<<<<<<<<<<<<<
 *         cdef int  *scounts = NULL, *rcounts = NULL
 *         cdef int  *sdispls = NULL, *rdispls = NULL
 */
  __pyx_v_sbuf = NULL;
  __pyx_v_rbuf = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":503
 *         raise NotImplementedError # XXX implement!
 *         cdef void *sbuf = NULL, *rbuf = NULL
 *         cdef int  *scounts = NULL, *rcounts = NULL             # <<<<<<<<<<<<<<
 *         cdef int  *sdispls = NULL, *rdispls = NULL
 *         cdef MPI_Datatype *stypes = NULL, *rtypes = NULL
 */
  __pyx_v_scounts = NULL;
  __pyx_v_rcounts = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":504
 *         cdef void *sbuf = NULL, *rbuf = NULL
 *         cdef int  *scounts = NULL, *rcounts = NULL
 *         cdef int  *sdispls = NULL, *rdispls = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype *stypes = NULL, *rtypes = NULL
 *         with nogil: CHKERR( MPI_Alltoallw(
 */
  __pyx_v_sdispls = NULL;
  __pyx_v_rdispls = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":505
 *         cdef int  *scounts = NULL, *rcounts = NULL
 *         cdef int  *sdispls = NULL, *rdispls = NULL
 *         cdef MPI_Datatype *stypes = NULL, *rtypes = NULL             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Alltoallw(
 *             sbuf, scounts, sdispls, stypes,
 */
  __pyx_v_stypes = NULL;
  __pyx_v_rtypes = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":506
 *         cdef int  *sdispls = NULL, *rdispls = NULL
 *         cdef MPI_Datatype *stypes = NULL, *rtypes = NULL
 *         with nogil: CHKERR( MPI_Alltoallw(             # <<<<<<<<<<<<<<
 *             sbuf, scounts, sdispls, stypes,
 *             rbuf, rcounts, rdispls, rtypes,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":509
 *             sbuf, scounts, sdispls, stypes,
 *             rbuf, rcounts, rdispls, rtypes,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alltoallw(__pyx_v_sbuf, __pyx_v_scounts, __pyx_v_sdispls, __pyx_v_stypes, __pyx_v_rbuf, __pyx_v_rcounts, __pyx_v_rdispls, __pyx_v_rtypes, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
    }
    /*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.Alltoallw");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":515
 *     # ---------------------------
 * 
 *     def Reduce(self, sendbuf, recvbuf, Op op not None=SUM, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Reduce
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Reduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Reduce[] = "Comm.Reduce(self, sendbuf, recvbuf, Op op=SUM, int root=0)\n\n        Reduce\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Reduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,&__pyx_kp_op,&__pyx_kp_root,0};
  __Pyx_SetupRefcountContext("Reduce");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[2] = (PyObject*)__pyx_k_64;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Reduce", 0, 2, 4, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_op);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_root);
        if (unlikely(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[8]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((PyMPIOpObject *)values[2]);
    if (values[3]) {
      __pyx_v_root = __pyx_PyInt_int(values[3]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = 0;
    }
  } else {
    __pyx_v_op = __pyx_k_64;
    __pyx_v_root = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4:
      __pyx_v_root = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  3:
      __pyx_v_op = ((PyMPIOpObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2:
      __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce");
  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[8]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":519
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 519; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":520
 *         """
 *         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_1 allocated */
  __pyx_t_1 = ((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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":521
 *         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) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":523
 *         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 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":525
 *             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_Allreduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Allreduce[] = "Comm.Allreduce(self, sendbuf, recvbuf, Op op=SUM)\n\n        All Reduce\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Allreduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  PyMPIOpObject *__pyx_v_op = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,&__pyx_kp_op,0};
  __Pyx_SetupRefcountContext("Allreduce");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject*)__pyx_k_65;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Allreduce", 0, 2, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_op);
        if (unlikely(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[8]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((PyMPIOpObject *)values[2]);
  } else {
    __pyx_v_op = __pyx_k_65;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_op = ((PyMPIOpObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2:
      __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allreduce");
  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[8]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":529
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 529; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":530
 *         """
 *         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_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_allreduce(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, ((PyMPICommObject *)__pyx_v_self)->ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":531
 *         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) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":533
 *         with nogil: CHKERR( MPI_Allreduce(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Reduce_scatter(self, sendbuf, recvbuf, Op op not None=SUM):
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":535
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter(self, sendbuf, recvbuf, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Reduce-Scatter
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Reduce_scatter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Reduce_scatter[] = "Comm.Reduce_scatter(self, sendbuf, recvbuf, Op op=SUM)\n\n        Reduce-Scatter\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Reduce_scatter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  PyMPIOpObject *__pyx_v_op = 0;
  void *__pyx_v_sbuf;
  void *__pyx_v_rbuf;
  int *__pyx_v_rcounts;
  MPI_Datatype __pyx_v_rtype;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,&__pyx_kp_op,0};
  __Pyx_SetupRefcountContext("Reduce_scatter");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject*)__pyx_k_66;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Reduce_scatter", 0, 2, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_op);
        if (unlikely(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") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((PyMPIOpObject *)values[2]);
  } else {
    __pyx_v_op = __pyx_k_66;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_op = ((PyMPIOpObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2:
      __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Reduce_scatter", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_scatter");
  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[8]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":539
 *         Reduce-Scatter
 *         """
 *         raise NotImplementedError # XXX implement!             # <<<<<<<<<<<<<<
 *         cdef void *sbuf = NULL
 *         cdef void *rbuf = NULL
 */
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0);
  {__pyx_filename = __pyx_f[8]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":540
 *         """
 *         raise NotImplementedError # XXX implement!
 *         cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *         cdef void *rbuf = NULL
 *         cdef int *rcounts = NULL
 */
  __pyx_v_sbuf = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":541
 *         raise NotImplementedError # XXX implement!
 *         cdef void *sbuf = NULL
 *         cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *         cdef int *rcounts = NULL
 *         cdef MPI_Datatype rtype = MPI_DATATYPE_NULL
 */
  __pyx_v_rbuf = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":542
 *         cdef void *sbuf = NULL
 *         cdef void *rbuf = NULL
 *         cdef int *rcounts = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype rtype = MPI_DATATYPE_NULL
 *         with nogil: CHKERR( MPI_Reduce_scatter(
 */
  __pyx_v_rcounts = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":543
 *         cdef void *rbuf = NULL
 *         cdef int *rcounts = NULL
 *         cdef MPI_Datatype rtype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Reduce_scatter(
 *             sbuf, rbuf, rcounts, rtype,
 */
  __pyx_v_rtype = MPI_DATATYPE_NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":544
 *         cdef int *rcounts = NULL
 *         cdef MPI_Datatype rtype = MPI_DATATYPE_NULL
 *         with nogil: CHKERR( MPI_Reduce_scatter(             # <<<<<<<<<<<<<<
 *             sbuf, rbuf, rcounts, rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":546
 *         with nogil: CHKERR( MPI_Reduce_scatter(
 *             sbuf, rbuf, rcounts, rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Tests
 */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Reduce_scatter(__pyx_v_sbuf, __pyx_v_rbuf, __pyx_v_rcounts, __pyx_v_rtype, __pyx_v_op->ob_mpi, ((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
    }
    /*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.Reduce_scatter");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":551
 *     # -----
 * 
 *     def Is_inter(self):             # <<<<<<<<<<<<<<
 *         """
 *         Test to see if a comm is an intercommunicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Is_inter(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Is_inter[] = "Comm.Is_inter(self)\n\n        Test to see if a comm is an intercommunicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Is_inter(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Is_inter");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":555
 *         Test to see if a comm is an intercommunicator
 *         """
 *         cdef bint flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &flag) )
 *         return flag
 */
  __pyx_v_flag = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":556
 *         """
 *         cdef bint flag = 0
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(((PyMPICommObject *)__pyx_v_self)->ob_mpi, ((int *)(&__pyx_v_flag)))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":557
 *         cdef bint flag = 0
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &flag) )
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     property is_inter:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":561
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":562
 *         """is intercommunicator"""
 *         def __get__(self):
 *             return self.Is_inter()             # <<<<<<<<<<<<<<
 * 
 *     def Is_intra(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Is_inter); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":564
 *             return self.Is_inter()
 * 
 *     def Is_intra(self):             # <<<<<<<<<<<<<<
 *         """
 *         Test to see if a comm is an intracommunicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Is_intra(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Is_intra[] = "Comm.Is_intra(self)\n\n        Test to see if a comm is an intracommunicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Is_intra(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Is_intra");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":568
 *         Test to see if a comm is an intracommunicator
 *         """
 *         return not self.Is_inter()             # <<<<<<<<<<<<<<
 * 
 *     property is_intra:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Is_inter); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong((!__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":572
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":573
 *         """is intracommunicator"""
 *         def __get__(self):
 *             return self.Is_intra()             # <<<<<<<<<<<<<<
 * 
 *     def Get_topology(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Is_intra); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":575
 *             return self.Is_intra()
 * 
 *     def Get_topology(self):             # <<<<<<<<<<<<<<
 *         """
 *         Determine the type of topology (if any)
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_topology(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Get_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_Get_topology(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_topo;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_topology");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":580
 *         associated with a communicator
 *         """
 *         cdef int topo = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         return topo
 */
  __pyx_v_topo = MPI_UNDEFINED;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":581
 *         """
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )             # <<<<<<<<<<<<<<
 *         return topo
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Topo_test(((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_topo))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":582
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         return topo             # <<<<<<<<<<<<<<
 * 
 *     property topology:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_topo); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":586
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":587
 *         """communicator topology type"""
 *         def __get__(self):
 *             return self.Get_topology()             # <<<<<<<<<<<<<<
 * 
 *     # Process Creation and Management
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_topology); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":593
 * 
 *     @classmethod
 *     def Get_parent(cls):             # <<<<<<<<<<<<<<
 *         """
 *         Return the parent intercommunicator for this process
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_parent(PyObject *__pyx_v_cls, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Get_parent[] = "Comm.Get_parent(cls)\n\n        Return the parent intercommunicator for this process\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_parent(PyObject *__pyx_v_cls, PyObject *unused) {
  MPI_Comm __pyx_v_comm;
  PyMPIIntercommObject *__pyx_v_parent = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Get_parent");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":597
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":598
 *         """
 *         cdef MPI_Comm comm = MPI_COMM_NULL
 *         with nogil: CHKERR( MPI_Comm_get_parent(&comm) )             # <<<<<<<<<<<<<<
 *         global __COMM_PARENT__
 *         cdef Intercomm parent = __COMM_PARENT__
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __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[8]; __pyx_lineno = 598; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":600
 *         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__;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":601
 *         global __COMM_PARENT__
 *         cdef Intercomm parent = __COMM_PARENT__
 *         parent.ob_mpi = comm             # <<<<<<<<<<<<<<
 *         return parent
 * 
 */
  __pyx_v_parent->__pyx_base.ob_mpi = __pyx_v_comm;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":602
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_parent);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":604
 *         return parent
 * 
 *     def Disconnect(self):             # <<<<<<<<<<<<<<
 *         """
 *         Disconnect from a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Disconnect(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Disconnect[] = "Comm.Disconnect(self)\n\n        Disconnect from a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Disconnect(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Disconnect");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":608
 *         Disconnect from a communicator
 *         """
 *         with nogil: CHKERR( MPI_Comm_disconnect(             # <<<<<<<<<<<<<<
 *             &self.ob_mpi) )
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":609
 *         """
 *         with nogil: CHKERR( MPI_Comm_disconnect(
 *             &self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_disconnect((&((PyMPICommObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":612
 * 
 *     @classmethod
 *     def Join(cls, int fd):             # <<<<<<<<<<<<<<
 *         """
 *         Create a intercommunicator by joining
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Join(PyObject *__pyx_v_cls, PyObject *__pyx_arg_fd); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Join[] = "Comm.Join(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_Join(PyObject *__pyx_v_cls, PyObject *__pyx_arg_fd) {
  int __pyx_v_fd;
  PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Join");
  assert(__pyx_arg_fd); {
    __pyx_v_fd = __pyx_PyInt_int(__pyx_arg_fd); if (unlikely((__pyx_v_fd == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Join");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":617
 *         two processes connected by a socket
 *         """
 *         cdef Intercomm comm = Intercomm()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_join(
 *             fd, &comm.ob_mpi) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intercomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntercommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":618
 *         """
 *         cdef Intercomm comm = Intercomm()
 *         with nogil: CHKERR( MPI_Comm_join(             # <<<<<<<<<<<<<<
 *             fd, &comm.ob_mpi) )
 *         return comm
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":619
 *         cdef Intercomm comm = Intercomm()
 *         with nogil: CHKERR( MPI_Comm_join(
 *             fd, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
      /* __pyx_t_2 allocated */
      __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[8]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":620
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":625
 *     # ----------
 * 
 *     def Get_attr(self, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_attr(PyObject *__pyx_v_self, PyObject *__pyx_arg_keyval); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Get_attr[] = "Comm.Get_attr(self, int keyval)\n\n        Retrieve attribute value by key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_attr(PyObject *__pyx_v_self, PyObject *__pyx_arg_keyval) {
  int __pyx_v_keyval;
  void *__pyx_v_attrval;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("Get_attr");
  assert(__pyx_arg_keyval); {
    __pyx_v_keyval = __pyx_PyInt_int(__pyx_arg_keyval); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 625; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_attr");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":629
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":630
 *         """
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":631
 *         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 not attrval: return 0
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_attr(((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[8]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":632
 *         cdef int  flag = 0
 *         CHKERR(MPI_Comm_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None             # <<<<<<<<<<<<<<
 *         if not attrval: return 0
 *         # MPI-1 predefined attribute keyvals
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_v_flag);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":633
 *         CHKERR(MPI_Comm_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None
 *         if not attrval: return 0             # <<<<<<<<<<<<<<
 *         # MPI-1 predefined attribute keyvals
 *         if ((keyval == <int>MPI_TAG_UB) or
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!(__pyx_v_attrval != 0));
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_int_0);
    __pyx_r = __pyx_int_0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":635
 *         if not attrval: return 0
 *         # MPI-1 predefined attribute keyvals
 *         if ((keyval == <int>MPI_TAG_UB) or             # <<<<<<<<<<<<<<
 *             (keyval == <int>MPI_HOST) or
 *             (keyval == <int>MPI_IO) or
 */
  if (!(__pyx_v_keyval == ((int)MPI_TAG_UB))) {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":636
 *         # 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)):
 */
    if (!(__pyx_v_keyval == ((int)MPI_HOST))) {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":637
 *         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]
 */
      if (!(__pyx_v_keyval == ((int)MPI_IO))) {

        /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":638
 *             (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_2 allocated */
        __pyx_t_2 = (__pyx_v_keyval == ((int)MPI_WTIME_IS_GLOBAL));
      } else {
        __pyx_t_2 = (__pyx_v_keyval == ((int)MPI_IO));
      }
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_t_2;
      /* __pyx_t_2 released */
    } else {
      __pyx_t_3 = (__pyx_v_keyval == ((int)MPI_HOST));
    }
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_t_3;
    /* __pyx_t_3 released */
  } else {
    __pyx_t_2 = (__pyx_v_keyval == ((int)MPI_TAG_UB));
  }
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":639
 *             (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_4 allocated */
    __pyx_t_4 = PyInt_FromLong((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    goto __pyx_L0;
    goto __pyx_L7;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":641
 *             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)):
 */
  if (!(__pyx_v_keyval == ((int)MPI_UNIVERSE_SIZE))) {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":642
 *         # 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]
 */
    if (!(__pyx_v_keyval == ((int)MPI_APPNUM))) {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":643
 *         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_2 allocated */
      __pyx_t_2 = (__pyx_v_keyval == ((int)MPI_LASTUSEDCODE));
    } else {
      __pyx_t_2 = (__pyx_v_keyval == ((int)MPI_APPNUM));
    }
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_t_2;
    /* __pyx_t_2 released */
  } else {
    __pyx_t_3 = (__pyx_v_keyval == ((int)MPI_UNIVERSE_SIZE));
  }
  if (__pyx_t_3) {
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":644
 *               (keyval == <int>MPI_APPNUM) or
 *               (keyval == <int>MPI_LASTUSEDCODE)):
 *             return (<int*>attrval)[0]             # <<<<<<<<<<<<<<
 *         # user-defined attribute keyval
 *         else:
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyInt_FromLong((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    goto __pyx_L0;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":647
 *         # user-defined attribute keyval
 *         else:
 *             return PyLong_FromVoidPtr(attrval)             # <<<<<<<<<<<<<<
 * 
 *     # Error handling
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyLong_FromVoidPtr(__pyx_v_attrval); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    goto __pyx_L0;
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_attr");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":652
 *     # --------------
 * 
 *     def Get_errhandler(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_errhandler(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Get_errhandler[] = "Comm.Get_errhandler(self)\n\n        Get the error handler for a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_errhandler(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Get_errhandler");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":656
 *         Get the error handler for a communicator
 *         """
 *         cdef Errhandler errhandler = Errhandler()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Errhandler))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_errhandler = ((PyMPIErrhandlerObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":657
 *         """
 *         cdef Errhandler errhandler = Errhandler()
 *         CHKERR( MPI_Comm_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_errhandler(((PyMPICommObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":658
 *         cdef Errhandler errhandler = 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":660
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler not None):             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Set_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_v_errhandler); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Set_errhandler[] = "Comm.Set_errhandler(self, Errhandler errhandler)\n\n        Set the error handler for a communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Set_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_v_errhandler) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Set_errhandler");
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":664
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_errhandler(((PyMPICommObject *)__pyx_v_self)->ob_mpi, ((PyMPIErrhandlerObject *)__pyx_v_errhandler)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_errhandler");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":666
 *         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_Call_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_arg_errorcode); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Call_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_Call_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_arg_errorcode) {
  int __pyx_v_errorcode;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Call_errhandler");
  assert(__pyx_arg_errorcode); {
    __pyx_v_errorcode = __pyx_PyInt_int(__pyx_arg_errorcode); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 666; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Call_errhandler");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":670
 *         Call the error handler installed on a communicator
 *         """
 *         CHKERR( MPI_Comm_call_errhandler(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_call_errhandler(((PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_errorcode)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Call_errhandler");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":673
 * 
 * 
 *     def Abort(self, int errorcode=0):             # <<<<<<<<<<<<<<
 *         """
 *         Terminate MPI execution environment
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Abort(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Abort[] = "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_Abort(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_errorcode;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_errorcode,0};
  __Pyx_SetupRefcountContext("Abort");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_errorcode);
        if (unlikely(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[8]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    if (values[0]) {
      __pyx_v_errorcode = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_errorcode = 0;
    }
  } else {
    __pyx_v_errorcode = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_errorcode = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Abort");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":679
 *         .. warning:: This is a direct call, use it with care!!!.
 *         """
 *         CHKERR( MPI_Abort(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 *     # Naming Objects
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Abort(((PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_errorcode)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Abort");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":684
 *     # --------------
 * 
 *     def Get_name(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_name(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Get_name[] = "Comm.Get_name(self)\n\n        Get the print name for this communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Get_name(PyObject *__pyx_v_self, PyObject *unused) {
  char __pyx_v_name[(MPI_MAX_OBJECT_NAME + 1)];
  int __pyx_v_nlen;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_name");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":689
 *         """
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":690
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_name(((PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_name, (&__pyx_v_nlen))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":691
 *         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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_name, __pyx_v_nlen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":693
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name):             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Set_name(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_Set_name[] = "Comm.Set_name(self, name)\n\n        Set the print name for this communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_Set_name(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  char *__pyx_v_cname;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Set_name");
  __Pyx_INCREF(__pyx_v_name);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":697
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":698
 *         """
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname, NULL)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_set_name(self.ob_mpi, cname) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_name, (&__pyx_v_cname), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 698; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":699
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname, NULL)
 *         CHKERR( MPI_Comm_set_name(self.ob_mpi, cname) )             # <<<<<<<<<<<<<<
 * 
 *     property name:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_name(((PyMPICommObject *)__pyx_v_self)->ob_mpi, __pyx_v_cname)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  __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_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":703
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":704
 *         """communicator name"""
 *         def __get__(self):
 *             return self.Get_name()             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self.Set_name(value)
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":705
 *         def __get__(self):
 *             return self.Get_name()
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self.Set_name(value)
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_4Comm_4name___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4Comm_4name___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__set__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":706
 *             return self.Get_name()
 *         def __set__(self, value):
 *             self.Set_name(value)             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Set_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 706; __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 allocated */
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 706; __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_t_1 released */
  /* __pyx_t_2 released */
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  __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_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":711
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_py2f(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_py2f[] = "Comm.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_py2f(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("py2f");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":714
 *         """
 *         """
 *         return MPI_Comm_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(MPI_Comm_c2f(((PyMPICommObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":717
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_f2py[] = "Comm.f2py(cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyMPICommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  __Pyx_SetupRefcountContext("f2py");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":720
 *         """
 *         """
 *         cdef Comm comm = cls()             # <<<<<<<<<<<<<<
 *         comm.ob_mpi = MPI_Comm_f2c(arg)
 *         return comm
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPICommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":721
 *         """
 *         cdef Comm comm = cls()
 *         comm.ob_mpi = MPI_Comm_f2c(arg)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_long(__pyx_v_arg); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm->ob_mpi = MPI_Comm_f2c(__pyx_t_2);
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":722
 *         cdef 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":727
 *     # --------------------
 *     #
 *     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_send(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_send[] = "Comm.send(self, obj=None, int dest=0, int tag=0)\nSend";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_send(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;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_obj,&__pyx_kp_dest,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("send");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[0] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_obj);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_obj = Py_None;
    __pyx_v_dest = 0;
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_obj = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.send");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":729
 *     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 = ((PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":730
 *         """Send"""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_send(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 allocated */
  __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[8]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":732
 *         return PyMPI_send(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_recv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_recv[] = "Comm.recv(self, obj=None, int source=0, int tag=0, Status status=None)\nReceive";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_recv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  PyMPIStatusObject *__pyx_v_status = 0;
  MPI_Comm __pyx_v_comm;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_obj,&__pyx_kp_source,&__pyx_kp_tag,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("recv");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[0] = Py_None;
    values[3] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_obj);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_source);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[8]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_source = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = 0;
    }
    if (values[2]) {
      __pyx_v_tag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
    __pyx_v_status = ((PyMPIStatusObject *)values[3]);
  } else {
    __pyx_v_obj = Py_None;
    __pyx_v_source = 0;
    __pyx_v_tag = 0;
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 3));
      case  3: __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_source = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_obj = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.recv");
  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[8]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":734
 *     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 = ((PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":735
 *         """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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":736
 *         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 allocated */
  __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[8]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":738
 *         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_sendrecv(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_sendrecv[] = "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_sendrecv(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;
  PyMPIStatusObject *__pyx_v_status = 0;
  MPI_Comm __pyx_v_comm;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendobj,&__pyx_kp_dest,&__pyx_kp_sendtag,&__pyx_kp_recvobj,&__pyx_kp_source,&__pyx_kp_recvtag,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("sendrecv");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[7] = {0,0,0,0,0,0,0};
    values[0] = Py_None;
    values[3] = Py_None;
    values[6] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendobj);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_dest);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendtag);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvobj);
        if (unlikely(value)) { values[3] = value; kw_args--; }
      }
      case  4:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_source);
        if (unlikely(value)) { values[4] = value; kw_args--; }
      }
      case  5:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvtag);
        if (unlikely(value)) { values[5] = value; kw_args--; }
      }
      case  6:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[8]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendobj = values[0];
    if (values[1]) {
      __pyx_v_dest = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_dest = 0;
    }
    if (values[2]) {
      __pyx_v_sendtag = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_sendtag = 0;
    }
    __pyx_v_recvobj = values[3];
    if (values[4]) {
      __pyx_v_source = __pyx_PyInt_int(values[4]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_source = 0;
    }
    if (values[5]) {
      __pyx_v_recvtag = __pyx_PyInt_int(values[5]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_recvtag = 0;
    }
    __pyx_v_status = ((PyMPIStatusObject *)values[6]);
  } else {
    __pyx_v_sendobj = Py_None;
    __pyx_v_dest = 0;
    __pyx_v_sendtag = 0;
    __pyx_v_recvobj = Py_None;
    __pyx_v_source = 0;
    __pyx_v_recvtag = 0;
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  7: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 6));
      case  6: __pyx_v_recvtag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 5)); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  5: __pyx_v_source = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  4: __pyx_v_recvobj = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: __pyx_v_sendtag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_dest = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_sendobj = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.sendrecv");
  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[8]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":743
 *                  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 = ((PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":744
 *         """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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":745
 *         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);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":747
 *         return PyMPI_sendrecv(sendobj, dest,   sendtag,
 *                               recvobj, source, recvtag,
 *                               comm, statusp)             # <<<<<<<<<<<<<<
 *     #
 *     def barrier(self):
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":749
 *                               comm, statusp)
 *     #
 *     def barrier(self):             # <<<<<<<<<<<<<<
 *         "Barrier"
 *         cdef MPI_Comm comm = self.ob_mpi
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_barrier(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_barrier[] = "Comm.barrier(self)\nBarrier";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_barrier(PyObject *__pyx_v_self, PyObject *unused) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("barrier");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":751
 *     def barrier(self):
 *         "Barrier"
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_barrier(comm)
 *     #
 */
  __pyx_v_comm = ((PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":752
 *         "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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_barrier(__pyx_v_comm); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":754
 *         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_bcast(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_bcast[] = "Comm.bcast(self, obj=None, int root=0)\nBroadcast";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_bcast(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;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_obj,&__pyx_kp_root,0};
  __Pyx_SetupRefcountContext("bcast");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[0] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_obj);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_root);
        if (unlikely(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[8]; __pyx_lineno = 754; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_root = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 754; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = 0;
    }
  } else {
    __pyx_v_obj = Py_None;
    __pyx_v_root = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_root = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 754; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_obj = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 754; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.bcast");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":756
 *     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 = ((PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":757
 *         """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 allocated */
  __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[8]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":759
 *         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_gather(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_gather[] = "Comm.gather(self, sendobj=None, recvobj=None, int root=0)\nGather";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_gather(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;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendobj,&__pyx_kp_recvobj,&__pyx_kp_root,0};
  __Pyx_SetupRefcountContext("gather");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[0] = Py_None;
    values[1] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendobj);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvobj);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_root);
        if (unlikely(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[8]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
    if (values[2]) {
      __pyx_v_root = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = 0;
    }
  } else {
    __pyx_v_sendobj = Py_None;
    __pyx_v_recvobj = Py_None;
    __pyx_v_root = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_root = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_recvobj = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_sendobj = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.gather");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":761
 *     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 = ((PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":762
 *         """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 allocated */
  __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[8]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":764
 *         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_scatter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_scatter[] = "Comm.scatter(self, sendobj=None, recvobj=None, int root=0)\nScatter";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_scatter(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;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendobj,&__pyx_kp_recvobj,&__pyx_kp_root,0};
  __Pyx_SetupRefcountContext("scatter");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[0] = Py_None;
    values[1] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendobj);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvobj);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_root);
        if (unlikely(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[8]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
    if (values[2]) {
      __pyx_v_root = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = 0;
    }
  } else {
    __pyx_v_sendobj = Py_None;
    __pyx_v_recvobj = Py_None;
    __pyx_v_root = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_root = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_recvobj = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_sendobj = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.scatter");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":766
 *     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 = ((PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":767
 *         """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 allocated */
  __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[8]; __pyx_lineno = 767; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":769
 *         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_allgather(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_allgather[] = "Comm.allgather(self, sendobj=None, recvobj=None)\nGather to All";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_allgather(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;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendobj,&__pyx_kp_recvobj,0};
  __Pyx_SetupRefcountContext("allgather");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[0] = Py_None;
    values[1] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendobj);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvobj);
        if (unlikely(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[8]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
  } else {
    __pyx_v_sendobj = Py_None;
    __pyx_v_recvobj = Py_None;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_recvobj = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_sendobj = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.allgather");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":771
 *     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 = ((PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":772
 *         """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 allocated */
  __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[8]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":774
 *         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_alltoall(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_alltoall[] = "Comm.alltoall(self, sendobj=None, recvobj=None)\nAll to All Scatter/Gather";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_alltoall(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;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendobj,&__pyx_kp_recvobj,0};
  __Pyx_SetupRefcountContext("alltoall");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[0] = Py_None;
    values[1] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendobj);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvobj);
        if (unlikely(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[8]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
  } else {
    __pyx_v_sendobj = Py_None;
    __pyx_v_recvobj = Py_None;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_recvobj = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_sendobj = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.alltoall");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":776
 *     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 = ((PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":777
 *         """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 allocated */
  __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[8]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":779
 *         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_reduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_reduce[] = "Comm.reduce(self, sendobj=None, recvobj=None, op=SUM, int root=0)\nReduce";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_reduce(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;
  PyObject *__pyx_1 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendobj,&__pyx_kp_recvobj,&__pyx_kp_op,&__pyx_kp_root,0};
  __Pyx_SetupRefcountContext("reduce");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[0] = Py_None;
    values[1] = Py_None;
    values[2] = __pyx_k_67;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendobj);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvobj);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_op);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_root);
        if (unlikely(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[8]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
    __pyx_v_op = values[2];
    if (values[3]) {
      __pyx_v_root = __pyx_PyInt_int(values[3]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = 0;
    }
  } else {
    __pyx_v_sendobj = Py_None;
    __pyx_v_recvobj = Py_None;
    __pyx_v_op = __pyx_k_67;
    __pyx_v_root = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: __pyx_v_root = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  3: __pyx_v_op = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: __pyx_v_recvobj = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_sendobj = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.reduce");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_op);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":781
 *     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 allocated */
  __pyx_t_1 = (__pyx_v_op == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_op);
    __pyx_v_op = __pyx_1;
    __pyx_1 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":782
 *         """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 = ((PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":783
 *         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 allocated */
  __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[8]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.reduce");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_op);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":785
 *         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_allreduce(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4Comm_allreduce[] = "Comm.allreduce(self, sendobj=None, recvobj=None, op=SUM)\nReduce to All";
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_allreduce(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;
  PyObject *__pyx_1 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendobj,&__pyx_kp_recvobj,&__pyx_kp_op,0};
  __Pyx_SetupRefcountContext("allreduce");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[0] = Py_None;
    values[1] = Py_None;
    values[2] = __pyx_k_68;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendobj);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvobj);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_op);
        if (unlikely(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[8]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
    __pyx_v_op = values[2];
  } else {
    __pyx_v_sendobj = Py_None;
    __pyx_v_recvobj = Py_None;
    __pyx_v_op = __pyx_k_68;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_op = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: __pyx_v_recvobj = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_sendobj = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.allreduce");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_op);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":787
 *     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 allocated */
  __pyx_t_1 = (__pyx_v_op == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_op);
    __pyx_v_op = __pyx_1;
    __pyx_1 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":788
 *         """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 = ((PyMPICommObject *)__pyx_v_self)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":789
 *         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 allocated */
  __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[8]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.allreduce");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_op);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":801
 *     # -------------------------
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing intracommunicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Dup(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_Dup[] = "Intracomm.Dup(self)\n\n        Duplicate an existing intracommunicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Dup(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Dup");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":805
 *         Duplicate an existing intracommunicator
 *         """
 *         cdef Intracomm comm = type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 805; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intracomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntracommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":806
 *         """
 *         cdef Intracomm comm = type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup(((PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_3 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":807
 *         cdef Intracomm comm = 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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Dup");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":809
 *         return comm
 * 
 *     def Create(self, Group group not None):             # <<<<<<<<<<<<<<
 *         """
 *         Create intracommunicator from group
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Create(PyObject *__pyx_v_self, PyObject *__pyx_v_group); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_Create[] = "Intracomm.Create(self, Group group)\n\n        Create intracommunicator from group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Create(PyObject *__pyx_v_self, PyObject *__pyx_v_group) {
  PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Create");
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":813
 *         Create intracommunicator from group
 *         """
 *         cdef Intracomm comm = type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_create(self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 813; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intracomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntracommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":814
 *         """
 *         cdef Intracomm comm = type(self)()
 *         with nogil: CHKERR( MPI_Comm_create(self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_create(((PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, ((PyMPIGroupObject *)__pyx_v_group)->ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_3 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":815
 *         cdef Intracomm comm = type(self)()
 *         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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":817
 *         return comm
 * 
 *     def Split(self, int color=0, int key=0):             # <<<<<<<<<<<<<<
 *         """
 *         Split intracommunicator by color and key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Split(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_Split[] = "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_Split(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_color;
  int __pyx_v_key;
  PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_color,&__pyx_kp_key,0};
  __Pyx_SetupRefcountContext("Split");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_color);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_key);
        if (unlikely(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[8]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    if (values[0]) {
      __pyx_v_color = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_color == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_color = 0;
    }
    if (values[1]) {
      __pyx_v_key = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_key == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_key = 0;
    }
  } else {
    __pyx_v_color = 0;
    __pyx_v_key = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_key = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_key == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_color = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_color == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Split");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":821
 *         Split intracommunicator by color and key
 *         """
 *         cdef Intracomm comm = type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_split(self.ob_mpi, color, key, &comm.ob_mpi) )
 *         return comm
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 821; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intracomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntracommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":822
 *         """
 *         cdef Intracomm comm = type(self)()
 *         with nogil: CHKERR( MPI_Comm_split(self.ob_mpi, color, key, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_split(((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_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_3 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":823
 *         cdef Intracomm comm = type(self)()
 *         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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Split");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":825
 *         return comm
 * 
 *     def Create_cart(self, dims, periods=None, bint reorder=False):             # <<<<<<<<<<<<<<
 *         """
 *         Create cartesian communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Create_cart(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_Create_cart[] = "Intracomm.Create_cart(self, dims, periods=None, int reorder=False)\n\n        Create cartesian communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Create_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;
  PyObject *__pyx_v_tmp1 = 0;
  int *__pyx_v_iperiods;
  PyObject *__pyx_v_tmp2 = 0;
  PyMPICartcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  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;
  int __pyx_t_6;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_dims,&__pyx_kp_periods,&__pyx_kp_reorder,0};
  __Pyx_SetupRefcountContext("Create_cart");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_dims);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_periods);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_reorder);
        if (unlikely(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[8]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L3_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))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_reorder = 0;
    }
  } else {
    __pyx_v_periods = Py_None;
    __pyx_v_reorder = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_reorder = __Pyx_PyObject_IsTrue(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_reorder == (int)-1))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_periods = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_dims = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_cart");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_periods);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":829
 *         Create cartesian communicator
 *         """
 *         cdef int ndims = len(dims)             # <<<<<<<<<<<<<<
 *         cdef int *idims = NULL
 *         cdef tmp1 = asarray_int(dims, &idims, ndims)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_dims); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_ndims = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":830
 *         """
 *         cdef int ndims = len(dims)
 *         cdef int *idims = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = asarray_int(dims, &idims, ndims)
 *         if periods is None: periods = [False] * ndims
 */
  __pyx_v_idims = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":831
 *         cdef int ndims = len(dims)
 *         cdef int *idims = NULL
 *         cdef tmp1 = asarray_int(dims, &idims, ndims)             # <<<<<<<<<<<<<<
 *         if periods is None: periods = [False] * ndims
 *         cdef int *iperiods = NULL
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_dims, (&__pyx_v_idims), __pyx_v_ndims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":832
 *         cdef int *idims = NULL
 *         cdef tmp1 = asarray_int(dims, &idims, ndims)
 *         if periods is None: periods = [False] * ndims             # <<<<<<<<<<<<<<
 *         cdef int *iperiods = NULL
 *         cdef tmp2 = asarray_int(periods, &iperiods, ndims)
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = (__pyx_v_periods == Py_None);
  if (__pyx_t_3) {
    /* __pyx_t_3 released */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyInt_FromLong(__pyx_v_ndims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyNumber_Multiply(((PyObject *)__pyx_t_4), __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_4 released */
    /* __pyx_t_2 released */
    __Pyx_DECREF(__pyx_v_periods);
    __pyx_v_periods = __pyx_t_5;
    __pyx_t_5 = 0;
    /* __pyx_t_5 released */
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":833
 *         cdef tmp1 = asarray_int(dims, &idims, ndims)
 *         if periods is None: periods = [False] * ndims
 *         cdef int *iperiods = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp2 = asarray_int(periods, &iperiods, ndims)
 *         #
 */
  __pyx_v_iperiods = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":834
 *         if periods is None: periods = [False] * ndims
 *         cdef int *iperiods = NULL
 *         cdef tmp2 = asarray_int(periods, &iperiods, ndims)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Cartcomm comm = Cartcomm()
 */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_periods, (&__pyx_v_iperiods), __pyx_v_ndims); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_tmp2 = __pyx_t_5;
  __pyx_t_5 = 0;
  /* __pyx_t_5 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":836
 *         cdef tmp2 = asarray_int(periods, &iperiods, ndims)
 *         #
 *         cdef Cartcomm comm = Cartcomm()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Cart_create(self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 *         return comm
 */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Cartcomm)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (!(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6mpi4py_3MPI_Cartcomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPICartcommObject *)__pyx_t_5);
  __pyx_t_5 = 0;
  /* __pyx_t_5 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":837
 *         #
 *         cdef Cartcomm comm = Cartcomm()
 *         with nogil: CHKERR( MPI_Cart_create(self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_6 allocated */
      __pyx_t_6 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_create(((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_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L8;}
      /* __pyx_t_6 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":838
 *         cdef Cartcomm comm = Cartcomm()
 *         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_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_cart");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_DECREF(__pyx_v_periods);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":840
 *         return comm
 * 
 *     def Create_graph(self, index, edges, bint reorder=False):             # <<<<<<<<<<<<<<
 *         """
 *         Create graph communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Create_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_Create_graph[] = "Intracomm.Create_graph(self, index, edges, int reorder=False)\n\n        Create graph communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Create_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;
  PyObject *__pyx_v_tmp1 = 0;
  int __pyx_v_nedges;
  int *__pyx_v_iedges;
  PyObject *__pyx_v_tmp2 = 0;
  PyMPIGraphcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_index,&__pyx_kp_edges,&__pyx_kp_reorder,0};
  __Pyx_SetupRefcountContext("Create_graph");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_index);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_edges);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_graph", 0, 2, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_reorder);
        if (unlikely(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[8]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L3_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))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_reorder = 0;
    }
  } else {
    __pyx_v_reorder = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_reorder = __Pyx_PyObject_IsTrue(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_reorder == (int)-1))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2:
      __pyx_v_edges = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_index = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_graph");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":844
 *         Create graph communicator
 *         """
 *         cdef int nnodes = len(index)             # <<<<<<<<<<<<<<
 *         cdef int *iindex = NULL
 *         cdef tmp1 = asarray_int(index, &iindex, nnodes)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nnodes = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":845
 *         """
 *         cdef int nnodes = len(index)
 *         cdef int *iindex = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = asarray_int(index, &iindex, nnodes)
 *         cdef int nedges = len(edges)
 */
  __pyx_v_iindex = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":846
 *         cdef int nnodes = len(index)
 *         cdef int *iindex = NULL
 *         cdef tmp1 = asarray_int(index, &iindex, nnodes)             # <<<<<<<<<<<<<<
 *         cdef int nedges = len(edges)
 *         cdef int *iedges = NULL
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_index, (&__pyx_v_iindex), __pyx_v_nnodes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":847
 *         cdef int *iindex = NULL
 *         cdef tmp1 = asarray_int(index, &iindex, nnodes)
 *         cdef int nedges = len(edges)             # <<<<<<<<<<<<<<
 *         cdef int *iedges = NULL
 *         cdef tmp2 = asarray_int(edges, &iedges, nedges)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_edges); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nedges = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":848
 *         cdef tmp1 = asarray_int(index, &iindex, nnodes)
 *         cdef int nedges = len(edges)
 *         cdef int *iedges = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp2 = asarray_int(edges, &iedges, nedges)
 *         # extension: 'standard' adjacency arrays
 */
  __pyx_v_iedges = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":849
 *         cdef int nedges = len(edges)
 *         cdef int *iedges = NULL
 *         cdef tmp2 = asarray_int(edges, &iedges, nedges)             # <<<<<<<<<<<<<<
 *         # extension: 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_edges, (&__pyx_v_iedges), __pyx_v_nedges); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":851
 *         cdef tmp2 = asarray_int(edges, &iedges, nedges)
 *         # extension: 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:             # <<<<<<<<<<<<<<
 *             nnodes -= 1; iindex += 1;
 *         #
 */
  if (((__pyx_v_iindex[0]) == 0)) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = ((__pyx_v_iindex[(__pyx_v_nnodes - 1)]) == __pyx_v_nedges);
  } else {
    __pyx_t_3 = ((__pyx_v_iindex[0]) == 0);
  }
  if (__pyx_t_3) {
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":852
 *         # extension: 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 *             nnodes -= 1; iindex += 1;             # <<<<<<<<<<<<<<
 *         #
 *         cdef Graphcomm comm = Graphcomm()
 */
    __pyx_v_nnodes -= 1;
    __pyx_v_iindex += 1;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":854
 *             nnodes -= 1; iindex += 1;
 *         #
 *         cdef Graphcomm comm = Graphcomm()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Graph_create(self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 *         return comm
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Graphcomm)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Graphcomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIGraphcommObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":855
 *         #
 *         cdef Graphcomm comm = Graphcomm()
 *         with nogil: CHKERR( MPI_Graph_create(self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_4 allocated */
      __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_create(((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_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L8;}
      /* __pyx_t_4 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":856
 *         cdef Graphcomm comm = Graphcomm()
 *         with nogil: CHKERR( MPI_Graph_create(self.ob_mpi, nnodes, iindex, iedges, 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_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_graph");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":858
 *         return comm
 * 
 *     def Create_intercomm(self,             # <<<<<<<<<<<<<<
 *                          int local_leader,
 *                          Intracomm peer_comm not None,
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Create_intercomm(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_Create_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_Create_intercomm(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_local_leader;
  PyMPIIntracommObject *__pyx_v_peer_comm = 0;
  int __pyx_v_remote_leader;
  int __pyx_v_tag;
  PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_local_leader,&__pyx_kp_peer_comm,&__pyx_kp_remote_leader,&__pyx_kp_tag,0};
  __Pyx_SetupRefcountContext("Create_intercomm");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_local_leader);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_peer_comm);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_intercomm", 0, 3, 4, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_remote_leader);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Create_intercomm", 0, 3, 4, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_tag);
        if (unlikely(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[8]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_local_leader = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_local_leader == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_peer_comm = ((PyMPIIntracommObject *)values[1]);
    __pyx_v_remote_leader = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_remote_leader == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    if (values[3]) {
      __pyx_v_tag = __pyx_PyInt_int(values[3]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_tag = 0;
    }
  } else {
    __pyx_v_tag = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4:
      __pyx_v_tag = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 3)); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  3:
      __pyx_v_remote_leader = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_remote_leader == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_v_peer_comm = ((PyMPIIntracommObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      __pyx_v_local_leader = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_local_leader == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_intercomm");
  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[8]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":866
 *         Create intercommunicator
 *         """
 *         cdef Intercomm comm = Intercomm()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Intercomm_create(
 *             self.ob_mpi, local_leader,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intercomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntercommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":867
 *         """
 *         cdef Intercomm comm = Intercomm()
 *         with nogil: CHKERR( MPI_Intercomm_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, local_leader,
 *             peer_comm.ob_mpi, remote_leader,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":870
 *             self.ob_mpi, local_leader,
 *             peer_comm.ob_mpi, remote_leader,
 *             tag, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Intercomm_create(((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[8]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":871
 *             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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":878
 *     # Inclusive Scan
 * 
 *     def Scan(self, sendbuf, recvbuf, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Inclusive Scan
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Scan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_Scan[] = "Intracomm.Scan(self, sendbuf, recvbuf, Op op=SUM)\n\n        Inclusive Scan\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Scan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  PyMPIOpObject *__pyx_v_op = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,&__pyx_kp_op,0};
  __Pyx_SetupRefcountContext("Scan");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject*)__pyx_k_69;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Scan", 0, 2, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_op);
        if (unlikely(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[8]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((PyMPIOpObject *)values[2]);
  } else {
    __pyx_v_op = __pyx_k_69;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_op = ((PyMPIOpObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2:
      __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Scan");
  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[8]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":882
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 882; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":883
 *         """
 *         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_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_scan(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, ((PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":884
 *         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) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":886
 *         with nogil: CHKERR( MPI_Scan(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Exclusive Scan
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":890
 *     # Exclusive Scan
 * 
 *     def Exscan(self, sendbuf, recvbuf, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Exclusive Scan
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Exscan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_Exscan[] = "Intracomm.Exscan(self, sendbuf, recvbuf, Op op=SUM)\n\n        Exclusive Scan\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Exscan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  PyMPIOpObject *__pyx_v_op = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendbuf,&__pyx_kp_recvbuf,&__pyx_kp_op,0};
  __Pyx_SetupRefcountContext("Exscan");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject*)__pyx_k_70;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendbuf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvbuf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Exscan", 0, 2, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_op);
        if (unlikely(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[8]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((PyMPIOpObject *)values[2]);
  } else {
    __pyx_v_op = __pyx_k_70;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_op = ((PyMPIOpObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2:
      __pyx_v_recvbuf = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_sendbuf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Exscan");
  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[8]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":894
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 894; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":895
 *         """
 *         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_1 allocated */
  __pyx_t_1 = ((struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *)__pyx_v_m->__pyx_vtab)->for_exscan(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, ((PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":896
 *         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) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":898
 *         with nogil: CHKERR( MPI_Exscan(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Python Communication
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":902
 *     # 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_scan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_scan[] = "Intracomm.scan(self, sendobj=None, recvobj=None, op=SUM)\nInclusive Scan";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_scan(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;
  PyObject *__pyx_1 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendobj,&__pyx_kp_recvobj,&__pyx_kp_op,0};
  __Pyx_SetupRefcountContext("scan");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[0] = Py_None;
    values[1] = Py_None;
    values[2] = __pyx_k_71;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendobj);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvobj);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_op);
        if (unlikely(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[8]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
    __pyx_v_op = values[2];
  } else {
    __pyx_v_sendobj = Py_None;
    __pyx_v_recvobj = Py_None;
    __pyx_v_op = __pyx_k_71;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_op = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: __pyx_v_recvobj = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_sendobj = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.scan");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_op);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":904
 *     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 allocated */
  __pyx_t_1 = (__pyx_v_op == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_op);
    __pyx_v_op = __pyx_1;
    __pyx_1 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":905
 *         """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 = ((PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":906
 *         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 allocated */
  __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[8]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.scan");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_op);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":908
 *         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_exscan(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_exscan[] = "Intracomm.exscan(self, sendobj=None, recvobj=None, op=SUM)\nExclusive Scan";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_exscan(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;
  PyObject *__pyx_1 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_sendobj,&__pyx_kp_recvobj,&__pyx_kp_op,0};
  __Pyx_SetupRefcountContext("exscan");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[0] = Py_None;
    values[1] = Py_None;
    values[2] = __pyx_k_72;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_sendobj);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_recvobj);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_op);
        if (unlikely(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[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_recvobj = values[1];
    __pyx_v_op = values[2];
  } else {
    __pyx_v_sendobj = Py_None;
    __pyx_v_recvobj = Py_None;
    __pyx_v_op = __pyx_k_72;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_op = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: __pyx_v_recvobj = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_sendobj = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.exscan");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_op);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":910
 *     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 allocated */
  __pyx_t_1 = (__pyx_v_op == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_1);
    __Pyx_DECREF(__pyx_v_op);
    __pyx_v_op = __pyx_1;
    __pyx_1 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":911
 *         """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 = ((PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":912
 *         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 allocated */
  __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[8]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.exscan");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_op);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":920
 *     # Starting Processes
 * 
 *     def Spawn(self, command, args, int maxprocs=1,             # <<<<<<<<<<<<<<
 *               Info info=INFO_NULL, int root=0, errcodes=None):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_Spawn(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_Spawn[] = "Intracomm.Spawn(self, command, args, 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_Spawn(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_command = 0;
  PyObject *__pyx_v_args = 0;
  int __pyx_v_maxprocs;
  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;
  PyMPIIntercommObject *__pyx_v_comm = 0;
  int __pyx_v_i;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_command,&__pyx_kp_args,&__pyx_kp_maxprocs,&__pyx_kp_info,&__pyx_kp_root,&__pyx_kp_errcodes,0};
  __Pyx_SetupRefcountContext("Spawn");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[6] = {0,0,0,0,0,0};
    values[3] = (PyObject*)__pyx_k_73;
    values[5] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_command);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_args);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Spawn", 0, 2, 6, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_maxprocs);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_info);
        if (unlikely(value)) { values[3] = value; kw_args--; }
      }
      case  4:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_root);
        if (unlikely(value)) { values[4] = value; kw_args--; }
      }
      case  5:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_errcodes);
        if (unlikely(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[8]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_command = values[0];
    __pyx_v_args = values[1];
    if (values[2]) {
      __pyx_v_maxprocs = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_maxprocs == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_maxprocs = 1;
    }
    __pyx_v_info = ((PyMPIInfoObject *)values[3]);
    if (values[4]) {
      __pyx_v_root = __pyx_PyInt_int(values[4]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = 0;
    }
    __pyx_v_errcodes = values[5];
  } else {
    __pyx_v_maxprocs = 1;
    __pyx_v_info = __pyx_k_73;
    __pyx_v_root = 0;
    __pyx_v_errcodes = Py_None;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  6:
      __pyx_v_errcodes = PyTuple_GET_ITEM(__pyx_args, 5);
      case  5:
      __pyx_v_root = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 4)); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  4:
      __pyx_v_info = ((PyMPIInfoObject *)PyTuple_GET_ITEM(__pyx_args, 3));
      case  3:
      __pyx_v_maxprocs = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_maxprocs == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2:
      __pyx_v_args = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_command = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Spawn", 0, 2, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Spawn");
  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[8]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":925
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":926
 *         """
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":927
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":928
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":930
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE
 *         #
 *         cdef int rank = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef object tmp1 = None, tmp2 = None
 */
  __pyx_v_rank = MPI_UNDEFINED;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":931
 *         #
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         cdef object tmp1 = None, tmp2 = None
 *         if root == rank:
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(((PyMPIIntracommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":932
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef object tmp1 = None, tmp2 = None             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             command = asmpistr(command, &cmd, NULL)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_tmp1 = Py_None;
  __Pyx_INCREF(Py_None);
  __pyx_v_tmp2 = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":933
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef object tmp1 = None, tmp2 = None
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             command = asmpistr(command, &cmd, NULL)
 *             if args is not None:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (__pyx_v_root == __pyx_v_rank);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":934
 *         cdef object tmp1 = None, tmp2 = None
 *         if root == rank:
 *             command = asmpistr(command, &cmd, NULL)             # <<<<<<<<<<<<<<
 *             if args is not None:
 *                 tmp1 = asarray_argv(args, &argv)
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_command, (&__pyx_v_cmd), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 934; __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;
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":935
 *         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 allocated */
    __pyx_t_2 = (__pyx_v_args != Py_None);
    if (__pyx_t_2) {
      /* __pyx_t_2 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":936
 *             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 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asarray_argv(__pyx_v_args, (&__pyx_v_argv)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_tmp1);
      __pyx_v_tmp1 = __pyx_t_3;
      __pyx_t_3 = 0;
      /* __pyx_t_3 released */
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":937
 *             if args is not None:
 *                 tmp1 = asarray_argv(args, &argv)
 *             if errcodes is not None:             # <<<<<<<<<<<<<<
 *                 tmp2 = newarray_int(maxprocs, &ierrcodes)
 *         #
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = (__pyx_v_errcodes != Py_None);
    if (__pyx_t_2) {
      /* __pyx_t_2 released */

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":938
 *                 tmp1 = asarray_argv(args, &argv)
 *             if errcodes is not None:
 *                 tmp2 = newarray_int(maxprocs, &ierrcodes)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Intercomm comm = Intercomm()
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_maxprocs, (&__pyx_v_ierrcodes)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_tmp2);
      __pyx_v_tmp2 = __pyx_t_3;
      __pyx_t_3 = 0;
      /* __pyx_t_3 released */
      goto __pyx_L8;
    }
    __pyx_L8:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":940
 *                 tmp2 = newarray_int(maxprocs, &ierrcodes)
 *         #
 *         cdef Intercomm comm = Intercomm()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_spawn(
 *             cmd, argv, maxprocs, cinfo, root,
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (!(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Intercomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntercommObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":941
 *         #
 *         cdef Intercomm comm = Intercomm()
 *         with nogil: CHKERR( MPI_Comm_spawn(             # <<<<<<<<<<<<<<
 *             cmd, argv, maxprocs, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":944
 *             cmd, argv, maxprocs, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi,
 *             ierrcodes) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef int i = 0
 */
      /* __pyx_t_1 allocated */
      __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, ((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[8]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L10;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":946
 *             ierrcodes) )
 *         #
 *         cdef int i = 0             # <<<<<<<<<<<<<<
 *         if root == rank and (errcodes is not None):
 *             errcodes[:] = [ierrcodes[i] for i from 0<=i<maxprocs]
 */
  __pyx_v_i = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":947
 *         #
 *         cdef int i = 0
 *         if root == rank and (errcodes is not None):             # <<<<<<<<<<<<<<
 *             errcodes[:] = [ierrcodes[i] for i from 0<=i<maxprocs]
 *         #
 */
  if ((__pyx_v_root == __pyx_v_rank)) {
    /* __pyx_t_2 allocated */
    __pyx_t_2 = (__pyx_v_errcodes != Py_None);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = __pyx_t_2;
    /* __pyx_t_2 released */
  } else {
    __pyx_t_4 = (__pyx_v_root == __pyx_v_rank);
  }
  if (__pyx_t_4) {
    /* __pyx_t_4 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":948
 *         cdef int i = 0
 *         if root == rank and (errcodes is not None):
 *             errcodes[:] = [ierrcodes[i] for i from 0<=i<maxprocs]             # <<<<<<<<<<<<<<
 *         #
 *         return comm
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_maxprocs; __pyx_v_i++) {
      /* __pyx_t_5 allocated */
      __pyx_t_5 = PyInt_FromLong((__pyx_v_ierrcodes[__pyx_v_i])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      /* __pyx_t_1 allocated */
      __pyx_t_1 = PyList_Append(__pyx_t_3, (PyObject*)__pyx_t_5); if (unlikely(__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      /* __pyx_t_5 released */
      /* __pyx_t_1 released */
    }
    if (PySequence_SetSlice(__pyx_v_errcodes, 0, PY_SSIZE_T_MAX, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":950
 *             errcodes[:] = [ierrcodes[i] for i from 0<=i<maxprocs]
 *         #
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Server 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_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Spawn");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_DECREF(__pyx_v_command);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":954
 *     # 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_Accept(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_Accept[] = "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_Accept(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_port_name = 0;
  PyMPIInfoObject *__pyx_v_info = 0;
  int __pyx_v_root;
  char *__pyx_v_cportname;
  MPI_Info __pyx_v_cinfo;
  PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_port_name,&__pyx_kp_info,&__pyx_kp_root,0};
  __Pyx_SetupRefcountContext("Accept");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = (PyObject*)__pyx_k_74;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_port_name);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_info);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_root);
        if (unlikely(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[8]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_port_name = values[0];
    __pyx_v_info = ((PyMPIInfoObject *)values[1]);
    if (values[2]) {
      __pyx_v_root = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = 0;
    }
  } else {
    __pyx_v_info = __pyx_k_74;
    __pyx_v_root = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_root = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_info = ((PyMPIInfoObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_port_name = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Accept");
  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[8]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":958
 *         Accept a request to form a new intercommunicator
 *         """
 *         cdef char *cportname = NULL             # <<<<<<<<<<<<<<
 *         port_name = asmpistr(port_name, &cportname, NULL)
 *         cdef MPI_Info cinfo = _arg_Info(info)
 */
  __pyx_v_cportname = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":959
 *         """
 *         cdef char *cportname = NULL
 *         port_name = asmpistr(port_name, &cportname, NULL)             # <<<<<<<<<<<<<<
 *         cdef MPI_Info cinfo = _arg_Info(info)
 *         cdef Intercomm comm = Intercomm()
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 959; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":960
 *         cdef char *cportname = NULL
 *         port_name = asmpistr(port_name, &cportname, NULL)
 *         cdef MPI_Info cinfo = _arg_Info(info)             # <<<<<<<<<<<<<<
 *         cdef Intercomm comm = Intercomm()
 *         with nogil: CHKERR( MPI_Comm_accept(
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI__arg_Info(((PyObject *)__pyx_v_info));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":961
 *         port_name = asmpistr(port_name, &cportname, NULL)
 *         cdef MPI_Info cinfo = _arg_Info(info)
 *         cdef Intercomm comm = Intercomm()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_accept(
 *             cportname, cinfo, root,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intercomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntercommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":962
 *         cdef MPI_Info cinfo = _arg_Info(info)
 *         cdef Intercomm comm = Intercomm()
 *         with nogil: CHKERR( MPI_Comm_accept(             # <<<<<<<<<<<<<<
 *             cportname, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":964
 *         with nogil: CHKERR( MPI_Comm_accept(
 *             cportname, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_accept(__pyx_v_cportname, __pyx_v_cinfo, __pyx_v_root, ((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[8]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":965
 *             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_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Accept");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_DECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":969
 *     # 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_Connect(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intracomm_Connect[] = "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_Connect(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_port_name = 0;
  PyMPIInfoObject *__pyx_v_info = 0;
  int __pyx_v_root;
  char *__pyx_v_cportname;
  MPI_Info __pyx_v_cinfo;
  PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_port_name,&__pyx_kp_info,&__pyx_kp_root,0};
  __Pyx_SetupRefcountContext("Connect");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = (PyObject*)__pyx_k_75;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_port_name);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_info);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_root);
        if (unlikely(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[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_port_name = values[0];
    __pyx_v_info = ((PyMPIInfoObject *)values[1]);
    if (values[2]) {
      __pyx_v_root = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_root = 0;
    }
  } else {
    __pyx_v_info = __pyx_k_75;
    __pyx_v_root = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_root = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2: __pyx_v_info = ((PyMPIInfoObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_port_name = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Connect");
  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[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":973
 *         Make a request to form a new intercommunicator
 *         """
 *         cdef char *cportname = NULL             # <<<<<<<<<<<<<<
 *         port_name = asmpistr(port_name, &cportname, NULL)
 *         cdef MPI_Info cinfo = _arg_Info(info)
 */
  __pyx_v_cportname = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":974
 *         """
 *         cdef char *cportname = NULL
 *         port_name = asmpistr(port_name, &cportname, NULL)             # <<<<<<<<<<<<<<
 *         cdef MPI_Info cinfo = _arg_Info(info)
 *         cdef Intercomm comm = Intercomm()
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 974; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":975
 *         cdef char *cportname = NULL
 *         port_name = asmpistr(port_name, &cportname, NULL)
 *         cdef MPI_Info cinfo = _arg_Info(info)             # <<<<<<<<<<<<<<
 *         cdef Intercomm comm = Intercomm()
 *         with nogil: CHKERR( MPI_Comm_connect(
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI__arg_Info(((PyObject *)__pyx_v_info));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":976
 *         port_name = asmpistr(port_name, &cportname, NULL)
 *         cdef MPI_Info cinfo = _arg_Info(info)
 *         cdef Intercomm comm = Intercomm()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_connect(
 *             cportname, cinfo, root,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intercomm)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intercomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntercommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":977
 *         cdef MPI_Info cinfo = _arg_Info(info)
 *         cdef Intercomm comm = Intercomm()
 *         with nogil: CHKERR( MPI_Comm_connect(             # <<<<<<<<<<<<<<
 *             cportname, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":979
 *         with nogil: CHKERR( MPI_Comm_connect(
 *             cportname, cinfo, root,
 *             self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_connect(__pyx_v_cportname, __pyx_v_cinfo, __pyx_v_root, ((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[8]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":980
 *             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_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Connect");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_DECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":992
 *     # -------------------------
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Dup(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_Dup[] = "Cartcomm.Dup(self)\n\n        Duplicate an existing communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Dup(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Dup");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":996
 *         Duplicate an existing communicator
 *         """
 *         cdef Intracomm comm = type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 996; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intracomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntracommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":997
 *         """
 *         cdef Intracomm comm = type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup(((PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_3 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":998
 *         cdef Intracomm comm = 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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Dup");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1003
 *     # ---------------------------
 * 
 *     def Get_dim(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return number of dimensions
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Get_dim(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_Get_dim[] = "Cartcomm.Get_dim(self)\n\n        Return number of dimensions\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Get_dim(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_dim;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_dim");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1007
 *         Return number of dimensions
 *         """
 *         cdef int dim = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &dim) )
 *         return dim
 */
  __pyx_v_dim = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1008
 *         """
 *         cdef int dim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &dim) )             # <<<<<<<<<<<<<<
 *         return dim
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(((PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_dim))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1009
 *         cdef int dim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &dim) )
 *         return dim             # <<<<<<<<<<<<<<
 * 
 *     property dim:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_dim); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1013
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1014
 *         """number of dimensions"""
 *         def __get__(self):
 *             return self.Get_dim()             # <<<<<<<<<<<<<<
 * 
 *     property ndim:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_dim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1018
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1019
 *         """number of dimensions"""
 *         def __get__(self):
 *             return self.Get_dim()             # <<<<<<<<<<<<<<
 * 
 *     def Get_topo(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_dim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1021
 *             return self.Get_dim()
 * 
 *     def Get_topo(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return information on the cartesian topology
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Get_topo(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_Get_topo[] = "Cartcomm.Get_topo(self)\n\n        Return information on the cartesian topology\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Get_topo(PyObject *__pyx_v_self, PyObject *unused) {
  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;
  PyObject *__pyx_v_periods;
  PyObject *__pyx_v_coords;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("Get_topo");
  __pyx_v_dims = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_periods = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_coords = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1025
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1026
 *         """
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(((PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_ndim))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1027
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1028
 *         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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_ndim, (&__pyx_v_idims)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1029
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1030
 *         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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_ndim, (&__pyx_v_iperiods)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1031
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1032
 *         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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_ndim, (&__pyx_v_icoords)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp3 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1033
 *         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
 *         dims    = [idims[i]    for i from 0 <= i < ndim]
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_get(((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[8]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1034
 *         cdef tmp3 = newarray_int(ndim, &icoords)
 *         CHKERR( MPI_Cart_get(self.ob_mpi, ndim, idims, iperiods, icoords) )
 *         cdef int i = 0             # <<<<<<<<<<<<<<
 *         dims    = [idims[i]    for i from 0 <= i < ndim]
 *         periods = [iperiods[i] for i from 0 <= i < ndim]
 */
  __pyx_v_i = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1035
 *         CHKERR( MPI_Cart_get(self.ob_mpi, ndim, idims, iperiods, icoords) )
 *         cdef int i = 0
 *         dims    = [idims[i]    for i from 0 <= i < ndim]             # <<<<<<<<<<<<<<
 *         periods = [iperiods[i] for i from 0 <= i < ndim]
 *         coords  = [icoords[i]  for i from 0 <= i < ndim]
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_ndim; __pyx_v_i++) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyInt_FromLong((__pyx_v_idims[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_1 allocated */
    __pyx_t_1 = PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3); if (unlikely(__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_1 released */
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __Pyx_DECREF(__pyx_v_dims);
  __pyx_v_dims = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1036
 *         cdef int i = 0
 *         dims    = [idims[i]    for i from 0 <= i < ndim]
 *         periods = [iperiods[i] for i from 0 <= i < ndim]             # <<<<<<<<<<<<<<
 *         coords  = [icoords[i]  for i from 0 <= i < ndim]
 *         return (dims, periods, coords)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_ndim; __pyx_v_i++) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyInt_FromLong((__pyx_v_iperiods[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_1 allocated */
    __pyx_t_1 = PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3); if (unlikely(__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_1 released */
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __Pyx_DECREF(__pyx_v_periods);
  __pyx_v_periods = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1037
 *         dims    = [idims[i]    for i from 0 <= i < ndim]
 *         periods = [iperiods[i] for i from 0 <= i < ndim]
 *         coords  = [icoords[i]  for i from 0 <= i < ndim]             # <<<<<<<<<<<<<<
 *         return (dims, periods, coords)
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_ndim; __pyx_v_i++) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyInt_FromLong((__pyx_v_icoords[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_1 allocated */
    __pyx_t_1 = PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3); if (unlikely(__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_1 released */
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __Pyx_DECREF(__pyx_v_coords);
  __pyx_v_coords = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1038
 *         periods = [iperiods[i] for i from 0 <= i < ndim]
 *         coords  = [icoords[i]  for i from 0 <= i < ndim]
 *         return (dims, periods, coords)             # <<<<<<<<<<<<<<
 * 
 *     property topo:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1038; __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;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XDECREF(__pyx_v_tmp3);
  __Pyx_DECREF(__pyx_v_dims);
  __Pyx_DECREF(__pyx_v_periods);
  __Pyx_DECREF(__pyx_v_coords);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1042
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1043
 *         """topology information"""
 *         def __get__(self):
 *             return self.Get_topo()             # <<<<<<<<<<<<<<
 * 
 *     property dims:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1047
 *     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;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1048
 *         """dimensions"""
 *         def __get__(self):
 *             return self.Get_topo()[0]             # <<<<<<<<<<<<<<
 * 
 *     property periods:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_1 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.dims.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1052
 *     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;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1053
 *         """periodicity"""
 *         def __get__(self):
 *             return self.Get_topo()[1]             # <<<<<<<<<<<<<<
 * 
 *     property coords:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_1 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.periods.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1057
 *     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;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1058
 *         """coordinates"""
 *         def __get__(self):
 *             return self.Get_topo()[2]             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_1 = __Pyx_GetItemInt(__pyx_t_2, 2, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.coords.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1064
 *     # ------------------------------
 * 
 *     def Get_cart_rank(self, coords):             # <<<<<<<<<<<<<<
 *         """
 *         Translate logical coordinates to ranks
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Get_cart_rank(PyObject *__pyx_v_self, PyObject *__pyx_v_coords); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_Get_cart_rank[] = "Cartcomm.Get_cart_rank(self, coords)\n\n        Translate logical coordinates to ranks\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Get_cart_rank(PyObject *__pyx_v_self, PyObject *__pyx_v_coords) {
  int __pyx_v_ndim;
  int *__pyx_v_icoords;
  PyObject *__pyx_v_tmp = 0;
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_cart_rank");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1068
 *         Translate logical coordinates to ranks
 *         """
 *         cdef int ndim = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get( self.ob_mpi, &ndim) )
 *         #
 */
  __pyx_v_ndim = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1069
 *         """
 *         cdef int ndim = 0
 *         CHKERR( MPI_Cartdim_get( self.ob_mpi, &ndim) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef int *icoords = NULL
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(((PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_ndim))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1071
 *         CHKERR( MPI_Cartdim_get( self.ob_mpi, &ndim) )
 *         #
 *         cdef int *icoords = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp = asarray_int(coords, &icoords, ndim)
 *         cdef int rank = MPI_PROC_NULL
 */
  __pyx_v_icoords = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1072
 *         #
 *         cdef int *icoords = NULL
 *         cdef tmp = asarray_int(coords, &icoords, ndim)             # <<<<<<<<<<<<<<
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_rank(self.ob_mpi, icoords, &rank) )
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_coords, (&__pyx_v_icoords), __pyx_v_ndim); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1073
 *         cdef int *icoords = NULL
 *         cdef tmp = asarray_int(coords, &icoords, ndim)
 *         cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cart_rank(self.ob_mpi, icoords, &rank) )
 *         return rank
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1074
 *         cdef tmp = asarray_int(coords, &icoords, ndim)
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_rank(self.ob_mpi, icoords, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_rank(((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[8]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1075
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1077
 *         return rank
 * 
 *     def Get_coords(self, int rank):             # <<<<<<<<<<<<<<
 *         """
 *         Translate ranks to logical coordinates
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Get_coords(PyObject *__pyx_v_self, PyObject *__pyx_arg_rank); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_Get_coords[] = "Cartcomm.Get_coords(self, int rank)\n\n        Translate ranks to logical coordinates\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Get_coords(PyObject *__pyx_v_self, PyObject *__pyx_arg_rank) {
  int __pyx_v_rank;
  int __pyx_v_ndim;
  int *__pyx_v_icoords;
  PyObject *__pyx_v_tmp = 0;
  int __pyx_v_i;
  PyObject *__pyx_v_coords;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("Get_coords");
  assert(__pyx_arg_rank); {
    __pyx_v_rank = __pyx_PyInt_int(__pyx_arg_rank); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_coords");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_coords = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1081
 *         Translate ranks to logical coordinates
 *         """
 *         cdef int ndim = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef int *icoords = NULL
 */
  __pyx_v_ndim = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1082
 *         """
 *         cdef int ndim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )             # <<<<<<<<<<<<<<
 *         cdef int *icoords = NULL
 *         cdef tmp = newarray_int(ndim, &icoords)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(((PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_ndim))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1083
 *         cdef int ndim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef int *icoords = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp = newarray_int(ndim, &icoords)
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )
 */
  __pyx_v_icoords = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1084
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef int *icoords = NULL
 *         cdef tmp = newarray_int(ndim, &icoords)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )
 *         cdef int i = 0
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_ndim, (&__pyx_v_icoords)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1085
 *         cdef int *icoords = NULL
 *         cdef tmp = newarray_int(ndim, &icoords)
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )             # <<<<<<<<<<<<<<
 *         cdef int i = 0
 *         coords  = [icoords[i] for i from 0 <= i < ndim]
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_coords(((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[8]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1086
 *         cdef tmp = newarray_int(ndim, &icoords)
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )
 *         cdef int i = 0             # <<<<<<<<<<<<<<
 *         coords  = [icoords[i] for i from 0 <= i < ndim]
 *         return coords
 */
  __pyx_v_i = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1087
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )
 *         cdef int i = 0
 *         coords  = [icoords[i] for i from 0 <= i < ndim]             # <<<<<<<<<<<<<<
 *         return coords
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_ndim; __pyx_v_i++) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyInt_FromLong((__pyx_v_icoords[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_1 allocated */
    __pyx_t_1 = PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3); if (unlikely(__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_1 released */
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __Pyx_DECREF(__pyx_v_coords);
  __pyx_v_coords = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1088
 *         cdef int i = 0
 *         coords  = [icoords[i] for i from 0 <= i < ndim]
 *         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_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_coords");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_DECREF(__pyx_v_coords);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1093
 *     # ------------------------
 * 
 *     def Shift(self, int direction, int disp):             # <<<<<<<<<<<<<<
 *         """
 *         Return a tuple (source,dest) of process ranks
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Shift(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_Shift[] = "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_Shift(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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_direction,&__pyx_kp_disp,0};
  __Pyx_SetupRefcountContext("Shift");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_direction);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_disp);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Shift", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1093; __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[8]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_direction = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_disp = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_disp == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_direction = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_disp = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_disp == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1093; __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[8]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Shift");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1098
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1099
 *         """
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_shift(((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[8]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1100
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_source); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(__pyx_v_dest); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1100; __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_t_2 released */
  /* __pyx_t_3 released */
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1105
 *     # ----------------------------
 * 
 *     def Sub(self, remain_dims):             # <<<<<<<<<<<<<<
 *         """
 *         Return cartesian communicators
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Sub(PyObject *__pyx_v_self, PyObject *__pyx_v_remain_dims); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_Sub[] = "Cartcomm.Sub(self, remain_dims)\n\n        Return cartesian communicators\n        that form lower-dimensional subgrids\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Sub(PyObject *__pyx_v_self, PyObject *__pyx_v_remain_dims) {
  int __pyx_v_ndim;
  int *__pyx_v_iremdims;
  PyObject *__pyx_v_tmp = 0;
  PyMPICartcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Sub");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1110
 *         that form lower-dimensional subgrids
 *         """
 *         cdef int ndim = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef int *iremdims = NULL
 */
  __pyx_v_ndim = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1111
 *         """
 *         cdef int ndim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )             # <<<<<<<<<<<<<<
 *         cdef int *iremdims = NULL
 *         cdef tmp = asarray_int(remain_dims, &iremdims, ndim)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(((PyMPICartcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_ndim))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1112
 *         cdef int ndim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef int *iremdims = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp = asarray_int(remain_dims, &iremdims, ndim)
 *         cdef Cartcomm comm = Cartcomm()
 */
  __pyx_v_iremdims = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1113
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef int *iremdims = NULL
 *         cdef tmp = asarray_int(remain_dims, &iremdims, ndim)             # <<<<<<<<<<<<<<
 *         cdef Cartcomm comm = Cartcomm()
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_remain_dims, (&__pyx_v_iremdims), __pyx_v_ndim); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1114
 *         cdef int *iremdims = NULL
 *         cdef tmp = asarray_int(remain_dims, &iremdims, ndim)
 *         cdef Cartcomm comm = Cartcomm()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )
 *         return comm
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Cartcomm)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Cartcomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPICartcommObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1115
 *         cdef tmp = asarray_int(remain_dims, &iremdims, ndim)
 *         cdef Cartcomm comm = Cartcomm()
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_sub(((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[8]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1116
 *         cdef Cartcomm comm = 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1122
 *     # -----------------------------
 * 
 *     def Map(self, dims, periods=None):             # <<<<<<<<<<<<<<
 *         """
 *         Return an optimal placement for the
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_Map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_8Cartcomm_Map[] = "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_Map(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;
  PyObject *__pyx_v_tmp1 = 0;
  int *__pyx_v_iperiods;
  PyObject *__pyx_v_tmp2 = 0;
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  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;
  int __pyx_t_6;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_dims,&__pyx_kp_periods,0};
  __Pyx_SetupRefcountContext("Map");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_dims);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_periods);
        if (unlikely(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[8]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_dims = values[0];
    __pyx_v_periods = values[1];
  } else {
    __pyx_v_periods = Py_None;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_periods = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_dims = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Map");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_periods);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1127
 *         calling process on the physical machine
 *         """
 *         cdef int ndims = len(dims)             # <<<<<<<<<<<<<<
 *         cdef int *idims = NULL
 *         cdef tmp1 = asarray_int(dims, &idims, ndims)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_dims); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_ndims = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1128
 *         """
 *         cdef int ndims = len(dims)
 *         cdef int *idims = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = asarray_int(dims, &idims, ndims)
 *         if periods is None: periods = [False] * ndims
 */
  __pyx_v_idims = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1129
 *         cdef int ndims = len(dims)
 *         cdef int *idims = NULL
 *         cdef tmp1 = asarray_int(dims, &idims, ndims)             # <<<<<<<<<<<<<<
 *         if periods is None: periods = [False] * ndims
 *         cdef int *iperiods = NULL
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_dims, (&__pyx_v_idims), __pyx_v_ndims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1130
 *         cdef int *idims = NULL
 *         cdef tmp1 = asarray_int(dims, &idims, ndims)
 *         if periods is None: periods = [False] * ndims             # <<<<<<<<<<<<<<
 *         cdef int *iperiods = NULL
 *         cdef tmp2 = asarray_int(periods, &iperiods, ndims)
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = (__pyx_v_periods == Py_None);
  if (__pyx_t_3) {
    /* __pyx_t_3 released */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    /* __pyx_t_2 released */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyInt_FromLong(__pyx_v_ndims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    /* __pyx_t_5 allocated */
    __pyx_t_5 = PyNumber_Multiply(((PyObject *)__pyx_t_4), __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* __pyx_t_4 released */
    /* __pyx_t_2 released */
    __Pyx_DECREF(__pyx_v_periods);
    __pyx_v_periods = __pyx_t_5;
    __pyx_t_5 = 0;
    /* __pyx_t_5 released */
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1131
 *         cdef tmp1 = asarray_int(dims, &idims, ndims)
 *         if periods is None: periods = [False] * ndims
 *         cdef int *iperiods = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp2 = asarray_int(periods, &iperiods, ndims)
 *         cdef int rank = MPI_PROC_NULL
 */
  __pyx_v_iperiods = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1132
 *         if periods is None: periods = [False] * ndims
 *         cdef int *iperiods = NULL
 *         cdef tmp2 = asarray_int(periods, &iperiods, ndims)             # <<<<<<<<<<<<<<
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_map(self.ob_mpi, ndims, idims, iperiods, &rank) )
 */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_periods, (&__pyx_v_iperiods), __pyx_v_ndims); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_tmp2 = __pyx_t_5;
  __pyx_t_5 = 0;
  /* __pyx_t_5 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1133
 *         cdef int *iperiods = NULL
 *         cdef tmp2 = asarray_int(periods, &iperiods, ndims)
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1134
 *         cdef tmp2 = asarray_int(periods, &iperiods, ndims)
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_map(self.ob_mpi, ndims, idims, iperiods, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  /* __pyx_t_6 allocated */
  __pyx_t_6 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_map(((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_6 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_6 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1135
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_map(self.ob_mpi, ndims, idims, iperiods, &rank) )
 *         return rank             # <<<<<<<<<<<<<<
 * 
 * # Cartesian Convenience Function
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_5 allocated */
  __pyx_t_5 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  /* __pyx_t_5 released */
  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_AddTraceback("mpi4py.MPI.Cartcomm.Map");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_DECREF(__pyx_v_periods);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1139
 * # Cartesian Convenience Function
 * 
 * def Compute_dims(int nnodes, dims):             # <<<<<<<<<<<<<<
 *     """
 *     Return a balanced distribution of
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Compute_dims(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Compute_dims[] = "Compute_dims(int nnodes, dims)\n\n    Return a balanced distribution of\n    processes per coordinate direction\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Compute_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_v_tmp = 0;
  int __pyx_v_i;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  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;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_nnodes,&__pyx_kp_dims,0};
  __Pyx_SetupRefcountContext("Compute_dims");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_nnodes);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_dims);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Compute_dims", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1139; __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[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_nnodes = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_nnodes == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_dims = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_nnodes = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_nnodes == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_dims = PyTuple_GET_ITEM(__pyx_args, 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[8]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Compute_dims");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_dims);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1144
 *     processes per coordinate direction
 *     """
 *     cdef int ndims, *idims = NULL             # <<<<<<<<<<<<<<
 *     try: ndims = len(dims)
 *     except: ndims = dims; dims = [0] * ndims
 */
  __pyx_v_idims = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1145
 *     """
 *     cdef int ndims, *idims = NULL
 *     try: ndims = len(dims)             # <<<<<<<<<<<<<<
 *     except: ndims = dims; dims = [0] * ndims
 *     cdef tmp = asarray_int(dims, &idims, ndims)
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = PyObject_Length(__pyx_v_dims); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __pyx_v_ndims = __pyx_t_1;
      /* __pyx_t_1 released */
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L13_try_end;
    __pyx_L6_error:;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1146
 *     cdef int ndims, *idims = NULL
 *     try: ndims = len(dims)
 *     except: ndims = dims; dims = [0] * ndims             # <<<<<<<<<<<<<<
 *     cdef tmp = asarray_int(dims, &idims, ndims)
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.Compute_dims");
      if (__Pyx_GetException(&__pyx_1, &__pyx_2, &__pyx_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_2);
      __Pyx_GOTREF(__pyx_3);
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_PyInt_int(__pyx_v_dims); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __pyx_v_ndims = __pyx_t_2;
      /* __pyx_t_2 released */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      __Pyx_INCREF(__pyx_int_0);
      PyList_SET_ITEM(__pyx_t_3, 0, __pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      /* __pyx_t_4 allocated */
      __pyx_t_4 = PyInt_FromLong(__pyx_v_ndims); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_4);
      /* __pyx_t_5 allocated */
      __pyx_t_5 = PyNumber_Multiply(((PyObject *)__pyx_t_3), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      /* __pyx_t_3 released */
      /* __pyx_t_4 released */
      __Pyx_DECREF(__pyx_v_dims);
      __pyx_v_dims = __pyx_t_5;
      __pyx_t_5 = 0;
      /* __pyx_t_5 released */
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
      __Pyx_DECREF(__pyx_3); __pyx_3 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XDECREF(__pyx_save_exc_type);
    __Pyx_XDECREF(__pyx_save_exc_value);
    __Pyx_XDECREF(__pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L13_try_end:;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1147
 *     try: ndims = len(dims)
 *     except: ndims = dims; dims = [0] * ndims
 *     cdef tmp = asarray_int(dims, &idims, ndims)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )
 *     cdef int i = 0
 */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_dims, (&__pyx_v_idims), __pyx_v_ndims); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_tmp = __pyx_t_5;
  __pyx_t_5 = 0;
  /* __pyx_t_5 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1148
 *     except: ndims = dims; dims = [0] * ndims
 *     cdef tmp = asarray_int(dims, &idims, ndims)
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )             # <<<<<<<<<<<<<<
 *     cdef int i = 0
 *     return [idims[i] for i from 0 <= i < ndims]
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dims_create(__pyx_v_nnodes, __pyx_v_ndims, __pyx_v_idims)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1149
 *     cdef tmp = asarray_int(dims, &idims, ndims)
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )
 *     cdef int i = 0             # <<<<<<<<<<<<<<
 *     return [idims[i] for i from 0 <= i < ndims]
 * 
 */
  __pyx_v_i = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1150
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )
 *     cdef int i = 0
 *     return [idims[i] for i from 0 <= i < ndims]             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_5 allocated */
  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_ndims; __pyx_v_i++) {
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyInt_FromLong((__pyx_v_idims[__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    /* __pyx_t_2 allocated */
    __pyx_t_2 = PyList_Append(__pyx_t_5, (PyObject*)__pyx_t_4); if (unlikely(__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    /* __pyx_t_2 released */
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_5));
  __pyx_r = ((PyObject *)__pyx_t_5);
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  /* __pyx_t_5 released */
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_3);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Compute_dims");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_DECREF(__pyx_v_dims);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1162
 *     # -------------------------
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing communicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_Dup(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Graphcomm_Dup[] = "Graphcomm.Dup(self)\n\n        Duplicate an existing communicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_Dup(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Dup");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1166
 *         Duplicate an existing communicator
 *         """
 *         cdef Intracomm comm = type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_dup(
 *             self.ob_mpi, &comm.ob_mpi) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1166; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intracomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntracommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1167
 *         """
 *         cdef Intracomm comm = type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1168
 *         cdef Intracomm comm = type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(
 *             self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup(((PyMPIGraphcommObject *)__pyx_v_self)->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_3 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1169
 *         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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Dup");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1174
 *     # -----------------------
 * 
 *     def Get_dims(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of nodes and edges
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_Get_dims(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Graphcomm_Get_dims[] = "Graphcomm.Get_dims(self)\n\n        Return the number of nodes and edges\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_Get_dims(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_nnodes;
  int __pyx_v_nedges;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("Get_dims");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1178
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1179
 *         """
 *         cdef int nnodes = 0, nedges = 0
 *         CHKERR( MPI_Graphdims_get(self.ob_mpi, &nnodes, &nedges) )             # <<<<<<<<<<<<<<
 *         return (nnodes, nedges)
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graphdims_get(((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[8]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1180
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_nnodes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(__pyx_v_nedges); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1180; __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_t_2 released */
  /* __pyx_t_3 released */
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1184
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1185
 *         """number of nodes and edges"""
 *         def __get__(self):
 *             return self.Get_topo()             # <<<<<<<<<<<<<<
 * 
 *     property nnodes:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1189
 *     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;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1190
 *         """number of nodes"""
 *         def __get__(self):
 *             return self.Get_topo()[0]             # <<<<<<<<<<<<<<
 * 
 *     property nedges:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_1 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.nnodes.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1194
 *     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;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1195
 *         """number of edges"""
 *         def __get__(self):
 *             return self.Get_topo()[1]             # <<<<<<<<<<<<<<
 * 
 *     def Get_topo(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_1 = __Pyx_GetItemInt(__pyx_t_2, 1, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.nedges.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1197
 *             return self.Get_topo()[1]
 * 
 *     def Get_topo(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return index and edges
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_Get_topo(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Graphcomm_Get_topo[] = "Graphcomm.Get_topo(self)\n\n        Return index and edges\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_Get_topo(PyObject *__pyx_v_self, PyObject *unused) {
  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;
  PyObject *__pyx_v_edges;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("Get_topo");
  __pyx_v_index = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_edges = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1201
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1202
 *         """
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graphdims_get(((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[8]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1203
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1204
 *         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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_nindex, (&__pyx_v_iindex)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1205
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1206
 *         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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_nedges, (&__pyx_v_iedges)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1207
 *         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
 *         index = [iindex[i] for i from 0 <= i < nindex]
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_get(((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[8]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1208
 *         cdef tmp2 = newarray_int(nedges, &iedges)
 *         CHKERR( MPI_Graph_get(self.ob_mpi, nindex, nedges, iindex, iedges) )
 *         cdef int i = 0             # <<<<<<<<<<<<<<
 *         index = [iindex[i] for i from 0 <= i < nindex]
 *         edges = [iedges[i] for i from 0 <= i < nedges]
 */
  __pyx_v_i = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1209
 *         CHKERR( MPI_Graph_get(self.ob_mpi, nindex, nedges, iindex, iedges) )
 *         cdef int i = 0
 *         index = [iindex[i] for i from 0 <= i < nindex]             # <<<<<<<<<<<<<<
 *         edges = [iedges[i] for i from 0 <= i < nedges]
 *         return (index, edges)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_nindex; __pyx_v_i++) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyInt_FromLong((__pyx_v_iindex[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_1 allocated */
    __pyx_t_1 = PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3); if (unlikely(__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_1 released */
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __Pyx_DECREF(__pyx_v_index);
  __pyx_v_index = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1210
 *         cdef int i = 0
 *         index = [iindex[i] for i from 0 <= i < nindex]
 *         edges = [iedges[i] for i from 0 <= i < nedges]             # <<<<<<<<<<<<<<
 *         return (index, edges)
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_nedges; __pyx_v_i++) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyInt_FromLong((__pyx_v_iedges[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_1 allocated */
    __pyx_t_1 = PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3); if (unlikely(__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_1 released */
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __Pyx_DECREF(__pyx_v_edges);
  __pyx_v_edges = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1211
 *         index = [iindex[i] for i from 0 <= i < nindex]
 *         edges = [iedges[i] for i from 0 <= i < nedges]
 *         return (index, edges)             # <<<<<<<<<<<<<<
 * 
 *     property topo:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1211; __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;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_DECREF(__pyx_v_index);
  __Pyx_DECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1215
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1216
 *         """topology information"""
 *         def __get__(self):
 *             return self.Get_topo()             # <<<<<<<<<<<<<<
 * 
 *     property index:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1220
 *     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;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1221
 *         """index"""
 *         def __get__(self):
 *             return self.Get_topo()[0]             # <<<<<<<<<<<<<<
 * 
 *     property edges:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_1 = __Pyx_GetItemInt(__pyx_t_2, 0, sizeof(long), PyInt_FromLong); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.index.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1225
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1226
 *         """edges"""
 *         def __get__(self):
 *             return self.Get_topo()             # <<<<<<<<<<<<<<
 * 
 *     # Graph Information Functions
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_topo); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1231
 *     # ---------------------------
 * 
 *     def Get_neighbors_count(self, int rank):             # <<<<<<<<<<<<<<
 *         """
 *         Return number of neighbors of a process
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_Get_neighbors_count(PyObject *__pyx_v_self, PyObject *__pyx_arg_rank); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Graphcomm_Get_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_Get_neighbors_count(PyObject *__pyx_v_self, PyObject *__pyx_arg_rank) {
  int __pyx_v_rank;
  int __pyx_v_nneighbors;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_neighbors_count");
  assert(__pyx_arg_rank); {
    __pyx_v_rank = __pyx_PyInt_int(__pyx_arg_rank); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_neighbors_count");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1235
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1236
 *         """
 *         cdef int nneighbors = 0
 *         CHKERR( MPI_Graph_neighbors_count(self.ob_mpi, rank, &nneighbors) )             # <<<<<<<<<<<<<<
 *         return nneighbors
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_neighbors_count(((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[8]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1237
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_nneighbors); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1241
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1242
 *         """number of neighbors"""
 *         def __get__(self):
 *             cdef int rank = self.Get_rank()             # <<<<<<<<<<<<<<
 *             return self.Get_neighbors_count(rank)
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_rank); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_PyInt_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  __pyx_v_rank = __pyx_t_3;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1243
 *         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 allocated */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_neighbors_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1243; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1243; __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_t_2 released */
  /* __pyx_t_4 released */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1245
 *             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_Get_neighbors(PyObject *__pyx_v_self, PyObject *__pyx_arg_rank); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Graphcomm_Get_neighbors[] = "Graphcomm.Get_neighbors(self, int rank)\n\n        Return list of neighbors of a process\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_Get_neighbors(PyObject *__pyx_v_self, PyObject *__pyx_arg_rank) {
  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;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("Get_neighbors");
  assert(__pyx_arg_rank); {
    __pyx_v_rank = __pyx_PyInt_int(__pyx_arg_rank); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1245; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_neighbors");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_neighbors = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1249
 *         Return list of neighbors of a process
 *         """
 *         cdef int nneighbors = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Graph_neighbors_count(
 *             self.ob_mpi, rank, &nneighbors) )
 */
  __pyx_v_nneighbors = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1250
 *         """
 *         cdef int nneighbors = 0
 *         with nogil: CHKERR( MPI_Graph_neighbors_count(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, rank, &nneighbors) )
 *         cdef int *ineighbors = NULL
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1251
 *         cdef int nneighbors = 0
 *         with nogil: CHKERR( MPI_Graph_neighbors_count(
 *             self.ob_mpi, rank, &nneighbors) )             # <<<<<<<<<<<<<<
 *         cdef int *ineighbors = NULL
 *         cdef tmp = newarray_int(nneighbors, &ineighbors)
 */
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_neighbors_count(((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[8]; __pyx_lineno = 1250; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1252
 *         with nogil: CHKERR( MPI_Graph_neighbors_count(
 *             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_v_ineighbors = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1253
 *             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) )
 *         cdef int i = 0
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_newarray_int(__pyx_v_nneighbors, (&__pyx_v_ineighbors)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1254
 *         cdef int *ineighbors = NULL
 *         cdef tmp = newarray_int(nneighbors, &ineighbors)
 *         CHKERR( MPI_Graph_neighbors(self.ob_mpi, rank, nneighbors, ineighbors) )             # <<<<<<<<<<<<<<
 *         cdef int i = 0
 *         neighbors = [ineighbors[i] for i from 0 <= i < nneighbors]
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_neighbors(((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[8]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1255
 *         cdef tmp = newarray_int(nneighbors, &ineighbors)
 *         CHKERR( MPI_Graph_neighbors(self.ob_mpi, rank, nneighbors, ineighbors) )
 *         cdef int i = 0             # <<<<<<<<<<<<<<
 *         neighbors = [ineighbors[i] for i from 0 <= i < nneighbors]
 *         return neighbors
 */
  __pyx_v_i = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1256
 *         CHKERR( MPI_Graph_neighbors(self.ob_mpi, rank, nneighbors, ineighbors) )
 *         cdef int i = 0
 *         neighbors = [ineighbors[i] for i from 0 <= i < nneighbors]             # <<<<<<<<<<<<<<
 *         return neighbors
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_nneighbors; __pyx_v_i++) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyInt_FromLong((__pyx_v_ineighbors[__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_1 allocated */
    __pyx_t_1 = PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3); if (unlikely(__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_1 released */
  }
  __Pyx_INCREF(((PyObject *)__pyx_t_2));
  __Pyx_DECREF(__pyx_v_neighbors);
  __pyx_v_neighbors = ((PyObject *)__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1257
 *         cdef int i = 0
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp);
  __Pyx_DECREF(__pyx_v_neighbors);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1261
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1262
 *         """neighbors"""
 *         def __get__(self):
 *             cdef int rank = self.Get_rank()             # <<<<<<<<<<<<<<
 *             return self.Get_neighbors(rank)
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_rank); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_PyInt_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  __pyx_v_rank = __pyx_t_3;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1263
 *         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 allocated */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_neighbors); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1263; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1263; __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_t_2 released */
  /* __pyx_t_4 released */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1268
 *     # -------------------------
 * 
 *     def Map(self, index, edges):             # <<<<<<<<<<<<<<
 *         """
 *         Return an optimal placement for the
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_Map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Graphcomm_Map[] = "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_Map(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;
  PyObject *__pyx_v_tmp1 = 0;
  int __pyx_v_nedges;
  int *__pyx_v_iedges;
  PyObject *__pyx_v_tmp2 = 0;
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_index,&__pyx_kp_edges,0};
  __Pyx_SetupRefcountContext("Map");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_index);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_edges);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Map", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1268; __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[8]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_index = values[0];
    __pyx_v_edges = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_index = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_edges = PyTuple_GET_ITEM(__pyx_args, 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[8]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Map");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1273
 *         calling process on the physical machine
 *         """
 *         cdef int nnodes = len(index)             # <<<<<<<<<<<<<<
 *         cdef int *iindex = NULL
 *         cdef tmp1 = asarray_int(index, &iindex, nnodes)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nnodes = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1274
 *         """
 *         cdef int nnodes = len(index)
 *         cdef int *iindex = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp1 = asarray_int(index, &iindex, nnodes)
 *         cdef int nedges = len(edges)
 */
  __pyx_v_iindex = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1275
 *         cdef int nnodes = len(index)
 *         cdef int *iindex = NULL
 *         cdef tmp1 = asarray_int(index, &iindex, nnodes)             # <<<<<<<<<<<<<<
 *         cdef int nedges = len(edges)
 *         cdef int *iedges = NULL
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_index, (&__pyx_v_iindex), __pyx_v_nnodes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp1 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1276
 *         cdef int *iindex = NULL
 *         cdef tmp1 = asarray_int(index, &iindex, nnodes)
 *         cdef int nedges = len(edges)             # <<<<<<<<<<<<<<
 *         cdef int *iedges = NULL
 *         cdef tmp2 = asarray_int(edges, &iedges, nedges)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Length(__pyx_v_edges); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nedges = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1277
 *         cdef tmp1 = asarray_int(index, &iindex, nnodes)
 *         cdef int nedges = len(edges)
 *         cdef int *iedges = NULL             # <<<<<<<<<<<<<<
 *         cdef tmp2 = asarray_int(edges, &iedges, nedges)
 *         # extension: accept more 'standard' adjacency arrays
 */
  __pyx_v_iedges = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1278
 *         cdef int nedges = len(edges)
 *         cdef int *iedges = NULL
 *         cdef tmp2 = asarray_int(edges, &iedges, nedges)             # <<<<<<<<<<<<<<
 *         # extension: accept more 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_int(__pyx_v_edges, (&__pyx_v_iedges), __pyx_v_nedges); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_tmp2 = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1280
 *         cdef tmp2 = asarray_int(edges, &iedges, nedges)
 *         # 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
 */
  if (((__pyx_v_iindex[0]) == 0)) {
    /* __pyx_t_3 allocated */
    __pyx_t_3 = ((__pyx_v_iindex[(__pyx_v_nnodes - 1)]) == __pyx_v_nedges);
  } else {
    __pyx_t_3 = ((__pyx_v_iindex[0]) == 0);
  }
  if (__pyx_t_3) {
    /* __pyx_t_3 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1281
 *         # 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 -= 1;
    __pyx_v_iindex += 1;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1282
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1283
 *             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_4 allocated */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_map(((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_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_4 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1284
 *         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_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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.Map");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tmp1);
  __Pyx_XDECREF(__pyx_v_tmp2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1296
 *     # ---------------------------
 * 
 *     def Get_remote_group(self):             # <<<<<<<<<<<<<<
 *         """
 *         Access the remote group associated
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_Get_remote_group(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intercomm_Get_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_Get_remote_group(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Get_remote_group");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1301
 *         with the inter-communicator
 *         """
 *         cdef Group group = Group()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_group(self.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1302
 *         """
 *         cdef Group group = Group()
 *         CHKERR( MPI_Comm_remote_group(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_group(((PyMPIIntercommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1303
 *         cdef Group group = 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1307
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1308
 *         """remote group"""
 *         def __get__(self):
 *             return self.Get_remote_group()             # <<<<<<<<<<<<<<
 * 
 *     def Get_remote_size(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_remote_group); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1310
 *             return self.Get_remote_group()
 * 
 *     def Get_remote_size(self):             # <<<<<<<<<<<<<<
 *         """
 *         Intercommunicator remote size
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_Get_remote_size(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intercomm_Get_remote_size[] = "Intercomm.Get_remote_size(self)\n\n        Intercommunicator remote size\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_Get_remote_size(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_remote_size");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1314
 *         Intercommunicator remote size
 *         """
 *         cdef int size = -1             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(self.ob_mpi, &size) )
 *         return size
 */
  __pyx_v_size = -1;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1315
 *         """
 *         cdef int size = -1
 *         CHKERR( MPI_Comm_remote_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(((PyMPIIntercommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1316
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1320
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1321
 *         """number of remote processes"""
 *         def __get__(self):
 *             return self.Get_remote_size()             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Constructors
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_remote_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1326
 *     # -------------------------
 * 
 *     def Dup(self):             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing intercommunicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_Dup(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intercomm_Dup[] = "Intercomm.Dup(self)\n\n        Duplicate an existing intercommunicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_Dup(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Dup");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1330
 *         Duplicate an existing intercommunicator
 *         """
 *         cdef Intercomm comm = type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1330; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intercomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntercommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1331
 *         """
 *         cdef Intercomm comm = type(self)()
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup(((PyMPIIntercommObject *)__pyx_v_self)->__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_3 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1332
 *         cdef Intercomm comm = 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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Dup");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1334
 *         return comm
 * 
 *     def Create(self, Group group not None):             # <<<<<<<<<<<<<<
 *         """
 *         Create intercommunicator from group
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_Create(PyObject *__pyx_v_self, PyObject *__pyx_v_group); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intercomm_Create[] = "Intercomm.Create(self, Group group)\n\n        Create intercommunicator from group\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_Create(PyObject *__pyx_v_self, PyObject *__pyx_v_group) {
  PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_SetupRefcountContext("Create");
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1338
 *         Create intercommunicator from group
 *         """
 *         cdef Intercomm comm = type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_create(self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 *         return comm
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1338; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intercomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntercommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1339
 *         """
 *         cdef Intercomm comm = type(self)()
 *         with nogil: CHKERR( MPI_Comm_create(self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_create(((PyMPIIntercommObject *)__pyx_v_self)->__pyx_base.ob_mpi, ((PyMPIGroupObject *)__pyx_v_group)->ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_3 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1340
 *         cdef Intercomm comm = type(self)()
 *         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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Create");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1342
 *         return comm
 * 
 *     def Split(self, int color=0, int key=0):             # <<<<<<<<<<<<<<
 *         """
 *         Split intercommunicator by color and key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_Split(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intercomm_Split[] = "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_Split(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_color;
  int __pyx_v_key;
  PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_color,&__pyx_kp_key,0};
  __Pyx_SetupRefcountContext("Split");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_color);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_key);
        if (unlikely(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[8]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    if (values[0]) {
      __pyx_v_color = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_color == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_color = 0;
    }
    if (values[1]) {
      __pyx_v_key = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_key == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_key = 0;
    }
  } else {
    __pyx_v_color = 0;
    __pyx_v_key = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_key = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_key == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_color = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_color == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Split");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1346
 *         Split intercommunicator by color and key
 *         """
 *         cdef Intercomm comm = type(self)()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_split(self.ob_mpi, color, key, &comm.ob_mpi) )
 *         return comm
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyType_Type)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1346; __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 released */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intercomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntercommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1347
 *         """
 *         cdef Intercomm comm = type(self)()
 *         with nogil: CHKERR( MPI_Comm_split(self.ob_mpi, color, key, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_split(((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_3 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_3 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1348
 *         cdef Intercomm comm = type(self)()
 *         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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Split");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1350
 *         return comm
 * 
 *     def Merge(self, bint high=False):             # <<<<<<<<<<<<<<
 *         """
 *         Merge intercommunicator
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_Merge(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_9Intercomm_Merge[] = "Intercomm.Merge(self, int high=False)\n\n        Merge intercommunicator\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_Merge(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_high;
  PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_high,0};
  __Pyx_SetupRefcountContext("Merge");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_high);
        if (unlikely(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[8]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    if (values[0]) {
      __pyx_v_high = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_high == (int)-1))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_high = 0;
    }
  } else {
    __pyx_v_high = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_high = __Pyx_PyObject_IsTrue(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_high == (int)-1))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Merge");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1354
 *         Merge intercommunicator
 *         """
 *         cdef Intracomm comm = Intracomm()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Intercomm_merge(self.ob_mpi, high, &comm.ob_mpi) )
 *         return comm
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Intracomm)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Intracomm))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_comm = ((PyMPIIntracommObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1355
 *         """
 *         cdef Intracomm comm = Intracomm()
 *         with nogil: CHKERR( MPI_Intercomm_merge(self.ob_mpi, high, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Intercomm_merge(((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[8]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1356
 *         cdef Intracomm comm = Intracomm()
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1380
 * #: 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_Attach_buffer(PyObject *__pyx_self, PyObject *__pyx_v_memory); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Attach_buffer[] = "Attach_buffer(memory)\n\n    Attach a user-provided buffer for\n    sending in buffered mode\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Attach_buffer(PyObject *__pyx_self, PyObject *__pyx_v_memory) {
  void *__pyx_v_base;
  MPI_Aint __pyx_v_size;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Attach_buffer");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1385
 *     sending in buffered mode
 *     """
 *     cdef void *base = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint size = 0
 *     asmemory(memory, &base, &size)
 */
  __pyx_v_base = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1386
 *     """
 *     cdef void *base = NULL
 *     cdef MPI_Aint size = 0             # <<<<<<<<<<<<<<
 *     asmemory(memory, &base, &size)
 *     with nogil: CHKERR( MPI_Buffer_attach(base, <int>size) )
 */
  __pyx_v_size = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1387
 *     cdef void *base = NULL
 *     cdef MPI_Aint size = 0
 *     asmemory(memory, &base, &size)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Buffer_attach(base, <int>size) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmemory(__pyx_v_memory, (&__pyx_v_base), (&__pyx_v_size)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1388
 *     cdef MPI_Aint size = 0
 *     asmemory(memory, &base, &size)
 *     with nogil: CHKERR( MPI_Buffer_attach(base, <int>size) )             # <<<<<<<<<<<<<<
 * 
 * def Detach_buffer():
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Buffer_attach(__pyx_v_base, ((int)__pyx_v_size))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1388; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Attach_buffer");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1390
 *     with nogil: CHKERR( MPI_Buffer_attach(base, <int>size) )
 * 
 * def Detach_buffer():             # <<<<<<<<<<<<<<
 *     """
 *     Remove an existing attached buffer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Detach_buffer(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Detach_buffer[] = "Detach_buffer()\n\n    Remove an existing attached buffer\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Detach_buffer(PyObject *__pyx_self, PyObject *unused) {
  void *__pyx_v_base;
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Detach_buffer");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1394
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1395
 *     """
 *     cdef void *base = NULL
 *     cdef int size = 0             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Buffer_detach(&base, &size) )
 *     return tomemory(base, <MPI_Aint>size)
 */
  __pyx_v_size = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1396
 *     cdef void *base = NULL
 *     cdef int size = 0
 *     with nogil: CHKERR( MPI_Buffer_detach(&base, &size) )             # <<<<<<<<<<<<<<
 *     return tomemory(base, <MPI_Aint>size)
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __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[8]; __pyx_lineno = 1396; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1397
 *     cdef int size = 0
 *     with nogil: CHKERR( MPI_Buffer_detach(&base, &size) )
 *     return tomemory(base, <MPI_Aint>size)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tomemory(__pyx_v_base, ((MPI_Aint)__pyx_v_size)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1407
 * # -----------------------
 * 
 * def Open_port(Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *     """
 *     Return an address that can be used to establish
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Open_port(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Open_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 PyObject *__pyx_pf_6mpi4py_3MPI_Open_port(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIInfoObject *__pyx_v_info = 0;
  MPI_Info __pyx_v_cinfo;
  char __pyx_v_cportname[(MPI_MAX_PORT_NAME + 1)];
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_info,0};
  __Pyx_SetupRefcountContext("Open_port");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = (PyObject*)__pyx_k_76;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_info);
        if (unlikely(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[8]; __pyx_lineno = 1407; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_info = ((PyMPIInfoObject *)values[0]);
  } else {
    __pyx_v_info = __pyx_k_76;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_info = ((PyMPIInfoObject *)PyTuple_GET_ITEM(__pyx_args, 0));
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 1407; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Open_port");
  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[8]; __pyx_lineno = 1407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1412
 *     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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1414
 *     cdef MPI_Info cinfo = _arg_Info(info)
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     with nogil: CHKERR( MPI_Open_port(cinfo, cportname) )             # <<<<<<<<<<<<<<
 *     return mpistr(cportname)
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __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[8]; __pyx_lineno = 1414; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1415
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     with nogil: CHKERR( MPI_Open_port(cinfo, cportname) )
 *     return mpistr(cportname)             # <<<<<<<<<<<<<<
 * 
 * def Close_port(port_name, Info info=INFO_NULL):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_cportname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1417
 *     return mpistr(cportname)
 * 
 * def Close_port(port_name, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *     """
 *     Close a port
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Close_port(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Close_port[] = "Close_port(port_name, Info info=INFO_NULL)\n\n    Close a port\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Close_port(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_port_name = 0;
  PyMPIInfoObject *__pyx_v_info = 0;
  char *__pyx_v_cportname;
  MPI_Info __pyx_v_cinfo;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_port_name,&__pyx_kp_info,0};
  __Pyx_SetupRefcountContext("Close_port");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)__pyx_k_77;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_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_kp_info);
        if (unlikely(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), "Close_port") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_port_name = values[0];
    __pyx_v_info = ((PyMPIInfoObject *)values[1]);
  } else {
    __pyx_v_info = __pyx_k_77;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_info = ((PyMPIInfoObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_port_name = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Close_port", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Close_port");
  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[8]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1421
 *     Close a port
 *     """
 *     cdef char *cportname = NULL             # <<<<<<<<<<<<<<
 *     port_name = asmpistr(port_name, &cportname, NULL)
 *     cdef MPI_Info cinfo = _arg_Info(info)
 */
  __pyx_v_cportname = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1422
 *     """
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname, NULL)             # <<<<<<<<<<<<<<
 *     cdef MPI_Info cinfo = _arg_Info(info)
 *     with nogil: CHKERR( MPI_Close_port(cportname) )
 */
  /* __pyx_t_1 allocated */
  __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[8]; __pyx_lineno = 1422; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1423
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname, NULL)
 *     cdef MPI_Info cinfo = _arg_Info(info)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Close_port(cportname) )
 * 
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI__arg_Info(((PyObject *)__pyx_v_info));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1424
 *     port_name = asmpistr(port_name, &cportname, NULL)
 *     cdef MPI_Info cinfo = _arg_Info(info)
 *     with nogil: CHKERR( MPI_Close_port(cportname) )             # <<<<<<<<<<<<<<
 * 
 * # [5.4.4] Name Publishing
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Close_port(__pyx_v_cportname)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1424; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1429
 * # -----------------------
 * 
 * def Publish_name(service_name, Info info, port_name):             # <<<<<<<<<<<<<<
 *     """
 *     Publish a service name
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Publish_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Publish_name[] = "Publish_name(service_name, Info info, port_name)\n\n    Publish a service name\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Publish_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_service_name = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_service_name,&__pyx_kp_info,&__pyx_kp_port_name,0};
  __Pyx_SetupRefcountContext("Publish_name");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_service_name);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_info);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Publish_name", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1429; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_port_name);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Publish_name", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1429; __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[8]; __pyx_lineno = 1429; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_service_name = values[0];
    __pyx_v_info = ((PyMPIInfoObject *)values[1]);
    __pyx_v_port_name = values[2];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_service_name = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_info = ((PyMPIInfoObject *)PyTuple_GET_ITEM(__pyx_args, 1));
    __pyx_v_port_name = PyTuple_GET_ITEM(__pyx_args, 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[8]; __pyx_lineno = 1429; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Publish_name");
  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[8]; __pyx_lineno = 1429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1433
 *     Publish a service name
 *     """
 *     cdef char *csrvcname = NULL             # <<<<<<<<<<<<<<
 *     service_name = asmpistr(service_name, &csrvcname, NULL)
 *     cdef char *cportname = NULL
 */
  __pyx_v_csrvcname = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1434
 *     """
 *     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 allocated */
  __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[8]; __pyx_lineno = 1434; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1435
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1436
 *     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 allocated */
  __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[8]; __pyx_lineno = 1436; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1437
 *     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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1438
 *     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):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __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[8]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_service_name);
  __Pyx_DECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1440
 *     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_Unpublish_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Unpublish_name[] = "Unpublish_name(service_name, Info info, port_name)\n\n    Unpublish a service name\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Unpublish_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_service_name = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_service_name,&__pyx_kp_info,&__pyx_kp_port_name,0};
  __Pyx_SetupRefcountContext("Unpublish_name");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_service_name);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_info);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Unpublish_name", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_kp_port_name);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Unpublish_name", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1440; __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[8]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_service_name = values[0];
    __pyx_v_info = ((PyMPIInfoObject *)values[1]);
    __pyx_v_port_name = values[2];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_service_name = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_info = ((PyMPIInfoObject *)PyTuple_GET_ITEM(__pyx_args, 1));
    __pyx_v_port_name = PyTuple_GET_ITEM(__pyx_args, 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[8]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Unpublish_name");
  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[8]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1444
 *     Unpublish a service name
 *     """
 *     cdef char *csrvcname = NULL             # <<<<<<<<<<<<<<
 *     service_name = asmpistr(service_name, &csrvcname, NULL)
 *     cdef char *cportname = NULL
 */
  __pyx_v_csrvcname = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1445
 *     """
 *     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 allocated */
  __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[8]; __pyx_lineno = 1445; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1446
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1447
 *     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 allocated */
  __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[8]; __pyx_lineno = 1447; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1448
 *     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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1449
 *     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):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __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[8]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_service_name);
  __Pyx_DECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1451
 *     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_Lookup_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Lookup_name[] = "Lookup_name(service_name, Info info=INFO_NULL)\n\n    Lookup a port name given a service name\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Lookup_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_service_name = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_service_name,&__pyx_kp_info,0};
  __Pyx_SetupRefcountContext("Lookup_name");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)__pyx_k_78;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_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_kp_info);
        if (unlikely(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[8]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_service_name = values[0];
    __pyx_v_info = ((PyMPIInfoObject *)values[1]);
  } else {
    __pyx_v_info = __pyx_k_78;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_info = ((PyMPIInfoObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_service_name = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[8]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Lookup_name");
  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[8]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1455
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1456
 *     """
 *     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 allocated */
  __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[8]; __pyx_lineno = 1456; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1457
 *     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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1459
 *     cdef MPI_Info cinfo = _arg_Info(info)
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     with nogil: CHKERR( MPI_Lookup_name(csrvcname, cinfo, cportname) )             # <<<<<<<<<<<<<<
 *     return mpistr(cportname)
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __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[8]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1460
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     with nogil: CHKERR( MPI_Lookup_name(csrvcname, cinfo, cportname) )
 *     return mpistr(cportname)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_cportname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_service_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":23
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ob_mpi = MPI_WIN_NULL
 * 
 */

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) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":24
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_WIN_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((PyMPIWinObject *)__pyx_v_self)->ob_mpi = MPI_WIN_NULL;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":26
 *         self.ob_mpi = MPI_WIN_NULL
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( _del_Win(&self.ob_mpi) )
 */

static void __pyx_pf_6mpi4py_3MPI_3Win___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_3Win___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("__dealloc__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":27
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( _del_Win(&self.ob_mpi) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!(((PyMPIWinObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":28
 *     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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI__del_Win((&((PyMPIWinObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.__dealloc__");
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":30
 *         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___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyMPIWinObject *__pyx_v_s = 0;
  PyMPIWinObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("__richcmp__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":31
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Win): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Win): return NotImplemented
 *         cdef Win s = self, o = other
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_self, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Win))); 
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":32
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  Win): return NotImplemented
 *         if not isinstance(other, Win): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Win s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_TypeCheck(__pyx_v_other, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Win))); 
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_t_2);
  /* __pyx_t_2 released */
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":33
 *         if not isinstance(self,  Win): return NotImplemented
 *         if not isinstance(other, Win): return NotImplemented
 *         cdef Win s = self, o = other             # <<<<<<<<<<<<<<
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 */
  if (!(__Pyx_TypeTest(__pyx_v_self, __pyx_ptype_6mpi4py_3MPI_Win))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_self);
  __pyx_v_s = ((PyMPIWinObject *)__pyx_v_self);
  if (!(__Pyx_TypeTest(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Win))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_other);
  __pyx_v_o = ((PyMPIWinObject *)__pyx_v_other);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":34
 *         if not isinstance(other, Win): return NotImplemented
 *         cdef Win s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 */
  switch (__pyx_v_op) {
    case 2:
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    case 3:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":35
 *         cdef Win s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    default:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":36
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_141); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[24]; __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_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    {__pyx_filename = __pyx_f[24]; __pyx_lineno = 36; __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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Win.__richcmp__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":38
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_WIN_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_3Win___nonzero__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_3Win___nonzero__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__nonzero__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":39
 * 
 *     def __nonzero__(self):
 *         return self.ob_mpi != MPI_WIN_NULL             # <<<<<<<<<<<<<<
 * 
 *     # [6.2] Initialization
 */
  __pyx_r = (((PyMPIWinObject *)__pyx_v_self)->ob_mpi != MPI_WIN_NULL);
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":48
 * 
 *     @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_Create(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Create[] = "Win.Create(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_Create(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_memory = 0;
  int __pyx_v_disp_unit;
  PyMPIInfoObject *__pyx_v_info = 0;
  PyMPIIntracommObject *__pyx_v_comm = 0;
  void *__pyx_v_base;
  MPI_Aint __pyx_v_size;
  MPI_Info __pyx_v_cinfo;
  PyMPIWinObject *__pyx_v_win = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_memory,&__pyx_kp_disp_unit,&__pyx_kp_info,&__pyx_kp_comm,0};
  __Pyx_SetupRefcountContext("Create");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[2] = (PyObject*)__pyx_k_79;
    values[3] = (PyObject*)__pyx_k_80;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_memory);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_disp_unit);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_info);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_comm);
        if (unlikely(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[24]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_memory = values[0];
    if (values[1]) {
      __pyx_v_disp_unit = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_disp_unit == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_disp_unit = 1;
    }
    __pyx_v_info = ((PyMPIInfoObject *)values[2]);
    __pyx_v_comm = ((PyMPIIntracommObject *)values[3]);
  } else {
    __pyx_v_disp_unit = 1;
    __pyx_v_info = __pyx_k_79;
    __pyx_v_comm = __pyx_k_80;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: __pyx_v_comm = ((PyMPIIntracommObject *)PyTuple_GET_ITEM(__pyx_args, 3));
      case  3: __pyx_v_info = ((PyMPIInfoObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2: __pyx_v_disp_unit = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_disp_unit == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_memory = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[24]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Create");
  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[24]; __pyx_lineno = 49; __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[24]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":53
 *         Create an window object for one-sided communication
 *         """
 *         cdef void*    base = MPI_BOTTOM             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint size = 0
 *         if memory is not None:
 */
  __pyx_v_base = MPI_BOTTOM;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":54
 *         """
 *         cdef void*    base = MPI_BOTTOM
 *         cdef MPI_Aint size = 0             # <<<<<<<<<<<<<<
 *         if memory is not None:
 *             memory = asmemory(memory, &base, &size)
 */
  __pyx_v_size = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":55
 *         cdef void*    base = MPI_BOTTOM
 *         cdef MPI_Aint size = 0
 *         if memory is not None:             # <<<<<<<<<<<<<<
 *             memory = asmemory(memory, &base, &size)
 *         cdef MPI_Info cinfo = _arg_Info(info)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_memory != Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":56
 *         cdef MPI_Aint size = 0
 *         if memory is not None:
 *             memory = asmemory(memory, &base, &size)             # <<<<<<<<<<<<<<
 *         cdef MPI_Info cinfo = _arg_Info(info)
 *         #
 */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asmemory(__pyx_v_memory, (&__pyx_v_base), (&__pyx_v_size)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 56; __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;
    /* __pyx_t_2 released */
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":57
 *         if memory is not None:
 *             memory = asmemory(memory, &base, &size)
 *         cdef MPI_Info cinfo = _arg_Info(info)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Win win = cls()
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI__arg_Info(((PyObject *)__pyx_v_info));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":59
 *         cdef MPI_Info cinfo = _arg_Info(info)
 *         #
 *         cdef Win win = cls()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_create(
 *             base, size, disp_unit,
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(__pyx_v_cls, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Win))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_win = ((PyMPIWinObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":60
 *         #
 *         cdef Win win = cls()
 *         with nogil: CHKERR( MPI_Win_create(             # <<<<<<<<<<<<<<
 *             base, size, disp_unit,
 *             cinfo, comm.ob_mpi, &win.ob_mpi) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":62
 *         with nogil: CHKERR( MPI_Win_create(
 *             base, size, disp_unit,
 *             cinfo, comm.ob_mpi, &win.ob_mpi) )             # <<<<<<<<<<<<<<
 *         # we are in charge or managing MPI errors
 *         CHKERR( MPI_Win_set_errhandler(win.ob_mpi, MPI_ERRORS_RETURN) )
 */
      /* __pyx_t_3 allocated */
      __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[24]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L8;}
      /* __pyx_t_3 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":64
 *             cinfo, comm.ob_mpi, &win.ob_mpi) )
 *         # we are in charge or managing MPI errors
 *         CHKERR( MPI_Win_set_errhandler(win.ob_mpi, MPI_ERRORS_RETURN) )             # <<<<<<<<<<<<<<
 *         # hold a reference to the object exposing memory
 *         PyMPI_Win_set_attr_memory(win.ob_mpi, memory)
 */
  /* __pyx_t_3 allocated */
  __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[24]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":66
 *         CHKERR( MPI_Win_set_errhandler(win.ob_mpi, MPI_ERRORS_RETURN) )
 *         # hold a reference to the object exposing memory
 *         PyMPI_Win_set_attr_memory(win.ob_mpi, memory)             # <<<<<<<<<<<<<<
 *         # return the created window
 *         return win
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_Win_set_attr_memory(__pyx_v_win->ob_mpi, __pyx_v_memory); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":68
 *         PyMPI_Win_set_attr_memory(win.ob_mpi, memory)
 *         # return the created window
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_win);
  __Pyx_DECREF(__pyx_v_memory);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":70
 *         return win
 * 
 *     def Free(self):             # <<<<<<<<<<<<<<
 *         """
 *         Free a window
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Free(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Free[] = "Win.Free(self)\n\n        Free a window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Free(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Free");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":74
 *         Free a window
 *         """
 *         with nogil: CHKERR( MPI_Win_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [6.2.2] Window Attributes
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_free((&((PyMPIWinObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":79
 *     # -------------------------
 * 
 *     def Get_group(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return a duplicate of the group of the
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Get_group(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Get_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_Get_group(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Get_group");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":84
 *         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 allocated */
  __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[24]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":85
 *         """
 *         cdef Group group = Group()
 *         with nogil: CHKERR( MPI_Win_get_group(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_group(((PyMPIWinObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":86
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":90
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":91
 *         """window group"""
 *         def __get__(self):
 *             return self.Get_group()             # <<<<<<<<<<<<<<
 * 
 *     def Get_attr(self, int keyval):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_group); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __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 = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":93
 *             return self.Get_group()
 * 
 *     def Get_attr(self, int keyval):             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Get_attr(PyObject *__pyx_v_self, PyObject *__pyx_arg_keyval); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Get_attr[] = "Win.Get_attr(self, int keyval)\n\n        Retrieve attribute value by key\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Get_attr(PyObject *__pyx_v_self, PyObject *__pyx_arg_keyval) {
  int __pyx_v_keyval;
  void *__pyx_v_attrval;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("Get_attr");
  assert(__pyx_arg_keyval); {
    __pyx_v_keyval = __pyx_PyInt_int(__pyx_arg_keyval); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_attr");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":97
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":98
 *         """
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":99
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_attr(((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[24]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":100
 *         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 allocated */
  __pyx_t_2 = (!__pyx_v_flag);
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":101
 *         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 allocated */
  __pyx_t_2 = (!(__pyx_v_attrval != 0));
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_int_0);
    __pyx_r = __pyx_int_0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":103
 *         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 allocated */
  __pyx_t_2 = (__pyx_v_keyval == ((int)MPI_WIN_BASE));
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":104
 *         # 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 allocated */
    __pyx_t_3 = PyInt_FromLong(((MPI_Aint)__pyx_v_attrval)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    goto __pyx_L7;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":105
 *         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 allocated */
  __pyx_t_2 = (__pyx_v_keyval == ((int)MPI_WIN_SIZE));
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":106
 *             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 allocated */
    __pyx_t_3 = PyInt_FromLong((((MPI_Aint *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    goto __pyx_L7;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":107
 *         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 allocated */
  __pyx_t_2 = (__pyx_v_keyval == ((int)MPI_WIN_DISP_UNIT));
  if (__pyx_t_2) {
    /* __pyx_t_2 released */

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":108
 *             return (<MPI_Aint*>attrval)[0]
 *         elif (keyval == <int>MPI_WIN_DISP_UNIT):
 *             return (<int*>attrval)[0]             # <<<<<<<<<<<<<<
 *         # likely be a user-defined keyval
 *         else:
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyInt_FromLong((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":111
 *         # likely be a user-defined keyval
 *         else:
 *             return PyLong_FromVoidPtr(attrval)             # <<<<<<<<<<<<<<
 * 
 *     property attrs:
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyLong_FromVoidPtr(__pyx_v_attrval); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
  }
  __pyx_L7:;

  __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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":115
 *     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;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":116
 *         "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 = ((PyMPIWinObject *)__pyx_v_self)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":117
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":118
 *             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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":119
 *             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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":120
 *             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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":121
 *             cdef int      disp = 0, *pdisp = NULL
 *             cdef int attr = MPI_KEYVAL_INVALID
 *             cdef int flag = 0             # <<<<<<<<<<<<<<
 *             #
 *             attr = MPI_WIN_BASE
 */
  __pyx_v_flag = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":123
 *             cdef int flag = 0
 *             #
 *             attr = MPI_WIN_BASE             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_get_attr(win, attr, &pbase, &flag) )
 *             if flag and pbase: base = pbase
 */
  __pyx_v_attr = MPI_WIN_BASE;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":124
 *             #
 *             attr = MPI_WIN_BASE
 *             CHKERR( MPI_Win_get_attr(win, attr, &pbase, &flag) )             # <<<<<<<<<<<<<<
 *             if flag and pbase: base = pbase
 *             #
 */
  /* __pyx_t_1 allocated */
  __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[24]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":125
 *             attr = MPI_WIN_BASE
 *             CHKERR( MPI_Win_get_attr(win, attr, &pbase, &flag) )
 *             if flag and pbase: base = pbase             # <<<<<<<<<<<<<<
 *             #
 *             attr = MPI_WIN_SIZE
 */
  if (__pyx_v_flag) {
    /* __pyx_t_2 allocated */
    __pyx_t_2 = (__pyx_v_pbase != 0);
  } else {
    __pyx_t_2 = __pyx_v_flag;
  }
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_base = __pyx_v_pbase;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":127
 *             if flag and pbase: base = pbase
 *             #
 *             attr = MPI_WIN_SIZE             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_get_attr(win, attr, &psize, &flag) )
 *             if flag and psize: size = psize[0]
 */
  __pyx_v_attr = MPI_WIN_SIZE;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":128
 *             #
 *             attr = MPI_WIN_SIZE
 *             CHKERR( MPI_Win_get_attr(win, attr, &psize, &flag) )             # <<<<<<<<<<<<<<
 *             if flag and psize: size = psize[0]
 *             #
 */
  /* __pyx_t_1 allocated */
  __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[24]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":129
 *             attr = MPI_WIN_SIZE
 *             CHKERR( MPI_Win_get_attr(win, attr, &psize, &flag) )
 *             if flag and psize: size = psize[0]             # <<<<<<<<<<<<<<
 *             #
 *             attr = MPI_WIN_DISP_UNIT
 */
  if (__pyx_v_flag) {
    /* __pyx_t_2 allocated */
    __pyx_t_2 = (__pyx_v_psize != 0);
  } else {
    __pyx_t_2 = __pyx_v_flag;
  }
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_size = (__pyx_v_psize[0]);
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":131
 *             if flag and psize: size = psize[0]
 *             #
 *             attr = MPI_WIN_DISP_UNIT             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_get_attr(win, attr, &pdisp, &flag) )
 *             if flag and pdisp: disp = pdisp[0]
 */
  __pyx_v_attr = MPI_WIN_DISP_UNIT;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":132
 *             #
 *             attr = MPI_WIN_DISP_UNIT
 *             CHKERR( MPI_Win_get_attr(win, attr, &pdisp, &flag) )             # <<<<<<<<<<<<<<
 *             if flag and pdisp: disp = pdisp[0]
 *             #
 */
  /* __pyx_t_1 allocated */
  __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[24]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":133
 *             attr = MPI_WIN_DISP_UNIT
 *             CHKERR( MPI_Win_get_attr(win, attr, &pdisp, &flag) )
 *             if flag and pdisp: disp = pdisp[0]             # <<<<<<<<<<<<<<
 *             #
 *             return (<MPI_Aint>base, size, disp)
 */
  if (__pyx_v_flag) {
    /* __pyx_t_2 allocated */
    __pyx_t_2 = (__pyx_v_pdisp != 0);
  } else {
    __pyx_t_2 = __pyx_v_flag;
  }
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_disp = (__pyx_v_pdisp[0]);
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":135
 *             if flag and pdisp: disp = pdisp[0]
 *             #
 *             return (<MPI_Aint>base, size, disp)             # <<<<<<<<<<<<<<
 * 
 *     property memory:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(((MPI_Aint)__pyx_v_base)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  /* __pyx_t_5 allocated */
  __pyx_t_5 = PyInt_FromLong(__pyx_v_disp); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  /* __pyx_t_6 allocated */
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 135; __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_3 released */
  /* __pyx_t_4 released */
  /* __pyx_t_5 released */
  __pyx_r = ((PyObject *)__pyx_t_6);
  __pyx_t_6 = 0;
  /* __pyx_t_6 released */
  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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Win.attrs.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":139
 *     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;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":140
 *         """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 = ((PyMPIWinObject *)__pyx_v_self)->ob_mpi;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":141
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":142
 *             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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":143
 *             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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":144
 *             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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":146
 *             cdef int flag = 0
 *             #
 *             attr = MPI_WIN_BASE             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_get_attr(win, attr, &pbase, &flag) )
 *             if flag and pbase: base = pbase
 */
  __pyx_v_attr = MPI_WIN_BASE;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":147
 *             #
 *             attr = MPI_WIN_BASE
 *             CHKERR( MPI_Win_get_attr(win, attr, &pbase, &flag) )             # <<<<<<<<<<<<<<
 *             if flag and pbase: base = pbase
 *             #
 */
  /* __pyx_t_1 allocated */
  __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[24]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":148
 *             attr = MPI_WIN_BASE
 *             CHKERR( MPI_Win_get_attr(win, attr, &pbase, &flag) )
 *             if flag and pbase: base = pbase             # <<<<<<<<<<<<<<
 *             #
 *             attr = MPI_WIN_SIZE
 */
  if (__pyx_v_flag) {
    /* __pyx_t_2 allocated */
    __pyx_t_2 = (__pyx_v_pbase != 0);
  } else {
    __pyx_t_2 = __pyx_v_flag;
  }
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_base = __pyx_v_pbase;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":150
 *             if flag and pbase: base = pbase
 *             #
 *             attr = MPI_WIN_SIZE             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_get_attr(win, attr, &psize, &flag) )
 *             if flag and psize: size = psize[0]
 */
  __pyx_v_attr = MPI_WIN_SIZE;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":151
 *             #
 *             attr = MPI_WIN_SIZE
 *             CHKERR( MPI_Win_get_attr(win, attr, &psize, &flag) )             # <<<<<<<<<<<<<<
 *             if flag and psize: size = psize[0]
 *             #
 */
  /* __pyx_t_1 allocated */
  __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[24]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":152
 *             attr = MPI_WIN_SIZE
 *             CHKERR( MPI_Win_get_attr(win, attr, &psize, &flag) )
 *             if flag and psize: size = psize[0]             # <<<<<<<<<<<<<<
 *             #
 *             return tomemory(base, size)
 */
  if (__pyx_v_flag) {
    /* __pyx_t_2 allocated */
    __pyx_t_2 = (__pyx_v_psize != 0);
  } else {
    __pyx_t_2 = __pyx_v_flag;
  }
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __pyx_v_size = (__pyx_v_psize[0]);
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":154
 *             if flag and psize: size = psize[0]
 *             #
 *             return tomemory(base, size)             # <<<<<<<<<<<<<<
 * 
 *     # [6.3] Communication Calls
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_tomemory(__pyx_v_base, __pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  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.Win.memory.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":162
 *     # -----------
 * 
 *     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_Put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Put[] = "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_Put(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_origin,&__pyx_kp_target_rank,&__pyx_kp_target,0};
  __Pyx_SetupRefcountContext("Put");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_origin);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_target_rank);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Put", 0, 2, 3, 1); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_target);
        if (unlikely(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[24]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_target = values[2];
  } else {
    __pyx_v_target = Py_None;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_target = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2:
      __pyx_v_target_rank = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_v_origin = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[24]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Put");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":167
 *         """
 *         cdef _p_msg_rma msg = \
 *              message_rma_put(origin, target_rank, target)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Put(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma_put(__pyx_v_origin, __pyx_v_target_rank, __pyx_v_target)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 167; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":168
 *         cdef _p_msg_rma msg = \
 *              message_rma_put(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Put(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":172
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [6.3.2] Get
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":177
 *     # -----------
 * 
 *     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_Get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Get[] = "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_Get(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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_origin,&__pyx_kp_target_rank,&__pyx_kp_target,0};
  __Pyx_SetupRefcountContext("Get");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = Py_None;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_origin);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_target_rank);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Get", 0, 2, 3, 1); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_target);
        if (unlikely(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[24]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_target = values[2];
  } else {
    __pyx_v_target = Py_None;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_target = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2:
      __pyx_v_target_rank = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_v_origin = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[24]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":182
 *         """
 *         cdef _p_msg_rma msg = \
 *              message_rma_get(origin, target_rank, target)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Get(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma_get(__pyx_v_origin, __pyx_v_target_rank, __pyx_v_target)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 182; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":183
 *         cdef _p_msg_rma msg = \
 *              message_rma_get(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Get(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":187
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [6.3.4] Accumulate Functions
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":192
 *     # ----------------------------
 * 
 *     def Accumulate(self, origin, int target_rank,             # <<<<<<<<<<<<<<
 *                    target=None, Op op not None=SUM):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Accumulate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Accumulate[] = "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_Accumulate(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;
  PyMPIOpObject *__pyx_v_op = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_origin,&__pyx_kp_target_rank,&__pyx_kp_target,&__pyx_kp_op,0};
  __Pyx_SetupRefcountContext("Accumulate");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[2] = Py_None;
    values[3] = (PyObject*)__pyx_k_81;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_origin);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_target_rank);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Accumulate", 0, 2, 4, 1); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_target);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_op);
        if (unlikely(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[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_target = values[2];
    __pyx_v_op = ((PyMPIOpObject *)values[3]);
  } else {
    __pyx_v_target = Py_None;
    __pyx_v_op = __pyx_k_81;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4:
      __pyx_v_op = ((PyMPIOpObject *)PyTuple_GET_ITEM(__pyx_args, 3));
      case  3:
      __pyx_v_target = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2:
      __pyx_v_target_rank = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_v_origin = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[24]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Accumulate");
  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[24]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":199
 *         """
 *         cdef _p_msg_rma msg = \
 *              message_rma_acc(origin, target_rank, target)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Accumulate(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma_acc(__pyx_v_origin, __pyx_v_target_rank, __pyx_v_target)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 199; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":200
 *         cdef _p_msg_rma msg = \
 *              message_rma_acc(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Accumulate(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":204
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [6.4] Synchronization Calls
 */
      /* __pyx_t_2 allocated */
      __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, ((PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":212
 *     # -------------
 * 
 *     def Fence(self, int assertion=0):             # <<<<<<<<<<<<<<
 *         """
 *         Perform an MPI fence synchronization on a window
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Fence(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Fence[] = "Win.Fence(self, int assertion=0)\n\n        Perform an MPI fence synchronization on a window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Fence(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_assertion;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_assertion,0};
  __Pyx_SetupRefcountContext("Fence");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_assertion);
        if (unlikely(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[24]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    if (values[0]) {
      __pyx_v_assertion = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_assertion = 0;
    }
  } else {
    __pyx_v_assertion = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_assertion = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[24]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Fence");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":216
 *         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
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_fence(__pyx_v_assertion, ((PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":221
 *     # ---------------------------------------------
 * 
 *     def Start(self, Group group not None, int assertion=0):             # <<<<<<<<<<<<<<
 *         """
 *         Start an RMA access epoch for MPI
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Start[] = "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_Start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIGroupObject *__pyx_v_group = 0;
  int __pyx_v_assertion;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_group,&__pyx_kp_assertion,0};
  __Pyx_SetupRefcountContext("Start");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_group);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_assertion);
        if (unlikely(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[24]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_group = ((PyMPIGroupObject *)values[0]);
    if (values[1]) {
      __pyx_v_assertion = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_assertion = 0;
    }
  } else {
    __pyx_v_assertion = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_assertion = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_group = ((PyMPIGroupObject *)PyTuple_GET_ITEM(__pyx_args, 0));
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[24]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Start");
  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[24]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":225
 *         Start an RMA access epoch for MPI
 *         """
 *         with nogil: CHKERR( MPI_Win_start(group.ob_mpi, assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Complete(self):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_start(__pyx_v_group->ob_mpi, __pyx_v_assertion, ((PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":227
 *         with nogil: CHKERR( MPI_Win_start(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_Complete(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Complete[] = "Win.Complete(self)\n\n        Completes an RMA operations begun after an `Win.Start()`\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Complete(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Complete");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":231
 *         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):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_complete(((PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":233
 *         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_Post(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Post[] = "Win.Post(self, Group group, int assertion=0)\n\n        Start an RMA exposure epoch\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Post(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIGroupObject *__pyx_v_group = 0;
  int __pyx_v_assertion;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_group,&__pyx_kp_assertion,0};
  __Pyx_SetupRefcountContext("Post");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_group);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_assertion);
        if (unlikely(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[24]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_group = ((PyMPIGroupObject *)values[0]);
    if (values[1]) {
      __pyx_v_assertion = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_assertion = 0;
    }
  } else {
    __pyx_v_assertion = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_assertion = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_group = ((PyMPIGroupObject *)PyTuple_GET_ITEM(__pyx_args, 0));
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[24]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Post");
  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[24]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":237
 *         Start an RMA exposure epoch
 *         """
 *         with nogil: CHKERR( MPI_Win_post(group.ob_mpi, assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Wait(self):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_post(__pyx_v_group->ob_mpi, __pyx_v_assertion, ((PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":239
 *         with nogil: CHKERR( MPI_Win_post(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_Wait(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Wait[] = "Win.Wait(self)\n\n        Complete an RMA exposure epoch begun with `Win.Post()`\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Wait(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Wait");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":243
 *         Complete an RMA exposure epoch begun with `Win.Post()`
 *         """
 *         with nogil: CHKERR( MPI_Win_wait(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Test(self):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_wait(((PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":245
 *         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_Test(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Test[] = "Win.Test(self)\n\n        Test whether an RMA exposure epoch has completed\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Test(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Test");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":249
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":250
 *         """
 *         cdef bint flag = 0
 *         with nogil: CHKERR( MPI_Win_test(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_test(((PyMPIWinObject *)__pyx_v_self)->ob_mpi, ((int *)(&__pyx_v_flag)))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":251
 *         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 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":256
 *     # ------------
 * 
 *     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_Lock(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Lock[] = "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_Lock(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;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_lock_type,&__pyx_kp_rank,&__pyx_kp_assertion,0};
  __Pyx_SetupRefcountContext("Lock");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_lock_type);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_rank);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Lock", 0, 2, 3, 1); {__pyx_filename = __pyx_f[24]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_assertion);
        if (unlikely(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[24]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_lock_type = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_lock_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_rank = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    if (values[2]) {
      __pyx_v_assertion = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_assertion = 0;
    }
  } else {
    __pyx_v_assertion = 0;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_assertion = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2:
      __pyx_v_rank = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_v_lock_type = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_lock_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[24]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Lock");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":260
 *         Begin an RMA access epoch at the target process
 *         """
 *         with nogil: CHKERR( MPI_Win_lock(lock_type, rank, assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Unlock(self, int rank):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_lock(__pyx_v_lock_type, __pyx_v_rank, __pyx_v_assertion, ((PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":262
 *         with nogil: CHKERR( MPI_Win_lock(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_Unlock(PyObject *__pyx_v_self, PyObject *__pyx_arg_rank); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Unlock[] = "Win.Unlock(self, int rank)\n\n        Complete an RMA access epoch at the target process\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Unlock(PyObject *__pyx_v_self, PyObject *__pyx_arg_rank) {
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Unlock");
  assert(__pyx_arg_rank); {
    __pyx_v_rank = __pyx_PyInt_int(__pyx_arg_rank); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Unlock");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":266
 *         Complete an RMA access epoch at the target process
 *         """
 *         with nogil: CHKERR( MPI_Win_unlock(rank, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [6.6] Error Handling
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_unlock(__pyx_v_rank, ((PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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.Unlock");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":271
 *     # --------------------
 * 
 *     def Get_errhandler(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a window
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Get_errhandler(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Get_errhandler[] = "Win.Get_errhandler(self)\n\n        Get the error handler for a window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Get_errhandler(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Get_errhandler");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":275
 *         Get the error handler for a window
 *         """
 *         cdef Errhandler errhandler = Errhandler()             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_get_errhandler(self.ob_mpi,
 *                                        &errhandler.ob_mpi) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Errhandler))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_errhandler = ((PyMPIErrhandlerObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":277
 *         cdef Errhandler errhandler = Errhandler()
 *         CHKERR( MPI_Win_get_errhandler(self.ob_mpi,
 *                                        &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_errhandler(((PyMPIWinObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":278
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":280
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler not None):             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a window
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Set_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_v_errhandler); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Set_errhandler[] = "Win.Set_errhandler(self, Errhandler errhandler)\n\n        Set the error handler for a window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Set_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_v_errhandler) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Set_errhandler");
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":284
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_errhandler(((PyMPIWinObject *)__pyx_v_self)->ob_mpi, ((PyMPIErrhandlerObject *)__pyx_v_errhandler)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_errhandler");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":286
 *         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_Call_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_arg_errorcode); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Call_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_Call_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_arg_errorcode) {
  int __pyx_v_errorcode;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Call_errhandler");
  assert(__pyx_arg_errorcode); {
    __pyx_v_errorcode = __pyx_PyInt_int(__pyx_arg_errorcode); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Call_errhandler");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":290
 *         Call the error handler installed on a window
 *         """
 *         CHKERR( MPI_Win_call_errhandler(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_call_errhandler(((PyMPIWinObject *)__pyx_v_self)->ob_mpi, __pyx_v_errorcode)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Call_errhandler");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":296
 *     # --------------------
 * 
 *     def Get_name(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name associated with the window
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Get_name(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Get_name[] = "Win.Get_name(self)\n\n        Get the print name associated with the window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Get_name(PyObject *__pyx_v_self, PyObject *unused) {
  char __pyx_v_name[(MPI_MAX_OBJECT_NAME + 1)];
  int __pyx_v_nlen;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_name");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":301
 *         """
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":302
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_name(((PyMPIWinObject *)__pyx_v_self)->ob_mpi, __pyx_v_name, (&__pyx_v_nlen))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":303
 *         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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_name, __pyx_v_nlen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":305
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name):             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name associated with the window
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Set_name(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_Set_name[] = "Win.Set_name(self, name)\n\n        Set the print name associated with the window\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_Set_name(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  char *__pyx_v_cname;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Set_name");
  __Pyx_INCREF(__pyx_v_name);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":309
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":310
 *         """
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname, NULL)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_set_name(self.ob_mpi, cname) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_name, (&__pyx_v_cname), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 310; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":311
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname, NULL)
 *         CHKERR( MPI_Win_set_name(self.ob_mpi, cname) )             # <<<<<<<<<<<<<<
 * 
 *     property name:
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_name(((PyMPIWinObject *)__pyx_v_self)->ob_mpi, __pyx_v_cname)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  __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_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":315
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":316
 *         """window name"""
 *         def __get__(self):
 *             return self.Get_name()             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self.Set_name(value)
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __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 = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":317
 *         def __get__(self):
 *             return self.Get_name()
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self.Set_name(value)
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_3Win_4name___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_3Win_4name___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__set__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":318
 *             return self.Get_name()
 *         def __set__(self, value):
 *             self.Set_name(value)             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Set_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 318; __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 allocated */
  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 318; __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_t_1 released */
  /* __pyx_t_2 released */
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  __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_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":323
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_py2f(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_py2f[] = "Win.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_py2f(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("py2f");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":326
 *         """
 *         """
 *         return MPI_Win_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(MPI_Win_c2f(((PyMPIWinObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":329
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_3Win_f2py[] = "Win.f2py(cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyMPIWinObject *__pyx_v_win = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  __Pyx_SetupRefcountContext("f2py");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":332
 *         """
 *         """
 *         cdef Win win = cls()             # <<<<<<<<<<<<<<
 *         win.ob_mpi = MPI_Win_f2c(arg)
 *         return win
 */
  /* __pyx_t_1 allocated */
  __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 = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Win))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_win = ((PyMPIWinObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":333
 *         """
 *         cdef Win win = cls()
 *         win.ob_mpi = MPI_Win_f2c(arg)             # <<<<<<<<<<<<<<
 *         return win
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_long(__pyx_v_arg); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_win->ob_mpi = MPI_Win_f2c(__pyx_t_2);
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":334
 *         cdef 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_win);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":31
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.ob_mpi = MPI_FILE_NULL
 * 
 */

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) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":32
 * 
 *     def __cinit__(self):
 *         self.ob_mpi = MPI_FILE_NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((PyMPIFileObject *)__pyx_v_self)->ob_mpi = MPI_FILE_NULL;

  __pyx_r = 0;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":34
 *         self.ob_mpi = MPI_FILE_NULL
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if not (self.flags & PyMPI_OWNED): return
 *         CHKERR( _del_File(&self.ob_mpi) )
 */

static void __pyx_pf_6mpi4py_3MPI_4File___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_6mpi4py_3MPI_4File___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("__dealloc__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":35
 * 
 *     def __dealloc__(self):
 *         if not (self.flags & PyMPI_OWNED): return             # <<<<<<<<<<<<<<
 *         CHKERR( _del_File(&self.ob_mpi) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!(((PyMPIFileObject *)__pyx_v_self)->flags & __pyx_e_6mpi4py_3MPI_PyMPI_OWNED));
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":36
 *     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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_f_6mpi4py_3MPI__del_File((&((PyMPIFileObject *)__pyx_v_self)->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.__dealloc__");
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":38
 *         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___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_6mpi4py_3MPI_4File___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyMPIFileObject *__pyx_v_s = 0;
  PyMPIFileObject *__pyx_v_o = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("__richcmp__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":39
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  File): return NotImplemented             # <<<<<<<<<<<<<<
 *         if not isinstance(other, File): return NotImplemented
 *         cdef File s = self, o = other
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_self, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_File))); 
  /* __pyx_t_2 allocated */
  __pyx_t_2 = (!__pyx_t_1);
  /* __pyx_t_1 released */
  if (__pyx_t_2) {
    /* __pyx_t_2 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":40
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(self,  File): return NotImplemented
 *         if not isinstance(other, File): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef File s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_TypeCheck(__pyx_v_other, ((PyTypeObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_File))); 
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (!__pyx_t_2);
  /* __pyx_t_2 released */
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":41
 *         if not isinstance(self,  File): return NotImplemented
 *         if not isinstance(other, File): return NotImplemented
 *         cdef File s = self, o = other             # <<<<<<<<<<<<<<
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 */
  if (!(__Pyx_TypeTest(__pyx_v_self, __pyx_ptype_6mpi4py_3MPI_File))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_self);
  __pyx_v_s = ((PyMPIFileObject *)__pyx_v_self);
  if (!(__Pyx_TypeTest(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_File))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_other);
  __pyx_v_o = ((PyMPIFileObject *)__pyx_v_other);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":42
 *         if not isinstance(other, File): return NotImplemented
 *         cdef File s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)             # <<<<<<<<<<<<<<
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 */
  switch (__pyx_v_op) {
    case 2:
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi == __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    case 3:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":43
 *         cdef File s = self, o = other
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)             # <<<<<<<<<<<<<<
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_s->ob_mpi != __pyx_v_o->ob_mpi)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    goto __pyx_L0;
    break;
    default:

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":44
 *         if   op == 2: return (s.ob_mpi == o.ob_mpi)
 *         elif op == 3: return (s.ob_mpi != o.ob_mpi)
 *         else: raise TypeError(mpistr("only '==' and '!='"))             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_142); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    /* __pyx_t_4 allocated */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    /* __pyx_t_3 allocated */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    /* __pyx_t_4 released */
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /* __pyx_t_3 released */
    {__pyx_filename = __pyx_f[25]; __pyx_lineno = 44; __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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.File.__richcmp__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":46
 *         else: raise TypeError(mpistr("only '==' and '!='"))
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_FILE_NULL
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_4File___nonzero__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4File___nonzero__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_SetupRefcountContext("__nonzero__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":47
 * 
 *     def __nonzero__(self):
 *         return self.ob_mpi != MPI_FILE_NULL             # <<<<<<<<<<<<<<
 * 
 *     # [9.2] File Manipulation
 */
  __pyx_r = (((PyMPIFileObject *)__pyx_v_self)->ob_mpi != MPI_FILE_NULL);
  goto __pyx_L0;

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

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":56
 * 
 *     @classmethod
 *     def Open(cls, Intracomm comm not None, filename,             # <<<<<<<<<<<<<<
 *              int amode=MODE_RDONLY, Info info=INFO_NULL):
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Open(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Open[] = "File.Open(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_Open(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_v_filename = 0;
  int __pyx_v_amode;
  PyMPIInfoObject *__pyx_v_info = 0;
  char *__pyx_v_cfilename;
  MPI_Info __pyx_v_cinfo;
  PyMPIFileObject *__pyx_v_file = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_comm,&__pyx_kp_filename,&__pyx_kp_amode,&__pyx_kp_info,0};
  __Pyx_SetupRefcountContext("Open");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[3] = (PyObject*)__pyx_k_85;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_comm);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_filename);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Open", 0, 2, 4, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_amode);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_info);
        if (unlikely(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[25]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_comm = ((PyMPIIntracommObject *)values[0]);
    __pyx_v_filename = values[1];
    if (values[2]) {
      __pyx_v_amode = __pyx_PyInt_int(values[2]); if (unlikely((__pyx_v_amode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_amode = __pyx_k_84;
    }
    __pyx_v_info = ((PyMPIInfoObject *)values[3]);
  } else {
    __pyx_v_amode = __pyx_k_84;
    __pyx_v_info = __pyx_k_85;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4:
      __pyx_v_info = ((PyMPIInfoObject *)PyTuple_GET_ITEM(__pyx_args, 3));
      case  3:
      __pyx_v_amode = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 2)); if (unlikely((__pyx_v_amode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  2:
      __pyx_v_filename = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_comm = ((PyMPIIntracommObject *)PyTuple_GET_ITEM(__pyx_args, 0));
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Open");
  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[25]; __pyx_lineno = 56; __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[25]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":61
 *         Open a file
 *         """
 *         cdef char *cfilename = NULL             # <<<<<<<<<<<<<<
 *         filename = asmpistr(filename, &cfilename, NULL)
 *         cdef MPI_Info cinfo = _arg_Info(info)
 */
  __pyx_v_cfilename = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":62
 *         """
 *         cdef char *cfilename = NULL
 *         filename = asmpistr(filename, &cfilename, NULL)             # <<<<<<<<<<<<<<
 *         cdef MPI_Info cinfo = _arg_Info(info)
 *         cdef File file = cls()
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_filename, (&__pyx_v_cfilename), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 62; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":63
 *         cdef char *cfilename = NULL
 *         filename = asmpistr(filename, &cfilename, NULL)
 *         cdef MPI_Info cinfo = _arg_Info(info)             # <<<<<<<<<<<<<<
 *         cdef File file = cls()
 *         with nogil: CHKERR( MPI_File_open(comm.ob_mpi, cfilename, amode, cinfo, &file.ob_mpi) )
 */
  __pyx_v_cinfo = __pyx_f_6mpi4py_3MPI__arg_Info(((PyObject *)__pyx_v_info));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":64
 *         filename = asmpistr(filename, &cfilename, NULL)
 *         cdef MPI_Info cinfo = _arg_Info(info)
 *         cdef File file = cls()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_open(comm.ob_mpi, cfilename, amode, cinfo, &file.ob_mpi) )
 *         # we are in charge or managing MPI errors
 */
  /* __pyx_t_1 allocated */
  __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 = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_File))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_file = ((PyMPIFileObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":65
 *         cdef MPI_Info cinfo = _arg_Info(info)
 *         cdef File file = cls()
 *         with nogil: CHKERR( MPI_File_open(comm.ob_mpi, cfilename, amode, cinfo, &file.ob_mpi) )             # <<<<<<<<<<<<<<
 *         # we are in charge or managing MPI errors
 *         CHKERR( MPI_File_set_errhandler( file.ob_mpi, MPI_ERRORS_RETURN) )
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __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[25]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":67
 *         with nogil: CHKERR( MPI_File_open(comm.ob_mpi, cfilename, amode, cinfo, &file.ob_mpi) )
 *         # we are in charge or managing MPI errors
 *         CHKERR( MPI_File_set_errhandler( file.ob_mpi, MPI_ERRORS_RETURN) )             # <<<<<<<<<<<<<<
 *         return file
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_errhandler(__pyx_v_file->ob_mpi, MPI_ERRORS_RETURN)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":68
 *         # we are in charge or managing MPI errors
 *         CHKERR( MPI_File_set_errhandler( file.ob_mpi, MPI_ERRORS_RETURN) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_file);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":73
 *     # ----------------------
 * 
 *     def Close(self):             # <<<<<<<<<<<<<<
 *         """
 *         Close a file
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Close(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Close[] = "File.Close(self)\n\n        Close a file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Close(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Close");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":77
 *         Close a file
 *         """
 *         with nogil: CHKERR( MPI_File_close(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [9.2.3] Deleting a File
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_close((&((PyMPIFileObject *)__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;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":83
 * 
 *     @classmethod
 *     def Delete(cls, filename, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *         """
 *         Delete a file
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Delete(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Delete[] = "File.Delete(cls, filename, Info info=INFO_NULL)\n\n        Delete a file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Delete(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_filename = 0;
  PyMPIInfoObject *__pyx_v_info = 0;
  char *__pyx_v_cfilename;
  MPI_Info __pyx_v_cinfo;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_filename,&__pyx_kp_info,0};
  __Pyx_SetupRefcountContext("Delete");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)__pyx_k_86;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_filename);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_info);
        if (unlikely(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[25]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_filename = values[0];
    __pyx_v_info = ((PyMPIInfoObject *)values[1]);
  } else {
    __pyx_v_info = __pyx_k_86;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_info = ((PyMPIInfoObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_filename = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Delete");
  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[25]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":87
 *         Delete a file
 *         """
 *         cdef char *cfilename = NULL             # <<<<<<<<<<<<<<
 *         filename = asmpistr(filename, &cfilename, NULL)
 *         cdef MPI_Info cinfo = _arg_Info(info)
 */
  __pyx_v_cfilename = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":88
 *         """
 *         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 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_filename, (&__pyx_v_cfilename), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 88; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_v_cinfo = __pyx_f_6mpi4py_3MPI__arg_Info(((PyObject *)__pyx_v_info));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":90
 *         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
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __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[25]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":95
 *     # -----------------------
 * 
 *     def Set_size(self, Offset size):             # <<<<<<<<<<<<<<
 *         """
 *         Sets the file size
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Set_size(PyObject *__pyx_v_self, PyObject *__pyx_arg_size); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Set_size[] = "File.Set_size(self, Offset size)\n\n        Sets the file size\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Set_size(PyObject *__pyx_v_self, PyObject *__pyx_arg_size) {
  __pyx_t_6mpi4py_3MPI_Offset __pyx_v_size;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Set_size");
  assert(__pyx_arg_size); {
    __pyx_v_size = __pyx_PyInt_AsLongLong(__pyx_arg_size); if (unlikely((__pyx_v_size == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_size");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":99
 *         Sets the file size
 *         """
 *         with nogil: CHKERR( MPI_File_set_size(self.ob_mpi, size) )             # <<<<<<<<<<<<<<
 * 
 *     # [9.2.5] Preallocating Space for a File
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_size(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_size)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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.Set_size");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":104
 *     # --------------------------------------
 * 
 *     def Preallocate(self, Offset size):             # <<<<<<<<<<<<<<
 *         """
 *         Preallocate storage space for a file
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Preallocate(PyObject *__pyx_v_self, PyObject *__pyx_arg_size); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Preallocate[] = "File.Preallocate(self, Offset size)\n\n        Preallocate storage space for a file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Preallocate(PyObject *__pyx_v_self, PyObject *__pyx_arg_size) {
  __pyx_t_6mpi4py_3MPI_Offset __pyx_v_size;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Preallocate");
  assert(__pyx_arg_size); {
    __pyx_v_size = __pyx_PyInt_AsLongLong(__pyx_arg_size); if (unlikely((__pyx_v_size == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Preallocate");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":108
 *         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
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_preallocate(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_size)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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.Preallocate");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":112
 *     # [9.2.6] Querying the Size of a File
 *     # -----------------------------------
 *     def Get_size(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the file size
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Get_size(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Get_size[] = "File.Get_size(self)\n\n        Return the file size\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Get_size(PyObject *__pyx_v_self, PyObject *unused) {
  MPI_Offset __pyx_v_size;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_size");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":116
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":117
 *         """
 *         cdef MPI_Offset size = 0
 *         with nogil: CHKERR( MPI_File_get_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_size(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":118
 *         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 allocated */
  __pyx_t_2 = PyLong_FromLongLong(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":122
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":123
 *         """file size"""
 *         def __get__(self):
 *             return self.Get_size()             # <<<<<<<<<<<<<<
 * 
 *     # [9.2.7] Querying File Parameters
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __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 = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":128
 *     # --------------------------------
 * 
 *     def Get_group(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the group of processes
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Get_group(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Get_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_Get_group(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Get_group");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":133
 *         that opened the file
 *         """
 *         cdef Group group = Group()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_group(self.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  /* __pyx_t_1 allocated */
  __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 = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Group))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_group = ((PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":134
 *         """
 *         cdef Group group = Group()
 *         with nogil: CHKERR( MPI_File_get_group(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_group(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":135
 *         cdef Group group = 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":139
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":140
 *         """file group"""
 *         def __get__(self):
 *             return self.Get_group()             # <<<<<<<<<<<<<<
 * 
 *     def Get_amode(self):
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_group); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __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 = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":142
 *             return self.Get_group()
 * 
 *     def Get_amode(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the file access mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Get_amode(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Get_amode[] = "File.Get_amode(self)\n\n        Return the file access mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Get_amode(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_amode;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_amode");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":146
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":147
 *         """
 *         cdef int amode = 0
 *         with nogil: CHKERR( MPI_File_get_amode(self.ob_mpi, &amode) )             # <<<<<<<<<<<<<<
 *         return amode
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_amode(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_amode))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":148
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_amode); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":152
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":153
 *         """file access mode"""
 *         def __get__(self):
 *             return self.Get_amode()             # <<<<<<<<<<<<<<
 * 
 *     # [9.2.8] File Info
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_amode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __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 = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":158
 *     # -----------------
 * 
 *     def Set_info(self, Info info not None):             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Set_info(PyObject *__pyx_v_self, PyObject *__pyx_v_info); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Set_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_Set_info(PyObject *__pyx_v_self, PyObject *__pyx_v_info) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Set_info");
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":163
 *         associated with a file
 *         """
 *         with nogil: CHKERR( MPI_File_set_info(self.ob_mpi, info.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_info(self):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_info(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, ((PyMPIInfoObject *)__pyx_v_info)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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.Set_info");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":165
 *         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_Get_info(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Get_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_Get_info(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Get_info");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":170
 *         are actually being used by MPI
 *         """
 *         cdef Info info = Info()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_info(self.ob_mpi, &info.ob_mpi) )
 *         return info
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Info)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_info = ((PyMPIInfoObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":171
 *         """
 *         cdef Info info = Info()
 *         with nogil: CHKERR( MPI_File_get_info(self.ob_mpi, &info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_info(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":172
 *         cdef Info info = 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":176
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":177
 *         """file info"""
 *         def __get__(self):
 *             return self.Get_info()             # <<<<<<<<<<<<<<
 *         def __set__(self, info):
 *             self.Set_info(info)
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_info); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __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 = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":178
 *         def __get__(self):
 *             return self.Get_info()
 *         def __set__(self, info):             # <<<<<<<<<<<<<<
 *             self.Set_info(info)
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_4File_4info___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_info); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4File_4info___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_info) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__set__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":179
 *             return self.Get_info()
 *         def __set__(self, info):
 *             self.Set_info(info)             # <<<<<<<<<<<<<<
 * 
 *     # [9.3] File Views
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Set_info); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 179; __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 allocated */
  __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 = 179; __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_t_1 released */
  /* __pyx_t_2 released */
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  __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_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":184
 *     # ----------------
 * 
 *     def Set_view(self, Offset disp=0,             # <<<<<<<<<<<<<<
 *                  Datatype etype=None, Datatype filetype=None,
 *                  datarep=None, Info info=INFO_NULL):
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Set_view(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Set_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_Set_view(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_6mpi4py_3MPI_Offset __pyx_v_disp;
  PyMPIDatatypeObject *__pyx_v_etype = 0;
  PyMPIDatatypeObject *__pyx_v_filetype = 0;
  PyObject *__pyx_v_datarep = 0;
  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;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_disp,&__pyx_kp_etype,&__pyx_kp_filetype,&__pyx_kp_datarep,&__pyx_kp_info,0};
  __Pyx_SetupRefcountContext("Set_view");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[5] = {0,0,0,0,0};
    values[1] = (PyObject*)((PyMPIDatatypeObject *)Py_None);
    values[2] = (PyObject*)((PyMPIDatatypeObject *)Py_None);
    values[3] = Py_None;
    values[4] = (PyObject*)__pyx_k_87;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_disp);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_etype);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_filetype);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_datarep);
        if (unlikely(value)) { values[3] = value; kw_args--; }
      }
      case  4:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_info);
        if (unlikely(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[25]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    if (values[0]) {
      __pyx_v_disp = __pyx_PyInt_AsLongLong(values[0]); if (unlikely((__pyx_v_disp == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_disp = 0;
    }
    __pyx_v_etype = ((PyMPIDatatypeObject *)values[1]);
    __pyx_v_filetype = ((PyMPIDatatypeObject *)values[2]);
    __pyx_v_datarep = values[3];
    __pyx_v_info = ((PyMPIInfoObject *)values[4]);
  } else {
    __pyx_v_disp = 0;
    __pyx_v_etype = ((PyMPIDatatypeObject *)Py_None);
    __pyx_v_filetype = ((PyMPIDatatypeObject *)Py_None);
    __pyx_v_datarep = Py_None;
    __pyx_v_info = __pyx_k_87;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  5: __pyx_v_info = ((PyMPIInfoObject *)PyTuple_GET_ITEM(__pyx_args, 4));
      case  4: __pyx_v_datarep = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: __pyx_v_filetype = ((PyMPIDatatypeObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2: __pyx_v_etype = ((PyMPIDatatypeObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_disp = __pyx_PyInt_AsLongLong(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_disp == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_view");
  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[25]; __pyx_lineno = 185; __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[25]; __pyx_lineno = 185; __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[25]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":190
 *         Set the file view
 *         """
 *         if datarep is None: datarep = mpistr('native')             # <<<<<<<<<<<<<<
 *         cdef char *cdatarep = NULL
 *         datarep = asmpistr(datarep, &cdatarep, NULL)
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (__pyx_v_datarep == Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    /* __pyx_t_2 allocated */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_143); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 190; __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;
    /* __pyx_t_2 released */
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":191
 *         """
 *         if datarep is None: datarep = mpistr('native')
 *         cdef char *cdatarep = NULL             # <<<<<<<<<<<<<<
 *         datarep = asmpistr(datarep, &cdatarep, NULL)
 *         cdef MPI_Datatype cetype = MPI_BYTE
 */
  __pyx_v_cdatarep = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":192
 *         if datarep is None: datarep = mpistr('native')
 *         cdef char *cdatarep = NULL
 *         datarep = asmpistr(datarep, &cdatarep, NULL)             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype cetype = MPI_BYTE
 *         if etype is not None: cetype = etype.ob_mpi
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_datarep, (&__pyx_v_cdatarep), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __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;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":193
 *         cdef char *cdatarep = NULL
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":194
 *         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 allocated */
  __pyx_t_1 = (((PyObject *)__pyx_v_etype) != Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_v_cetype = __pyx_v_etype->ob_mpi;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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;

  /* "/u/dalcinl/Devel/mpi4py-dev/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(self.ob_mpi, disp, cetype, cftype, cdatarep, cinfo) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = (((PyObject *)__pyx_v_filetype) != Py_None);
  if (__pyx_t_1) {
    /* __pyx_t_1 released */
    __pyx_v_cftype = __pyx_v_filetype->ob_mpi;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/u/dalcinl/Devel/mpi4py-dev/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));

  /* "/u/dalcinl/Devel/mpi4py-dev/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) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_view(self):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_3 allocated */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_view(((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[25]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L10;}
      /* __pyx_t_3 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":200
 *         with nogil: CHKERR( MPI_File_set_view(self.ob_mpi, disp, cetype, cftype, cdatarep, cinfo) )
 * 
 *     def Get_view(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the file view
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Get_view(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Get_view[] = "File.Get_view(self)\n\n        Return the file view\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Get_view(PyObject *__pyx_v_self, PyObject *unused) {
  MPI_Offset __pyx_v_disp;
  PyMPIDatatypeObject *__pyx_v_etype = 0;
  PyMPIDatatypeObject *__pyx_v_ftype = 0;
  char __pyx_v_cdatarep[(MPI_MAX_DATAREP_STRING + 1)];
  PyObject *__pyx_v_datarep;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("Get_view");
  __pyx_v_datarep = Py_None; __Pyx_INCREF(Py_None);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":204
 *         Return the file view
 *         """
 *         cdef MPI_Offset disp = 0             # <<<<<<<<<<<<<<
 *         cdef Datatype etype = Datatype()
 *         cdef Datatype ftype = Datatype()
 */
  __pyx_v_disp = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":205
 *         """
 *         cdef MPI_Offset disp = 0
 *         cdef Datatype etype = Datatype()             # <<<<<<<<<<<<<<
 *         cdef Datatype ftype = Datatype()
 *         cdef char cdatarep[MPI_MAX_DATAREP_STRING+1]
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_etype = ((PyMPIDatatypeObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":206
 *         cdef MPI_Offset disp = 0
 *         cdef Datatype etype = Datatype()
 *         cdef Datatype ftype = 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) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Datatype)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_ftype = ((PyMPIDatatypeObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":208
 *         cdef Datatype ftype = 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_Datatype(etype); _fix_Datatype(ftype)
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0 # just in case
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_view(((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[25]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":209
 *         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_Datatype(etype); _fix_Datatype(ftype)             # <<<<<<<<<<<<<<
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0 # just in case
 *         datarep = mpistr(cdatarep)
 */
  __pyx_f_6mpi4py_3MPI__fix_Datatype(__pyx_v_etype);
  __pyx_f_6mpi4py_3MPI__fix_Datatype(__pyx_v_ftype);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":210
 *         with nogil: CHKERR( MPI_File_get_view(self.ob_mpi, &disp, &etype.ob_mpi, &ftype.ob_mpi, cdatarep) )
 *         _fix_Datatype(etype); _fix_Datatype(ftype)
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0 # just in case             # <<<<<<<<<<<<<<
 *         datarep = mpistr(cdatarep)
 *         return (disp, etype, ftype, datarep)
 */
  (__pyx_v_cdatarep[MPI_MAX_DATAREP_STRING]) = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":211
 *         _fix_Datatype(etype); _fix_Datatype(ftype)
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0 # just in case
 *         datarep = mpistr(cdatarep)             # <<<<<<<<<<<<<<
 *         return (disp, etype, ftype, datarep)
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_cdatarep); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 211; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":212
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0 # just in case
 *         datarep = mpistr(cdatarep)
 *         return (disp, etype, ftype, datarep)             # <<<<<<<<<<<<<<
 * 
 *     # [9.4] Data Access
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyLong_FromLongLong(__pyx_v_disp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 212; __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_t_1 released */
  __pyx_r = ((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_etype);
  __Pyx_XDECREF((PyObject *)__pyx_v_ftype);
  __Pyx_DECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":220
 *     # -----------------------------------------
 * 
 *     def Read_at(self, Offset offset, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Read using explicit offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Read_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Read_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_Read_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_6mpi4py_3MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_offset,&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Read_at");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Read_at", 0, 2, 3, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_offset = __pyx_PyInt_AsLongLong(values[0]); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
    __pyx_v_status = ((PyMPIStatusObject *)values[2]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2:
      __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_offset = __pyx_PyInt_AsLongLong(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at");
  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[25]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":224
 *         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(self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 224; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":225
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":226
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Read_at_all(self, Offset offset, buf, Status status=None):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_at(((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[25]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":228
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Collective read using explicit offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Read_at_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Read_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_Read_at_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_6mpi4py_3MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_offset,&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Read_at_all");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Read_at_all", 0, 2, 3, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_offset = __pyx_PyInt_AsLongLong(values[0]); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
    __pyx_v_status = ((PyMPIStatusObject *)values[2]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2:
      __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_offset = __pyx_PyInt_AsLongLong(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all");
  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[25]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":232
 *         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(self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 232; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":233
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":234
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_at(self, Offset offset, buf, Status status=None):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_at_all(((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[25]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":236
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Write using explicit offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Write_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Write_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_Write_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_6mpi4py_3MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_offset,&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Write_at");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Write_at", 0, 2, 3, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_offset = __pyx_PyInt_AsLongLong(values[0]); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
    __pyx_v_status = ((PyMPIStatusObject *)values[2]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2:
      __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_offset = __pyx_PyInt_AsLongLong(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at");
  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[25]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":240
 *         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(self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 240; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":241
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":242
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_at_all(self, Offset offset, buf, Status status=None):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_at(((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[25]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":244
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Collective write using explicit offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Write_at_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Write_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_Write_at_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_6mpi4py_3MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_offset,&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Write_at_all");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Write_at_all", 0, 2, 3, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_offset = __pyx_PyInt_AsLongLong(values[0]); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
    __pyx_v_status = ((PyMPIStatusObject *)values[2]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2:
      __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_offset = __pyx_PyInt_AsLongLong(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all");
  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[25]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":248
 *         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(self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 248; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":249
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":250
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Iread_at(self, Offset offset, buf):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_at_all(((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[25]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":252
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking read using explicit offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Iread_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Iread_at[] = "File.Iread_at(self, Offset offset, buf)\n\n        Nonblocking read using explicit offset\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Iread_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_6mpi4py_3MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_offset,&__pyx_kp_buf,0};
  __Pyx_SetupRefcountContext("Iread_at");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Iread_at", 1, 2, 2, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 252; __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[25]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_offset = __pyx_PyInt_AsLongLong(values[0]); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_offset = __pyx_PyInt_AsLongLong(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 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[25]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread_at");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":256
 *         Nonblocking read using explicit offset
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iread_at(self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 256; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":257
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = Request()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iread_at(self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         return request
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":258
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iread_at(self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iread_at(((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[25]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":259
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iread_at(self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":261
 *         return request
 * 
 *     def Iwrite_at(self, Offset offset, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking write using explicit offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Iwrite_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Iwrite_at[] = "File.Iwrite_at(self, Offset offset, buf)\n\n        Nonblocking write using explicit offset\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Iwrite_at(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_6mpi4py_3MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_offset,&__pyx_kp_buf,0};
  __Pyx_SetupRefcountContext("Iwrite_at");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Iwrite_at", 1, 2, 2, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 261; __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[25]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_offset = __pyx_PyInt_AsLongLong(values[0]); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_offset = __pyx_PyInt_AsLongLong(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 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[25]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite_at");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":265
 *         Nonblocking write using explicit offset
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iwrite_at(self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 265; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":266
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = Request()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iwrite_at(self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         return request
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":267
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iwrite_at(self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iwrite_at(((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[25]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":268
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iwrite_at(self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":273
 *     # -------------------------------------------------
 * 
 *     def Read(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Read using individual file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Read[] = "File.Read(self, buf, Status status=None)\n\n        Read using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Read");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read");
  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[25]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":277
 *         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(self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 277; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":278
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":279
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Read_all(self, buf, Status status=None):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read(((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[25]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":281
 *         with nogil: CHKERR( MPI_File_read(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_Read_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Read_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_Read_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Read_all");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all");
  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[25]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":285
 *         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(self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 285; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":286
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":287
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Write(self, buf, Status status=None):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_all(((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[25]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":289
 *         with nogil: CHKERR( MPI_File_read_all(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_Write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Write[] = "File.Write(self, buf, Status status=None)\n\n        Write using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Write");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write");
  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[25]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":293
 *         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(self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 293; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":294
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":295
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_all(self, buf, Status status=None):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write(((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[25]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":297
 *         with nogil: CHKERR( MPI_File_write(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_Write_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Write_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_Write_all(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Write_all");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all");
  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[25]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":301
 *         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(self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 301; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":302
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":303
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Iread(self, buf):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_all(((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[25]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":305
 *         with nogil: CHKERR( MPI_File_write_all(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_Iread(PyObject *__pyx_v_self, PyObject *__pyx_v_buf); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Iread[] = "File.Iread(self, buf)\n\n        Nonblocking read using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Iread(PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Iread");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":309
 *         Nonblocking read using individual file pointer
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iread(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 309; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":310
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = Request()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iread(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         return request
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":311
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iread(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iread(((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[25]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":312
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iread(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":314
 *         return request
 * 
 *     def Iwrite(self, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking write using individual file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Iwrite(PyObject *__pyx_v_self, PyObject *__pyx_v_buf); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Iwrite[] = "File.Iwrite(self, buf)\n\n        Nonblocking write using individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Iwrite(PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Iwrite");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":318
 *         Nonblocking write using individual file pointer
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iwrite(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 318; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":319
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = Request()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iwrite(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         return request
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":320
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iwrite(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iwrite(((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[25]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":321
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iwrite(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":323
 *         return request
 * 
 *     def Seek(self, Offset offset, int whence=SEEK_SET):             # <<<<<<<<<<<<<<
 *         """
 *         Update the individual file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Seek(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Seek[] = "File.Seek(self, Offset offset, int whence=SEEK_SET)\n\n        Update the individual file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Seek(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_6mpi4py_3MPI_Offset __pyx_v_offset;
  int __pyx_v_whence;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_offset,&__pyx_kp_whence,0};
  __Pyx_SetupRefcountContext("Seek");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_whence);
        if (unlikely(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[25]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_offset = __pyx_PyInt_AsLongLong(values[0]); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    if (values[1]) {
      __pyx_v_whence = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_whence == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_whence = __pyx_k_88;
    }
  } else {
    __pyx_v_whence = __pyx_k_88;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_whence = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_whence == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_offset = __pyx_PyInt_AsLongLong(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Seek");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":327
 *         Update the individual file pointer
 *         """
 *         with nogil: CHKERR( MPI_File_seek(self.ob_mpi, offset, whence) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_position(self):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_seek(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, __pyx_v_whence)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":329
 *         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_Get_position(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Get_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_Get_position(PyObject *__pyx_v_self, PyObject *unused) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_position");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":334
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":335
 *         """
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position(self.ob_mpi, &offset) )             # <<<<<<<<<<<<<<
 *         return offset
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_position(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_offset))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":336
 *         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 allocated */
  __pyx_t_2 = PyLong_FromLongLong(__pyx_v_offset); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":338
 *         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_Get_byte_offset(PyObject *__pyx_v_self, PyObject *__pyx_arg_offset); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Get_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_Get_byte_offset(PyObject *__pyx_v_self, PyObject *__pyx_arg_offset) {
  __pyx_t_6mpi4py_3MPI_Offset __pyx_v_offset;
  MPI_Offset __pyx_v_disp;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_byte_offset");
  assert(__pyx_arg_offset); {
    __pyx_v_offset = __pyx_PyInt_AsLongLong(__pyx_arg_offset); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_byte_offset");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":343
 *         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) )
 *         return disp
 */
  __pyx_v_disp = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":344
 *         """
 *         cdef MPI_Offset disp = 0
 *         with nogil: CHKERR( MPI_File_get_byte_offset(self.ob_mpi, offset, &disp) )             # <<<<<<<<<<<<<<
 *         return disp
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_byte_offset(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, (&__pyx_v_disp))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":345
 *         cdef MPI_Offset disp = 0
 *         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 allocated */
  __pyx_t_2 = PyLong_FromLongLong(__pyx_v_disp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":350
 *     # ---------------------------------------------
 * 
 *     def Read_shared(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Read using shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Read_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Read_shared[] = "File.Read_shared(self, buf, Status status=None)\n\n        Read using shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Read_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Read_shared");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_shared");
  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[25]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":354
 *         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(self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 354; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":355
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":356
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_shared(self, buf, Status status=None):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_shared(((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[25]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":358
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Write using shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Write_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Write_shared[] = "File.Write_shared(self, buf, Status status=None)\n\n        Write using shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Write_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Write_shared");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_shared");
  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[25]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":362
 *         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(self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 362; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":363
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":364
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Iread_shared(self, buf):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_shared(((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[25]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":366
 *         with nogil: CHKERR( MPI_File_write_shared(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_Iread_shared(PyObject *__pyx_v_self, PyObject *__pyx_v_buf); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Iread_shared[] = "File.Iread_shared(self, buf)\n\n        Nonblocking read using shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Iread_shared(PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Iread_shared");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":370
 *         Nonblocking read using shared file pointer
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iread_shared(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 370; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":371
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = Request()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iread_shared(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         return request
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":372
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iread_shared(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iread_shared(((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[25]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":373
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iread_shared(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":375
 *         return request
 * 
 *     def Iwrite_shared(self, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking write using shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Iwrite_shared(PyObject *__pyx_v_self, PyObject *__pyx_v_buf); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Iwrite_shared[] = "File.Iwrite_shared(self, buf)\n\n        Nonblocking write using shared file pointer\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Iwrite_shared(PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Iwrite_shared");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":379
 *         Nonblocking write using shared file pointer
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iwrite_shared(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 379; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":380
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = Request()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iwrite_shared(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         return request
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Request)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Request))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_request = ((PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":381
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iwrite_shared(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iwrite_shared(((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[25]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":382
 *         cdef Request request = Request()
 *         with nogil: CHKERR( MPI_File_iwrite_shared(self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":384
 *         return request
 * 
 *     def Read_ordered(self, buf, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Collective read using shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Read_ordered(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Read_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_Read_ordered(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Read_ordered");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered");
  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[25]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":388
 *         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(self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 388; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":389
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":390
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_ordered(self, buf, Status status=None):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_ordered(((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[25]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":392
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Collective write using shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Write_ordered(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Write_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_Write_ordered(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Write_ordered");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered");
  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[25]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":396
 *         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(self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 396; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":397
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":398
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Seek_shared(self, Offset offset, int whence=SEEK_SET):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_ordered(((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[25]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":400
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Update the shared file pointer
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Seek_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Seek_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_Seek_shared(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_6mpi4py_3MPI_Offset __pyx_v_offset;
  int __pyx_v_whence;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_offset,&__pyx_kp_whence,0};
  __Pyx_SetupRefcountContext("Seek_shared");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_whence);
        if (unlikely(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[25]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_offset = __pyx_PyInt_AsLongLong(values[0]); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    if (values[1]) {
      __pyx_v_whence = __pyx_PyInt_int(values[1]); if (unlikely((__pyx_v_whence == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_whence = __pyx_k_89;
    }
  } else {
    __pyx_v_whence = __pyx_k_89;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_whence = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_whence == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  1: __pyx_v_offset = __pyx_PyInt_AsLongLong(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Seek_shared");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":404
 *         Update the shared file pointer
 *         """
 *         with nogil: CHKERR( MPI_File_seek_shared(self.ob_mpi, offset, whence) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_position_shared(self):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_seek_shared(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_offset, __pyx_v_whence)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":406
 *         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_Get_position_shared(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Get_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_Get_position_shared(PyObject *__pyx_v_self, PyObject *unused) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_position_shared");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":411
 *         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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":412
 *         """
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position_shared(self.ob_mpi, &offset) )             # <<<<<<<<<<<<<<
 *         return offset
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_position_shared(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_offset))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":413
 *         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 allocated */
  __pyx_t_2 = PyLong_FromLongLong(__pyx_v_offset); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":420
 *     # 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_Read_at_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Read_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_Read_at_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_6mpi4py_3MPI_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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_offset,&__pyx_kp_buf,0};
  __Pyx_SetupRefcountContext("Read_at_all_begin");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Read_at_all_begin", 1, 2, 2, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 420; __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[25]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_offset = __pyx_PyInt_AsLongLong(values[0]); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_offset = __pyx_PyInt_AsLongLong(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 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[25]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all_begin");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":424
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 424; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":425
 *         """
 *         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):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_at_all_begin(((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[25]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":427
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Complete a split collective read using explict offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Read_at_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Read_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_Read_at_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Read_at_all_end");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all_end");
  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[25]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":431
 *         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(self.ob_mpi, m.buf, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 431; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":432
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":433
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_at_all_begin(self, Offset offset, buf):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_at_all_end(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":435
 *         with nogil: CHKERR( MPI_File_read_at_all_end(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_Write_at_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Write_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_Write_at_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_6mpi4py_3MPI_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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_offset,&__pyx_kp_buf,0};
  __Pyx_SetupRefcountContext("Write_at_all_begin");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_offset);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("Write_at_all_begin", 1, 2, 2, 1); {__pyx_filename = __pyx_f[25]; __pyx_lineno = 435; __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[25]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_offset = __pyx_PyInt_AsLongLong(values[0]); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_offset = __pyx_PyInt_AsLongLong(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_offset == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 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[25]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all_begin");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":439
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __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_io *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":440
 *         """
 *         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):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_at_all_begin(((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[25]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":442
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Complete a split collective write using explict offset
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Write_at_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Write_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_Write_at_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Write_at_all_end");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all_end");
  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[25]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":446
 *         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(self.ob_mpi, m.buf, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 446; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":447
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":448
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     # individual file pointer
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_at_all_end(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":452
 *     # individual file pointer
 * 
 *     def Read_all_begin(self, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Start a split collective read
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Read_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_v_buf); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Read_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_Read_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Read_all_begin");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":457
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 457; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":458
 *         """
 *         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):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_all_begin(((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[25]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all_begin");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":460
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Complete a split collective read
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Read_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Read_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_Read_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Read_all_end");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all_end");
  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[25]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":465
 *         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(self.ob_mpi, m.buf, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 465; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":466
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":467
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_all_begin(self, buf):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_all_end(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":469
 *         with nogil: CHKERR( MPI_File_read_all_end(self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_all_begin(self, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Start a split collective write
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Write_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_v_buf); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Write_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_Write_all_begin(PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Write_all_begin");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":474
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 474; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":475
 *         """
 *         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):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_all_begin(((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[25]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all_begin");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":477
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Complete a split collective write
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Write_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Write_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_Write_all_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Write_all_end");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all_end");
  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[25]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":482
 *         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(self.ob_mpi, m.buf, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 482; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":483
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":484
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     # shared file pointer
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_all_end(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":488
 *     # shared file pointer
 * 
 *     def Read_ordered_begin(self, buf):             # <<<<<<<<<<<<<<
 *         """
 *         Start a split collective read
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Read_ordered_begin(PyObject *__pyx_v_self, PyObject *__pyx_v_buf); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Read_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_Read_ordered_begin(PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Read_ordered_begin");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":493
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 493; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":494
 *         """
 *         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):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_ordered_begin(((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[25]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered_begin");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":496
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Complete a split collective read
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Read_ordered_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Read_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_Read_ordered_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Read_ordered_end");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered_end");
  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[25]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":501
 *         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(self.ob_mpi, m.buf, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 501; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":502
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":503
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_ordered_begin(self, buf):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_ordered_end(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":505
 *         with nogil: CHKERR( MPI_File_read_ordered_end(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_Write_ordered_begin(PyObject *__pyx_v_self, PyObject *__pyx_v_buf); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Write_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_Write_ordered_begin(PyObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Write_ordered_begin");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":510
 *         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 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 510; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":511
 *         """
 *         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):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_ordered_begin(((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[25]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered_begin");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":513
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Complete a split collective write
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Write_ordered_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Write_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_Write_ordered_end(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_buf = 0;
  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;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_buf,&__pyx_kp_status,0};
  __Pyx_SetupRefcountContext("Write_ordered_end");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((PyMPIStatusObject *)Py_None);
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_buf);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_status);
        if (unlikely(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[25]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((PyMPIStatusObject *)values[1]);
  } else {
    __pyx_v_status = ((PyMPIStatusObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_status = ((PyMPIStatusObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_buf = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[25]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered_end");
  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[25]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":518
 *         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(self.ob_mpi, m.buf, statusp) )
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 518; __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;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":519
 *         """
 *         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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":520
 *         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) )             # <<<<<<<<<<<<<<
 * 
 *     # [9.5] File Interoperability
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_ordered_end(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L7;}
      /* __pyx_t_2 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":528
 *     # -------------------------------------------
 * 
 *     def Get_type_extent(self, Datatype datatype not None):             # <<<<<<<<<<<<<<
 *         """
 *         Return the extent of datatype in the file
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Get_type_extent(PyObject *__pyx_v_self, PyObject *__pyx_v_datatype); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Get_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_Get_type_extent(PyObject *__pyx_v_self, PyObject *__pyx_v_datatype) {
  MPI_Aint __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_type_extent");
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":532
 *         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) )
 *         return extent
 */
  __pyx_v_extent = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":533
 *         """
 *         cdef MPI_Aint extent = 0
 *         with nogil: CHKERR( MPI_File_get_type_extent(self.ob_mpi, datatype.ob_mpi, &extent) )             # <<<<<<<<<<<<<<
 *         return extent
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_type_extent(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, ((PyMPIDatatypeObject *)__pyx_v_datatype)->ob_mpi, (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":534
 *         cdef MPI_Aint extent = 0
 *         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 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_extent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":542
 *     # ------------------------
 * 
 *     def Set_atomicity(self, bint flag):             # <<<<<<<<<<<<<<
 *         """
 *         Set the atomicity mode
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Set_atomicity(PyObject *__pyx_v_self, PyObject *__pyx_arg_flag); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Set_atomicity[] = "File.Set_atomicity(self, int flag)\n\n        Set the atomicity mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Set_atomicity(PyObject *__pyx_v_self, PyObject *__pyx_arg_flag) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Set_atomicity");
  assert(__pyx_arg_flag); {
    __pyx_v_flag = __Pyx_PyObject_IsTrue(__pyx_arg_flag); if (unlikely((__pyx_v_flag == (int)-1))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_atomicity");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":546
 *         Set the atomicity mode
 *         """
 *         with nogil: CHKERR( MPI_File_set_atomicity(self.ob_mpi, flag) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_atomicity(self):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_atomicity(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_flag)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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.Set_atomicity");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":548
 *         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_Get_atomicity(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Get_atomicity[] = "File.Get_atomicity(self)\n\n        Return the atomicity mode\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Get_atomicity(PyObject *__pyx_v_self, PyObject *unused) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_atomicity");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":552
 *         Return the atomicity mode
 *         """
 *         cdef bint flag = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_atomicity(self.ob_mpi, &flag) )
 *         return flag
 */
  __pyx_v_flag = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":553
 *         """
 *         cdef bint flag = 0
 *         with nogil: CHKERR( MPI_File_get_atomicity(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_atomicity(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, ((int *)(&__pyx_v_flag)))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":554
 *         cdef bint flag = 0
 *         with nogil: CHKERR( MPI_File_get_atomicity(self.ob_mpi, &flag) )
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     property atomicity:
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":558
 *     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;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("__get__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":559
 *         """atomicity"""
 *         def __get__(self):
 *             return self.Get_atomicity()             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self.Set_atomicity(value)
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Get_atomicity); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __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 = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":560
 *         def __get__(self):
 *             return self.Get_atomicity()
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self.Set_atomicity(value)
 * 
 */

static int __pyx_pf_6mpi4py_3MPI_4File_9atomicity___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_6mpi4py_3MPI_4File_9atomicity___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_SetupRefcountContext("__set__");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":561
 *             return self.Get_atomicity()
 *         def __set__(self, value):
 *             self.Set_atomicity(value)             # <<<<<<<<<<<<<<
 * 
 *     def Sync(self):
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_kp_Set_atomicity); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 561; __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 allocated */
  __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 = 561; __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_t_1 released */
  /* __pyx_t_2 released */
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  __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_r = -1;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":563
 *             self.Set_atomicity(value)
 * 
 *     def Sync(self):             # <<<<<<<<<<<<<<
 *         """
 *         Causes all previous writes to be
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Sync(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Sync[] = "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_Sync(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Sync");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":568
 *         transferred to the storage device
 *         """
 *         with nogil: CHKERR( MPI_File_sync(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # [9.7] I/O Error Handling
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_sync(((PyMPIFileObject *)__pyx_v_self)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":573
 *     # ------------------------
 * 
 *     def Get_errhandler(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a file
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Get_errhandler(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Get_errhandler[] = "File.Get_errhandler(self)\n\n        Get the error handler for a file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Get_errhandler(PyObject *__pyx_v_self, PyObject *unused) {
  PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Get_errhandler");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":577
 *         Get the error handler for a file
 *         """
 *         cdef Errhandler errhandler = Errhandler()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI_Errhandler)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Errhandler))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_errhandler = ((PyMPIErrhandlerObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":578
 *         """
 *         cdef Errhandler errhandler = Errhandler()
 *         with nogil: CHKERR( MPI_File_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_2 allocated */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_errhandler(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_2 released */
    }
    /*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;
      }
    }
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":579
 *         cdef Errhandler errhandler = Errhandler()
 *         with nogil: 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":581
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler not None):             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a file
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Set_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_v_errhandler); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Set_errhandler[] = "File.Set_errhandler(self, Errhandler errhandler)\n\n        Set the error handler for a file\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_Set_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_v_errhandler) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Set_errhandler");
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":585
 *         Set the error handler for a file
 *         """
 *         with nogil: CHKERR( MPI_File_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Call_errhandler(self, int errorcode):
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_errhandler(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, ((PyMPIErrhandlerObject *)__pyx_v_errhandler)->ob_mpi)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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.Set_errhandler");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":587
 *         with nogil: 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_Call_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_arg_errorcode); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_Call_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_Call_errhandler(PyObject *__pyx_v_self, PyObject *__pyx_arg_errorcode) {
  int __pyx_v_errorcode;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Call_errhandler");
  assert(__pyx_arg_errorcode); {
    __pyx_v_errorcode = __pyx_PyInt_int(__pyx_arg_errorcode); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Call_errhandler");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":591
 *         Call the error handler installed on a file
 *         """
 *         with nogil: CHKERR( MPI_File_call_errhandler(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  /*with nogil:*/ {
    PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {
      /* __pyx_t_1 allocated */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_call_errhandler(((PyMPIFileObject *)__pyx_v_self)->ob_mpi, __pyx_v_errorcode)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L6;}
      /* __pyx_t_1 released */
    }
    /*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.Call_errhandler");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":596
 *     # --------------
 * 
 *     def py2f(self):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_py2f(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_py2f[] = "File.py2f(self)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_py2f(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("py2f");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":599
 *         """
 *         """
 *         return MPI_File_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyInt_FromLong(MPI_File_c2f(((PyMPIFileObject *)__pyx_v_self)->ob_mpi)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":602
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_4File_f2py[] = "File.f2py(cls, arg)\n\n        ";
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_f2py(PyObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyMPIFileObject *__pyx_v_file = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  MPI_Fint __pyx_t_2;
  __Pyx_SetupRefcountContext("f2py");

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":605
 *         """
 *         """
 *         cdef File file = cls()             # <<<<<<<<<<<<<<
 *         file.ob_mpi = MPI_File_f2c(arg)
 *         return file
 */
  /* __pyx_t_1 allocated */
  __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 = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_File))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_file = ((PyMPIFileObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":606
 *         """
 *         cdef File file = cls()
 *         file.ob_mpi = MPI_File_f2c(arg)             # <<<<<<<<<<<<<<
 *         return file
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_PyInt_long(__pyx_v_arg); if (unlikely((__pyx_t_2 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_file->ob_mpi = MPI_File_f2c(__pyx_t_2);
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":607
 *         cdef 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_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_file);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":86
 * # -----------------
 * 
 * def Alloc_mem(Aint size, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *     """
 *     Allocate memory for message passing and RMA
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Alloc_mem(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Alloc_mem[] = "Alloc_mem(Aint size, Info info=INFO_NULL)\n\n    Allocate memory for message passing and RMA\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Alloc_mem(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  __pyx_t_6mpi4py_3MPI_Aint __pyx_v_size;
  PyMPIInfoObject *__pyx_v_info = 0;
  void *__pyx_v_base;
  MPI_Info __pyx_v_cinfo;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_size,&__pyx_kp_info,0};
  __Pyx_SetupRefcountContext("Alloc_mem");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)__pyx_k_90;
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_kp_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_kp_info);
        if (unlikely(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[26]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_size = __pyx_PyInt_long(values[0]); if (unlikely((__pyx_v_size == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_info = ((PyMPIInfoObject *)values[1]);
  } else {
    __pyx_v_info = __pyx_k_90;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_info = ((PyMPIInfoObject *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_size = __pyx_PyInt_long(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_size == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[26]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Alloc_mem");
  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[26]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":90
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":91
 *     """
 *     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));

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":92
 *     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 allocated */
  __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[26]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":93
 *     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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tomemory(__pyx_v_base, __pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":95
 *     return tomemory(base, size)
 * 
 * def Free_mem(memory):             # <<<<<<<<<<<<<<
 *     """
 *     Free memory allocated with `Alloc_mem()`
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Free_mem(PyObject *__pyx_self, PyObject *__pyx_v_memory); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Free_mem[] = "Free_mem(memory)\n\n    Free memory allocated with `Alloc_mem()`\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Free_mem(PyObject *__pyx_self, PyObject *__pyx_v_memory) {
  void *__pyx_v_base;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_SetupRefcountContext("Free_mem");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":99
 *     Free memory allocated with `Alloc_mem()`
 *     """
 *     cdef void *base = NULL             # <<<<<<<<<<<<<<
 *     asmemory(memory, &base, NULL)
 *     CHKERR( MPI_Free_mem(base) )
 */
  __pyx_v_base = NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":100
 *     """
 *     cdef void *base = NULL
 *     asmemory(memory, &base, NULL)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Free_mem(base) )
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmemory(__pyx_v_memory, (&__pyx_v_base), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":101
 *     cdef void *base = NULL
 *     asmemory(memory, &base, NULL)
 *     CHKERR( MPI_Free_mem(base) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Free_mem(__pyx_v_base)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_2 released */

  __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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":107
 * # -----------------------
 * 
 * def Init():             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Init(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Init[] = "Init()\n\n    Initialize the MPI execution environment\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Init(PyObject *__pyx_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Init");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":111
 *     Initialize the MPI execution environment
 *     """
 *     CHKERR( MPI_Init(NULL, NULL) )             # <<<<<<<<<<<<<<
 *     startup()
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Init(NULL, NULL)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":112
 *     """
 *     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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":114
 *     startup()
 * 
 * def Finalize():             # <<<<<<<<<<<<<<
 *     """
 *     Terminate the MPI execution environment
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Finalize(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Finalize[] = "Finalize()\n\n    Terminate the MPI execution environment\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Finalize(PyObject *__pyx_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_SetupRefcountContext("Finalize");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":118
 *     Terminate the MPI execution environment
 *     """
 *     cleanup()             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Finalize() )
 * 
 */
  __pyx_f_6mpi4py_3MPI_cleanup();

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":119
 *     """
 *     cleanup()
 *     CHKERR( MPI_Finalize() )             # <<<<<<<<<<<<<<
 * 
 * # Levels of MPI threading support
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Finalize()); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Finalize");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":136
 * # """Multiple threads may call MPI"""
 * 
 * def Init_thread(int required=THREAD_MULTIPLE):             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Init_thread(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Init_thread[] = "Init_thread(int required=THREAD_MULTIPLE)\n\n    Initialize the MPI execution environment\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Init_thread(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_required;
  int __pyx_v_provided;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_kp_required,0};
  __Pyx_SetupRefcountContext("Init_thread");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    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;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_kp_required);
        if (unlikely(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[26]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    if (values[0]) {
      __pyx_v_required = __pyx_PyInt_int(values[0]); if (unlikely((__pyx_v_required == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_required = __pyx_k_91;
    }
  } else {
    __pyx_v_required = __pyx_k_91;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_required = __pyx_PyInt_int(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_required == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  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[26]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Init_thread");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":140
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":141
 *     """
 *     cdef int provided = MPI_THREAD_SINGLE
 *     CHKERR( MPI_Init_thread(NULL, NULL, required, &provided) )             # <<<<<<<<<<<<<<
 *     startup()
 *     return provided
 */
  /* __pyx_t_1 allocated */
  __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[26]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":142
 *     cdef int provided = MPI_THREAD_SINGLE
 *     CHKERR( MPI_Init_thread(NULL, NULL, required, &provided) )
 *     startup()             # <<<<<<<<<<<<<<
 *     return provided
 * 
 */
  __pyx_f_6mpi4py_3MPI_startup();

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":143
 *     CHKERR( MPI_Init_thread(NULL, NULL, required, &provided) )
 *     startup()
 *     return provided             # <<<<<<<<<<<<<<
 * 
 * def Query_thread():
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_provided); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":145
 *     return provided
 * 
 * def Query_thread():             # <<<<<<<<<<<<<<
 *     """
 *     Return the level of thread support
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Query_thread(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Query_thread[] = "Query_thread()\n\n    Return the level of thread support\n    provided by the MPI library\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Query_thread(PyObject *__pyx_self, PyObject *unused) {
  int __pyx_v_provided;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Query_thread");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":150
 *     provided by the MPI library
 *     """
 *     cdef int provided = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Query_thread(&provided) )
 *     return provided
 */
  __pyx_v_provided = MPI_THREAD_SINGLE;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":151
 *     """
 *     cdef int provided = MPI_THREAD_SINGLE
 *     CHKERR( MPI_Query_thread(&provided) )             # <<<<<<<<<<<<<<
 *     return provided
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Query_thread((&__pyx_v_provided))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":152
 *     cdef int provided = MPI_THREAD_SINGLE
 *     CHKERR( MPI_Query_thread(&provided) )
 *     return provided             # <<<<<<<<<<<<<<
 * 
 * def Is_thread_main():
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_provided); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":154
 *     return provided
 * 
 * def Is_thread_main():             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether this thread called
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Is_thread_main(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Is_thread_main[] = "Is_thread_main()\n\n    Indicate whether this thread called\n    ``Init`` or ``Init_thread``\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Is_thread_main(PyObject *__pyx_self, PyObject *unused) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Is_thread_main");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":159
 *     ``Init`` or ``Init_thread``
 *     """
 *     cdef bint flag = 1             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Is_thread_main(&flag) )
 *     return flag
 */
  __pyx_v_flag = 1;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":160
 *     """
 *     cdef bint flag = 1
 *     CHKERR( MPI_Is_thread_main(&flag) )             # <<<<<<<<<<<<<<
 *     return flag
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Is_thread_main(((int *)(&__pyx_v_flag)))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":161
 *     cdef bint flag = 1
 *     CHKERR( MPI_Is_thread_main(&flag) )
 *     return flag             # <<<<<<<<<<<<<<
 * 
 * def Is_initialized():
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":163
 *     return flag
 * 
 * def Is_initialized():             # <<<<<<<<<<<<<<
 *     """
 *     Indicates whether ``Init`` has been called
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Is_initialized(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Is_initialized[] = "Is_initialized()\n\n    Indicates whether ``Init`` has been called\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Is_initialized(PyObject *__pyx_self, PyObject *unused) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Is_initialized");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":167
 *     Indicates whether ``Init`` has been called
 *     """
 *     cdef bint flag = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Initialized(&flag) )
 *     return flag
 */
  __pyx_v_flag = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":168
 *     """
 *     cdef bint flag = 0
 *     CHKERR( MPI_Initialized(&flag) )             # <<<<<<<<<<<<<<
 *     return flag
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Initialized(((int *)(&__pyx_v_flag)))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":169
 *     cdef bint flag = 0
 *     CHKERR( MPI_Initialized(&flag) )
 *     return flag             # <<<<<<<<<<<<<<
 * 
 * def Is_finalized():
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":171
 *     return flag
 * 
 * def Is_finalized():             # <<<<<<<<<<<<<<
 *     """
 *     Indicates whether ``Finalize`` has completed
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Is_finalized(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Is_finalized[] = "Is_finalized()\n\n    Indicates whether ``Finalize`` has completed\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Is_finalized(PyObject *__pyx_self, PyObject *unused) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Is_finalized");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":175
 *     Indicates whether ``Finalize`` has completed
 *     """
 *     cdef bint flag = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Finalized(&flag) )
 *     return flag
 */
  __pyx_v_flag = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":176
 *     """
 *     cdef bint flag = 0
 *     CHKERR( MPI_Finalized(&flag) )             # <<<<<<<<<<<<<<
 *     return flag
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Finalized(((int *)(&__pyx_v_flag)))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":177
 *     cdef bint flag = 0
 *     CHKERR( MPI_Finalized(&flag) )
 *     return flag             # <<<<<<<<<<<<<<
 * 
 * # Implementation Information
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_flag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":185
 * # -----------------
 * 
 * def Get_version():             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the version number of the MPI standard supported
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Get_version(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Get_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 PyObject *__pyx_pf_6mpi4py_3MPI_Get_version(PyObject *__pyx_self, PyObject *unused) {
  int __pyx_v_version;
  int __pyx_v_subversion;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_SetupRefcountContext("Get_version");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":190
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":191
 *     """
 *     cdef int version = 1
 *     cdef int subversion = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_version(&version, &subversion) )
 *     return (version, subversion)
 */
  __pyx_v_subversion = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":192
 *     cdef int version = 1
 *     cdef int subversion = 0
 *     CHKERR( MPI_Get_version(&version, &subversion) )             # <<<<<<<<<<<<<<
 *     return (version, subversion)
 * 
 */
  /* __pyx_t_1 allocated */
  __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[26]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":193
 *     cdef int subversion = 0
 *     CHKERR( MPI_Get_version(&version, &subversion) )
 *     return (version, subversion)             # <<<<<<<<<<<<<<
 * 
 * VERSION    = MPI_VERSION
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(__pyx_v_version); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(__pyx_v_subversion); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 193; __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_t_2 released */
  /* __pyx_t_3 released */
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  /* __pyx_t_4 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":201
 * # ----------------------
 * 
 * def Get_processor_name():             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the name of the calling processor
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Get_processor_name(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Get_processor_name[] = "Get_processor_name()\n\n    Obtain the name of the calling processor\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Get_processor_name(PyObject *__pyx_self, PyObject *unused) {
  char __pyx_v_name[(MPI_MAX_PROCESSOR_NAME + 1)];
  int __pyx_v_nlen;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_SetupRefcountContext("Get_processor_name");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":206
 *     """
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":207
 *     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 allocated */
  __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[26]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":208
 *     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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_name, __pyx_v_nlen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":213
 * # --------------------------
 * 
 * def Wtime():             # <<<<<<<<<<<<<<
 *     """
 *     Return an elapsed time on the calling processor
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Wtime(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Wtime[] = "Wtime()\n\n    Return an elapsed time on the calling processor\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Wtime(PyObject *__pyx_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("Wtime");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":217
 *     Return an elapsed time on the calling processor
 *     """
 *     return MPI_Wtime()             # <<<<<<<<<<<<<<
 * 
 * def Wtick():
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyFloat_FromDouble(MPI_Wtime()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":219
 *     return MPI_Wtime()
 * 
 * def Wtick():             # <<<<<<<<<<<<<<
 *     """
 *     Return the resolution of ``Wtime``
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_Wtick(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_Wtick[] = "Wtick()\n\n    Return the resolution of ``Wtime``\n    ";
static PyObject *__pyx_pf_6mpi4py_3MPI_Wtick(PyObject *__pyx_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_SetupRefcountContext("Wtick");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":223
 *     Return the resolution of ``Wtime``
 *     """
 *     return MPI_Wtick()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = PyFloat_FromDouble(MPI_Wtick()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  /* __pyx_t_1 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  return __pyx_r;
}

/* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":246
 *     int MPI_Get_vendor(const_char**,int*,int*,int*)
 * 
 * def get_vendor():             # <<<<<<<<<<<<<<
 *     """
 *     Infomation about the underlying MPI implementation
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_get_vendor(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_6mpi4py_3MPI_get_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 PyObject *__pyx_pf_6mpi4py_3MPI_get_vendor(PyObject *__pyx_self, PyObject *unused) {
  const char *__pyx_v_name;
  int __pyx_v_major;
  int __pyx_v_minor;
  int __pyx_v_micro;
  PyObject *__pyx_r = NULL;
  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;
  __Pyx_SetupRefcountContext("get_vendor");
  __pyx_self = __pyx_self;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":254
 *       - 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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":255
 *     """
 *     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;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":256
 *     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 allocated */
  __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[26]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":257
 *     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 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(__pyx_v_major); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  /* __pyx_t_4 allocated */
  __pyx_t_4 = PyInt_FromLong(__pyx_v_minor); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  /* __pyx_t_5 allocated */
  __pyx_t_5 = PyInt_FromLong(__pyx_v_micro); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  /* __pyx_t_6 allocated */
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 257; __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_3 released */
  /* __pyx_t_4 released */
  /* __pyx_t_5 released */
  /* __pyx_t_5 allocated */
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 257; __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_t_2 released */
  /* __pyx_t_6 released */
  __pyx_r = ((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;
  /* __pyx_t_5 released */
  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_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_FinishRefcountContext();
  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___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___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___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

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___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Status[] = {
  {__Pyx_NAMESTR("Get_source"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_Get_source, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_Get_source)},
  {__Pyx_NAMESTR("Set_source"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_Set_source, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_Set_source)},
  {__Pyx_NAMESTR("Get_tag"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_Get_tag, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_Get_tag)},
  {__Pyx_NAMESTR("Set_tag"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_Set_tag, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_Set_tag)},
  {__Pyx_NAMESTR("Get_error"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_Get_error, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_Get_error)},
  {__Pyx_NAMESTR("Set_error"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_Set_error, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_Set_error)},
  {__Pyx_NAMESTR("Get_count"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_Get_count, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_Get_count)},
  {__Pyx_NAMESTR("Get_elements"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_Get_elements, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_Get_elements)},
  {__Pyx_NAMESTR("Set_elements"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_Set_elements, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_Set_elements)},
  {__Pyx_NAMESTR("Is_cancelled"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_Is_cancelled, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_Is_cancelled)},
  {__Pyx_NAMESTR("Set_cancelled"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_6Status_Set_cancelled, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_6Status_Set_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_k_12, 0},
  {(char *)"tag", __pyx_getprop_6mpi4py_3MPI_6Status_tag, __pyx_setprop_6mpi4py_3MPI_6Status_tag, __pyx_k_13, 0},
  {(char *)"error", __pyx_getprop_6mpi4py_3MPI_6Status_error, __pyx_setprop_6mpi4py_3MPI_6Status_error, __pyx_k_14, 0},
  {(char *)"cancelled", __pyx_getprop_6mpi4py_3MPI_6Status_cancelled, __pyx_setprop_6mpi4py_3MPI_6Status_cancelled, __pyx_k_15, 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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPIStatusObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Status, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("\n    Status\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_6Status___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*/
};

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___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___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Datatype[] = {
  {__Pyx_NAMESTR("Get_extent"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Get_extent, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Get_extent)},
  {__Pyx_NAMESTR("Get_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Get_size, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Get_size)},
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Dup, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Dup)},
  {__Pyx_NAMESTR("Create_contiguous"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Create_contiguous, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Create_contiguous)},
  {__Pyx_NAMESTR("Create_vector"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Create_vector, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Create_vector)},
  {__Pyx_NAMESTR("Create_hvector"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Create_hvector, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Create_hvector)},
  {__Pyx_NAMESTR("Create_indexed"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Create_indexed, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Create_indexed)},
  {__Pyx_NAMESTR("Create_indexed_block"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Create_indexed_block, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Create_indexed_block)},
  {__Pyx_NAMESTR("Create_hindexed"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Create_hindexed, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Create_hindexed)},
  {__Pyx_NAMESTR("Create_subarray"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Create_subarray, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Create_subarray)},
  {__Pyx_NAMESTR("Create_darray"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Create_darray, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Create_darray)},
  {__Pyx_NAMESTR("Create_struct"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Create_struct, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Create_struct)},
  {__Pyx_NAMESTR("Match_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Match_size, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Match_size)},
  {__Pyx_NAMESTR("Commit"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Commit, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Commit)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Free, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Free)},
  {__Pyx_NAMESTR("Create_resized"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Create_resized, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Create_resized)},
  {__Pyx_NAMESTR("Get_true_extent"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Get_true_extent, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Get_true_extent)},
  {__Pyx_NAMESTR("Pack"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Pack, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Pack)},
  {__Pyx_NAMESTR("Unpack"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Unpack, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Unpack)},
  {__Pyx_NAMESTR("Pack_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Pack_size, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Pack_size)},
  {__Pyx_NAMESTR("Pack_external"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Pack_external, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Pack_external)},
  {__Pyx_NAMESTR("Unpack_external"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Unpack_external, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Unpack_external)},
  {__Pyx_NAMESTR("Pack_external_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Pack_external_size, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Pack_external_size)},
  {__Pyx_NAMESTR("Get_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Get_name, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Get_name)},
  {__Pyx_NAMESTR("Set_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_Set_name, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_Set_name)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_py2f, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Datatype_f2py, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Datatype_f2py)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Datatype[] = {
  {(char *)"extent", __pyx_getprop_6mpi4py_3MPI_8Datatype_extent, 0, __pyx_k_3, 0},
  {(char *)"lb", __pyx_getprop_6mpi4py_3MPI_8Datatype_lb, 0, __pyx_k_4, 0},
  {(char *)"ub", __pyx_getprop_6mpi4py_3MPI_8Datatype_ub, 0, __pyx_k_5, 0},
  {(char *)"size", __pyx_getprop_6mpi4py_3MPI_8Datatype_size, 0, __pyx_k_6, 0},
  {(char *)"true_extent", __pyx_getprop_6mpi4py_3MPI_8Datatype_true_extent, 0, __pyx_k_8, 0},
  {(char *)"true_lb", __pyx_getprop_6mpi4py_3MPI_8Datatype_true_lb, 0, __pyx_k_9, 0},
  {(char *)"true_ub", __pyx_getprop_6mpi4py_3MPI_8Datatype_true_ub, 0, __pyx_k_10, 0},
  {(char *)"name", __pyx_getprop_6mpi4py_3MPI_8Datatype_name, __pyx_setprop_6mpi4py_3MPI_8Datatype_name, __pyx_k_11, 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___nonzero__, /*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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPIDatatypeObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Datatype, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("\n    Datatype\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_8Datatype___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*/
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Request(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  if (__pyx_pf_6mpi4py_3MPI_7Request___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Request(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_6mpi4py_3MPI_7Request___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Request[] = {
  {__Pyx_NAMESTR("Wait"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_Wait, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_Wait)},
  {__Pyx_NAMESTR("Test"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_Test, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_Test)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_Free, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_Free)},
  {__Pyx_NAMESTR("Get_status"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_Get_status, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_Get_status)},
  {__Pyx_NAMESTR("Waitany"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_Waitany, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_Waitany)},
  {__Pyx_NAMESTR("Testany"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_Testany, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_Testany)},
  {__Pyx_NAMESTR("Waitall"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_Waitall, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_Waitall)},
  {__Pyx_NAMESTR("Testall"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_Testall, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_Testall)},
  {__Pyx_NAMESTR("Waitsome"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_Waitsome, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_Waitsome)},
  {__Pyx_NAMESTR("Testsome"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_Testsome, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_Testsome)},
  {__Pyx_NAMESTR("Cancel"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_Cancel, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_Cancel)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_py2f, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_7Request_f2py, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_7Request_f2py)},
  {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___nonzero__, /*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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPIRequestObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Request, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("\n    Request\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_7Request___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*/
};

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;
  return o;
}

static struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Prequest[] = {
  {__Pyx_NAMESTR("Start"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Prequest_Start, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Prequest_Start)},
  {__Pyx_NAMESTR("Startall"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Prequest_Startall, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Prequest_Startall)},
  {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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPIPrequestObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Request, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("\n    Persistent request\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_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*/
};

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, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Grequest[] = {
  {__Pyx_NAMESTR("Start"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Grequest_Start, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Grequest_Start)},
  {__Pyx_NAMESTR("Complete"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Grequest_Complete, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Grequest_Complete)},
  {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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPIGrequestObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Request, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("\n    Generalized request\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_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*/
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Op(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyMPIOpObject *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((PyMPIOpObject *)o);
  p->ob_callable = Py_None; Py_INCREF(Py_None);
  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) {
  PyMPIOpObject *p = (PyMPIOpObject *)o;
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_6mpi4py_3MPI_2Op___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_XDECREF(p->ob_callable);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_6mpi4py_3MPI_Op(PyObject *o, visitproc v, void *a) {
  int e;
  PyMPIOpObject *p = (PyMPIOpObject *)o;
  if (p->ob_callable) {
    e = (*v)(p->ob_callable, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI_Op(PyObject *o) {
  PyMPIOpObject *p = (PyMPIOpObject *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->ob_callable);
  p->ob_callable = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Op[] = {
  {__Pyx_NAMESTR("__call__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_2Op___call__, METH_VARARGS|METH_KEYWORDS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("Create"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_2Op_Create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_2Op_Create)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_2Op_Free, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_2Op_Free)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_2Op_py2f, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_2Op_py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_2Op_f2py, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_2Op_f2py)},
  {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___nonzero__, /*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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPIOpObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Op, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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___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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("\n    Op\n    "), /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI_Op, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI_Op, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_2Op___richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Op, /*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_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*/
};

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___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 struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Group[] = {
  {__Pyx_NAMESTR("Get_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_Get_size, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_Get_size)},
  {__Pyx_NAMESTR("Get_rank"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_Get_rank, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_Get_rank)},
  {__Pyx_NAMESTR("Translate_ranks"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_Translate_ranks, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_Translate_ranks)},
  {__Pyx_NAMESTR("Compare"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_Compare, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_Compare)},
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_Dup, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_Dup)},
  {__Pyx_NAMESTR("Union"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_Union, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_Union)},
  {__Pyx_NAMESTR("Intersect"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_Intersect, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_Intersect)},
  {__Pyx_NAMESTR("Difference"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_Difference, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_Difference)},
  {__Pyx_NAMESTR("Incl"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_Incl, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_Incl)},
  {__Pyx_NAMESTR("Excl"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_Excl, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_Excl)},
  {__Pyx_NAMESTR("Range_incl"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_Range_incl, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_Range_incl)},
  {__Pyx_NAMESTR("Range_excl"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_Range_excl, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_Range_excl)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_Free, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_Free)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_py2f, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_5Group_f2py, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_5Group_f2py)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Group[] = {
  {(char *)"size", __pyx_getprop_6mpi4py_3MPI_5Group_size, 0, __pyx_k_16, 0},
  {(char *)"rank", __pyx_getprop_6mpi4py_3MPI_5Group_rank, 0, __pyx_k_17, 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___nonzero__, /*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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPIGroupObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Group, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("\n    Group\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_5Group___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*/
};

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___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___setitem__(o, i, v);
  }
  else {
    return __pyx_pf_6mpi4py_3MPI_4Info___delitem__(o, i);
  }
}

static struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Info[] = {
  {__Pyx_NAMESTR("Create"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_Create, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_Create)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_Free, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_Free)},
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_Dup, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_Dup)},
  {__Pyx_NAMESTR("Get"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_Get, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_Get)},
  {__Pyx_NAMESTR("Set"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_Set, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_Set)},
  {__Pyx_NAMESTR("Delete"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_Delete, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_Delete)},
  {__Pyx_NAMESTR("Get_nkeys"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_Get_nkeys, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_Get_nkeys)},
  {__Pyx_NAMESTR("Get_nthkey"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_Get_nthkey, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_Get_nthkey)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_py2f, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_f2py, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_f2py)},
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__getitem__"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info___getitem__, METH_O|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("get"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_get, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_get)},
  {__Pyx_NAMESTR("keys"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_keys, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_keys)},
  {__Pyx_NAMESTR("values"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_values, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_values)},
  {__Pyx_NAMESTR("items"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_items, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_items)},
  {__Pyx_NAMESTR("update"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_update, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_update)},
  {__Pyx_NAMESTR("clear"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Info_clear, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Info_clear)},
  {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___nonzero__, /*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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Info = {
  __pyx_pf_6mpi4py_3MPI_4Info___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___contains__, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Info = {
  __pyx_pf_6mpi4py_3MPI_4Info___len__, /*mp_length*/
  __pyx_pf_6mpi4py_3MPI_4Info___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(PyMPIInfoObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Info, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("\n    Info\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_4Info___richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_6mpi4py_3MPI_4Info___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*/
};

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___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Errhandler[] = {
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_10Errhandler_Free, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_10Errhandler_Free)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_10Errhandler_py2f, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_10Errhandler_py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_10Errhandler_f2py, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_10Errhandler_f2py)},
  {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___nonzero__, /*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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPIErrhandlerObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Errhandler, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("\n    Error Handler\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_10Errhandler___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*/
};

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, __pyx_empty_tuple, NULL) < 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___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___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Comm[] = {
  {__Pyx_NAMESTR("Get_group"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Get_group, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Get_group)},
  {__Pyx_NAMESTR("Get_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Get_size, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Get_size)},
  {__Pyx_NAMESTR("Get_rank"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Get_rank, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Get_rank)},
  {__Pyx_NAMESTR("Compare"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Compare, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Compare)},
  {__Pyx_NAMESTR("Clone"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Clone, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Clone)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Free, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Free)},
  {__Pyx_NAMESTR("Send"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Send, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Send)},
  {__Pyx_NAMESTR("Recv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Recv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Recv)},
  {__Pyx_NAMESTR("Sendrecv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Sendrecv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Sendrecv)},
  {__Pyx_NAMESTR("Sendrecv_replace"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Sendrecv_replace, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Sendrecv_replace)},
  {__Pyx_NAMESTR("Isend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Isend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Isend)},
  {__Pyx_NAMESTR("Irecv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Irecv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Irecv)},
  {__Pyx_NAMESTR("Probe"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Probe, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Probe)},
  {__Pyx_NAMESTR("Iprobe"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Iprobe, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Iprobe)},
  {__Pyx_NAMESTR("Send_init"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Send_init, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Send_init)},
  {__Pyx_NAMESTR("Recv_init"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Recv_init, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Recv_init)},
  {__Pyx_NAMESTR("Bsend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Bsend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Bsend)},
  {__Pyx_NAMESTR("Ssend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Ssend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Ssend)},
  {__Pyx_NAMESTR("Rsend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Rsend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Rsend)},
  {__Pyx_NAMESTR("Ibsend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Ibsend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Ibsend)},
  {__Pyx_NAMESTR("Issend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Issend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Issend)},
  {__Pyx_NAMESTR("Irsend"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Irsend, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Irsend)},
  {__Pyx_NAMESTR("Bsend_init"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Bsend_init, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Bsend_init)},
  {__Pyx_NAMESTR("Ssend_init"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Ssend_init, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Ssend_init)},
  {__Pyx_NAMESTR("Rsend_init"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Rsend_init, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Rsend_init)},
  {__Pyx_NAMESTR("Barrier"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Barrier, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Barrier)},
  {__Pyx_NAMESTR("Bcast"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Bcast, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Bcast)},
  {__Pyx_NAMESTR("Gather"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Gather, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Gather)},
  {__Pyx_NAMESTR("Gatherv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Gatherv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Gatherv)},
  {__Pyx_NAMESTR("Scatter"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Scatter, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Scatter)},
  {__Pyx_NAMESTR("Scatterv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Scatterv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Scatterv)},
  {__Pyx_NAMESTR("Allgather"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Allgather, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Allgather)},
  {__Pyx_NAMESTR("Allgatherv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Allgatherv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Allgatherv)},
  {__Pyx_NAMESTR("Alltoall"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Alltoall, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Alltoall)},
  {__Pyx_NAMESTR("Alltoallv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Alltoallv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Alltoallv)},
  {__Pyx_NAMESTR("Alltoallw"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Alltoallw, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Alltoallw)},
  {__Pyx_NAMESTR("Reduce"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Reduce, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Reduce)},
  {__Pyx_NAMESTR("Allreduce"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Allreduce, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Allreduce)},
  {__Pyx_NAMESTR("Reduce_scatter"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Reduce_scatter, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Reduce_scatter)},
  {__Pyx_NAMESTR("Is_inter"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Is_inter, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Is_inter)},
  {__Pyx_NAMESTR("Is_intra"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Is_intra, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Is_intra)},
  {__Pyx_NAMESTR("Get_topology"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Get_topology, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Get_topology)},
  {__Pyx_NAMESTR("Get_parent"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Get_parent, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Get_parent)},
  {__Pyx_NAMESTR("Disconnect"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Disconnect, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Disconnect)},
  {__Pyx_NAMESTR("Join"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Join, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Join)},
  {__Pyx_NAMESTR("Get_attr"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Get_attr, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Get_attr)},
  {__Pyx_NAMESTR("Get_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Get_errhandler, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Get_errhandler)},
  {__Pyx_NAMESTR("Set_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Set_errhandler, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Set_errhandler)},
  {__Pyx_NAMESTR("Call_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Call_errhandler, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Call_errhandler)},
  {__Pyx_NAMESTR("Abort"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Abort, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Abort)},
  {__Pyx_NAMESTR("Get_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Get_name, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Get_name)},
  {__Pyx_NAMESTR("Set_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_Set_name, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_Set_name)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_py2f, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_f2py, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_f2py)},
  {__Pyx_NAMESTR("send"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_send, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_send)},
  {__Pyx_NAMESTR("recv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_recv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_recv)},
  {__Pyx_NAMESTR("sendrecv"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_sendrecv, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_sendrecv)},
  {__Pyx_NAMESTR("barrier"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_barrier, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_barrier)},
  {__Pyx_NAMESTR("bcast"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_bcast, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_bcast)},
  {__Pyx_NAMESTR("gather"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_gather, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_gather)},
  {__Pyx_NAMESTR("scatter"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_scatter, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_scatter)},
  {__Pyx_NAMESTR("allgather"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_allgather, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_allgather)},
  {__Pyx_NAMESTR("alltoall"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_alltoall, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_alltoall)},
  {__Pyx_NAMESTR("reduce"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_reduce, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_reduce)},
  {__Pyx_NAMESTR("allreduce"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4Comm_allreduce, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4Comm_allreduce)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Comm[] = {
  {(char *)"group", __pyx_getprop_6mpi4py_3MPI_4Comm_group, 0, __pyx_k_18, 0},
  {(char *)"size", __pyx_getprop_6mpi4py_3MPI_4Comm_size, 0, __pyx_k_19, 0},
  {(char *)"rank", __pyx_getprop_6mpi4py_3MPI_4Comm_rank, 0, __pyx_k_20, 0},
  {(char *)"is_inter", __pyx_getprop_6mpi4py_3MPI_4Comm_is_inter, 0, __pyx_k_21, 0},
  {(char *)"is_intra", __pyx_getprop_6mpi4py_3MPI_4Comm_is_intra, 0, __pyx_k_22, 0},
  {(char *)"topology", __pyx_getprop_6mpi4py_3MPI_4Comm_topology, 0, __pyx_k_23, 0},
  {(char *)"name", __pyx_getprop_6mpi4py_3MPI_4Comm_name, __pyx_setprop_6mpi4py_3MPI_4Comm_name, __pyx_k_24, 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___nonzero__, /*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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPICommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("\n    Communicator\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_4Comm___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*/
};

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;
  return o;
}

static struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Intracomm[] = {
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_Dup, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_Dup)},
  {__Pyx_NAMESTR("Create"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_Create, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_Create)},
  {__Pyx_NAMESTR("Split"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_Split, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_Split)},
  {__Pyx_NAMESTR("Create_cart"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_Create_cart, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_Create_cart)},
  {__Pyx_NAMESTR("Create_graph"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_Create_graph, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_Create_graph)},
  {__Pyx_NAMESTR("Create_intercomm"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_Create_intercomm, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_Create_intercomm)},
  {__Pyx_NAMESTR("Scan"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_Scan, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_Scan)},
  {__Pyx_NAMESTR("Exscan"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_Exscan, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_Exscan)},
  {__Pyx_NAMESTR("scan"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_scan, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_scan)},
  {__Pyx_NAMESTR("exscan"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_exscan, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_exscan)},
  {__Pyx_NAMESTR("Spawn"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_Spawn, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_Spawn)},
  {__Pyx_NAMESTR("Accept"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_Accept, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_Accept)},
  {__Pyx_NAMESTR("Connect"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intracomm_Connect, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intracomm_Connect)},
  {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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPIIntracommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*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*/
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Cartcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Comm(t, a, k);
  if (!o) return 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 struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Cartcomm[] = {
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_Dup, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_Dup)},
  {__Pyx_NAMESTR("Get_dim"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_Get_dim, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_Get_dim)},
  {__Pyx_NAMESTR("Get_topo"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_Get_topo, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_Get_topo)},
  {__Pyx_NAMESTR("Get_cart_rank"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_Get_cart_rank, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_Get_cart_rank)},
  {__Pyx_NAMESTR("Get_coords"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_Get_coords, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_Get_coords)},
  {__Pyx_NAMESTR("Shift"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_Shift, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_Shift)},
  {__Pyx_NAMESTR("Sub"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_Sub, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_Sub)},
  {__Pyx_NAMESTR("Map"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_8Cartcomm_Map, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_Map)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Cartcomm[] = {
  {(char *)"dim", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_dim, 0, __pyx_k_25, 0},
  {(char *)"ndim", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_ndim, 0, __pyx_k_25, 0},
  {(char *)"topo", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_topo, 0, __pyx_k_26, 0},
  {(char *)"dims", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_dims, 0, __pyx_k_27, 0},
  {(char *)"periods", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_periods, 0, __pyx_k_28, 0},
  {(char *)"coords", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_coords, 0, __pyx_k_29, 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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPICartcommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*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*/
};

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Graphcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Comm(t, a, k);
  if (!o) return 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 struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Graphcomm[] = {
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Graphcomm_Dup, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_Dup)},
  {__Pyx_NAMESTR("Get_dims"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Graphcomm_Get_dims, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_Get_dims)},
  {__Pyx_NAMESTR("Get_topo"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Graphcomm_Get_topo, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_Get_topo)},
  {__Pyx_NAMESTR("Get_neighbors_count"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Graphcomm_Get_neighbors_count, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_Get_neighbors_count)},
  {__Pyx_NAMESTR("Get_neighbors"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Graphcomm_Get_neighbors, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_Get_neighbors)},
  {__Pyx_NAMESTR("Map"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Graphcomm_Map, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_Map)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Graphcomm[] = {
  {(char *)"dims", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_dims, 0, __pyx_k_30, 0},
  {(char *)"nnodes", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_nnodes, 0, __pyx_k_31, 0},
  {(char *)"nedges", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_nedges, 0, __pyx_k_32, 0},
  {(char *)"topo", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_topo, 0, __pyx_k_26, 0},
  {(char *)"index", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_index, 0, __pyx_k_33, 0},
  {(char *)"edges", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_edges, 0, __pyx_k_34, 0},
  {(char *)"nneighbors", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_nneighbors, 0, __pyx_k_35, 0},
  {(char *)"neighbors", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_neighbors, 0, __pyx_k_36, 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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPIGraphcommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("\n    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*/
};

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;
  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 struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Intercomm[] = {
  {__Pyx_NAMESTR("Get_remote_group"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intercomm_Get_remote_group, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intercomm_Get_remote_group)},
  {__Pyx_NAMESTR("Get_remote_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intercomm_Get_remote_size, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intercomm_Get_remote_size)},
  {__Pyx_NAMESTR("Dup"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intercomm_Dup, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intercomm_Dup)},
  {__Pyx_NAMESTR("Create"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intercomm_Create, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intercomm_Create)},
  {__Pyx_NAMESTR("Split"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intercomm_Split, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intercomm_Split)},
  {__Pyx_NAMESTR("Merge"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_9Intercomm_Merge, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_9Intercomm_Merge)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Intercomm[] = {
  {(char *)"remote_group", __pyx_getprop_6mpi4py_3MPI_9Intercomm_remote_group, 0, __pyx_k_37, 0},
  {(char *)"remote_size", __pyx_getprop_6mpi4py_3MPI_9Intercomm_remote_size, 0, __pyx_k_38, 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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPIIntercommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*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*/
};

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, __pyx_empty_tuple, NULL) < 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___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___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static struct PyMethodDef __pyx_methods_6mpi4py_3MPI_Win[] = {
  {__Pyx_NAMESTR("Create"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Create)},
  {__Pyx_NAMESTR("Free"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Free, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Free)},
  {__Pyx_NAMESTR("Get_group"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Get_group, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Get_group)},
  {__Pyx_NAMESTR("Get_attr"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Get_attr, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Get_attr)},
  {__Pyx_NAMESTR("Put"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Put, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Put)},
  {__Pyx_NAMESTR("Get"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Get, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Get)},
  {__Pyx_NAMESTR("Accumulate"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Accumulate, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Accumulate)},
  {__Pyx_NAMESTR("Fence"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Fence, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Fence)},
  {__Pyx_NAMESTR("Start"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Start, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Start)},
  {__Pyx_NAMESTR("Complete"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Complete, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Complete)},
  {__Pyx_NAMESTR("Post"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Post, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Post)},
  {__Pyx_NAMESTR("Wait"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Wait, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Wait)},
  {__Pyx_NAMESTR("Test"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Test, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Test)},
  {__Pyx_NAMESTR("Lock"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Lock, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Lock)},
  {__Pyx_NAMESTR("Unlock"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Unlock, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Unlock)},
  {__Pyx_NAMESTR("Get_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Get_errhandler, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Get_errhandler)},
  {__Pyx_NAMESTR("Set_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Set_errhandler, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Set_errhandler)},
  {__Pyx_NAMESTR("Call_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Call_errhandler, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Call_errhandler)},
  {__Pyx_NAMESTR("Get_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Get_name, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Get_name)},
  {__Pyx_NAMESTR("Set_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_Set_name, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_Set_name)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_py2f, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_3Win_f2py, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_3Win_f2py)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Win[] = {
  {(char *)"group", __pyx_getprop_6mpi4py_3MPI_3Win_group, 0, __pyx_k_39, 0},
  {(char *)"attrs", __pyx_getprop_6mpi4py_3MPI_3Win_attrs, 0, __pyx_k_40, 0},
  {(char *)"memory", __pyx_getprop_6mpi4py_3MPI_3Win_memory, 0, __pyx_k_41, 0},
  {(char *)"name", __pyx_getprop_6mpi4py_3MPI_3Win_name, __pyx_setprop_6mpi4py_3MPI_3Win_name, __pyx_k_42, 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___nonzero__, /*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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPIWinObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Win, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("\n    Window\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_3Win___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*/
};

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, __pyx_empty_tuple, NULL) < 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___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___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___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static struct PyMethodDef __pyx_methods_6mpi4py_3MPI_File[] = {
  {__Pyx_NAMESTR("Open"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Open, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Open)},
  {__Pyx_NAMESTR("Close"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Close, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Close)},
  {__Pyx_NAMESTR("Delete"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Delete, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Delete)},
  {__Pyx_NAMESTR("Set_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Set_size, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Set_size)},
  {__Pyx_NAMESTR("Preallocate"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Preallocate, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Preallocate)},
  {__Pyx_NAMESTR("Get_size"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Get_size, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Get_size)},
  {__Pyx_NAMESTR("Get_group"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Get_group, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Get_group)},
  {__Pyx_NAMESTR("Get_amode"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Get_amode, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Get_amode)},
  {__Pyx_NAMESTR("Set_info"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Set_info, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Set_info)},
  {__Pyx_NAMESTR("Get_info"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Get_info, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Get_info)},
  {__Pyx_NAMESTR("Set_view"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Set_view, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Set_view)},
  {__Pyx_NAMESTR("Get_view"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Get_view, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Get_view)},
  {__Pyx_NAMESTR("Read_at"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Read_at, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Read_at)},
  {__Pyx_NAMESTR("Read_at_all"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Read_at_all, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Read_at_all)},
  {__Pyx_NAMESTR("Write_at"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Write_at, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Write_at)},
  {__Pyx_NAMESTR("Write_at_all"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Write_at_all, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Write_at_all)},
  {__Pyx_NAMESTR("Iread_at"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Iread_at, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Iread_at)},
  {__Pyx_NAMESTR("Iwrite_at"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Iwrite_at, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Iwrite_at)},
  {__Pyx_NAMESTR("Read"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Read, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Read)},
  {__Pyx_NAMESTR("Read_all"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Read_all, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Read_all)},
  {__Pyx_NAMESTR("Write"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Write, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Write)},
  {__Pyx_NAMESTR("Write_all"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Write_all, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Write_all)},
  {__Pyx_NAMESTR("Iread"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Iread, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Iread)},
  {__Pyx_NAMESTR("Iwrite"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Iwrite, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Iwrite)},
  {__Pyx_NAMESTR("Seek"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Seek, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Seek)},
  {__Pyx_NAMESTR("Get_position"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Get_position, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Get_position)},
  {__Pyx_NAMESTR("Get_byte_offset"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Get_byte_offset, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Get_byte_offset)},
  {__Pyx_NAMESTR("Read_shared"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Read_shared, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Read_shared)},
  {__Pyx_NAMESTR("Write_shared"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Write_shared, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Write_shared)},
  {__Pyx_NAMESTR("Iread_shared"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Iread_shared, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Iread_shared)},
  {__Pyx_NAMESTR("Iwrite_shared"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Iwrite_shared, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Iwrite_shared)},
  {__Pyx_NAMESTR("Read_ordered"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Read_ordered, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Read_ordered)},
  {__Pyx_NAMESTR("Write_ordered"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Write_ordered, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Write_ordered)},
  {__Pyx_NAMESTR("Seek_shared"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Seek_shared, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Seek_shared)},
  {__Pyx_NAMESTR("Get_position_shared"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Get_position_shared, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Get_position_shared)},
  {__Pyx_NAMESTR("Read_at_all_begin"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Read_at_all_begin, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Read_at_all_begin)},
  {__Pyx_NAMESTR("Read_at_all_end"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Read_at_all_end, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Read_at_all_end)},
  {__Pyx_NAMESTR("Write_at_all_begin"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Write_at_all_begin, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Write_at_all_begin)},
  {__Pyx_NAMESTR("Write_at_all_end"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Write_at_all_end, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Write_at_all_end)},
  {__Pyx_NAMESTR("Read_all_begin"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Read_all_begin, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Read_all_begin)},
  {__Pyx_NAMESTR("Read_all_end"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Read_all_end, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Read_all_end)},
  {__Pyx_NAMESTR("Write_all_begin"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Write_all_begin, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Write_all_begin)},
  {__Pyx_NAMESTR("Write_all_end"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Write_all_end, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Write_all_end)},
  {__Pyx_NAMESTR("Read_ordered_begin"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Read_ordered_begin, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Read_ordered_begin)},
  {__Pyx_NAMESTR("Read_ordered_end"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Read_ordered_end, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Read_ordered_end)},
  {__Pyx_NAMESTR("Write_ordered_begin"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Write_ordered_begin, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Write_ordered_begin)},
  {__Pyx_NAMESTR("Write_ordered_end"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Write_ordered_end, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Write_ordered_end)},
  {__Pyx_NAMESTR("Get_type_extent"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Get_type_extent, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Get_type_extent)},
  {__Pyx_NAMESTR("Set_atomicity"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Set_atomicity, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Set_atomicity)},
  {__Pyx_NAMESTR("Get_atomicity"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Get_atomicity, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Get_atomicity)},
  {__Pyx_NAMESTR("Sync"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Sync, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Sync)},
  {__Pyx_NAMESTR("Get_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Get_errhandler, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Get_errhandler)},
  {__Pyx_NAMESTR("Set_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Set_errhandler, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Set_errhandler)},
  {__Pyx_NAMESTR("Call_errhandler"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_Call_errhandler, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_Call_errhandler)},
  {__Pyx_NAMESTR("py2f"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_py2f, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_py2f)},
  {__Pyx_NAMESTR("f2py"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_4File_f2py, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_4File_f2py)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_File[] = {
  {(char *)"size", __pyx_getprop_6mpi4py_3MPI_4File_size, 0, __pyx_k_43, 0},
  {(char *)"group", __pyx_getprop_6mpi4py_3MPI_4File_group, 0, __pyx_k_44, 0},
  {(char *)"amode", __pyx_getprop_6mpi4py_3MPI_4File_amode, 0, __pyx_k_45, 0},
  {(char *)"info", __pyx_getprop_6mpi4py_3MPI_4File_info, __pyx_setprop_6mpi4py_3MPI_4File_info, __pyx_k_46, 0},
  {(char *)"atomicity", __pyx_getprop_6mpi4py_3MPI_4File_atomicity, __pyx_setprop_6mpi4py_3MPI_4File_atomicity, __pyx_k_47, 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___nonzero__, /*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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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(PyMPIFileObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_File, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("\n    File\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pf_6mpi4py_3MPI_4File___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*/
};
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 = Py_None; Py_INCREF(Py_None);
  p->kargs = 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(p->args);
  Py_XDECREF(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 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->kargs);
  p->kargs = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct 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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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
};

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*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|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*/
};
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 struct 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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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
};

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*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|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*/
};
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);
  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_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;
  }
  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);
  return 0;
}

static struct 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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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
};

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*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|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*/
};
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 struct 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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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
};

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*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|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*/
};
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 struct 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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  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
};

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*/
  0, /*tp_compare*/
  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_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|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*/
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_Pickler __pyx_vtable_6mpi4py_3MPI__p_Pickler;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_Pickler(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_Pickler *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickler *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_Pickler;
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_Pickler(PyObject *o) {
  (*Py_TYPE(o)->tp_free)(o);
}

static struct PyMethodDef __pyx_methods_6mpi4py_3MPI__p_Pickler[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__p_Pickler = {
  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*/
  0, /*nb_long*/
  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_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__p_Pickler = {
  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_Pickler = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__p_Pickler = {
  #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
};

PyTypeObject __pyx_type_6mpi4py_3MPI__p_Pickler = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("mpi4py.MPI._p_Pickler"), /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_Pickler), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_Pickler, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__p_Pickler, /*tp_as_number*/
  &__pyx_tp_as_sequence__p_Pickler, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__p_Pickler, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__p_Pickler, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*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_Pickler, /*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_Pickler, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};

static struct PyMethodDef __pyx_methods[] = {
  {__Pyx_NAMESTR("Get_error_class"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Get_error_class, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Get_error_class)},
  {__Pyx_NAMESTR("Get_error_string"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Get_error_string, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Get_error_string)},
  {__Pyx_NAMESTR("Get_address"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Get_address, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Get_address)},
  {__Pyx_NAMESTR("Compute_dims"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Compute_dims, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Compute_dims)},
  {__Pyx_NAMESTR("Attach_buffer"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Attach_buffer, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Attach_buffer)},
  {__Pyx_NAMESTR("Detach_buffer"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Detach_buffer, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Detach_buffer)},
  {__Pyx_NAMESTR("Open_port"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Open_port, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Open_port)},
  {__Pyx_NAMESTR("Close_port"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Close_port, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Close_port)},
  {__Pyx_NAMESTR("Publish_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Publish_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Publish_name)},
  {__Pyx_NAMESTR("Unpublish_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Unpublish_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Unpublish_name)},
  {__Pyx_NAMESTR("Lookup_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Lookup_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Lookup_name)},
  {__Pyx_NAMESTR("Alloc_mem"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Alloc_mem, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Alloc_mem)},
  {__Pyx_NAMESTR("Free_mem"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Free_mem, METH_O, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Free_mem)},
  {__Pyx_NAMESTR("Init"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Init, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Init)},
  {__Pyx_NAMESTR("Finalize"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Finalize, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Finalize)},
  {__Pyx_NAMESTR("Init_thread"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Init_thread, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Init_thread)},
  {__Pyx_NAMESTR("Query_thread"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Query_thread, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Query_thread)},
  {__Pyx_NAMESTR("Is_thread_main"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Is_thread_main, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Is_thread_main)},
  {__Pyx_NAMESTR("Is_initialized"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Is_initialized, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Is_initialized)},
  {__Pyx_NAMESTR("Is_finalized"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Is_finalized, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Is_finalized)},
  {__Pyx_NAMESTR("Get_version"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Get_version, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Get_version)},
  {__Pyx_NAMESTR("Get_processor_name"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Get_processor_name, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Get_processor_name)},
  {__Pyx_NAMESTR("Wtime"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Wtime, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Wtime)},
  {__Pyx_NAMESTR("Wtick"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_Wtick, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_Wtick)},
  {__Pyx_NAMESTR("get_vendor"), (PyCFunction)__pyx_pf_6mpi4py_3MPI_get_vendor, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_6mpi4py_3MPI_get_vendor)},
  {0, 0, 0, 0}
};

static void __pyx_init_filenames(void); /*proto*/

#if PY_MAJOR_VERSION >= 3
static struct PyModuleDef __pyx_moduledef = {
    PyModuleDef_HEAD_INIT,
    __Pyx_NAMESTR("MPIPython"),
    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___cinit__, __pyx_k___cinit__, sizeof(__pyx_k___cinit__), 1, 1, 1},
  {&__pyx_kp___dealloc__, __pyx_k___dealloc__, sizeof(__pyx_k___dealloc__), 1, 1, 1},
  {&__pyx_kp___richcmp__, __pyx_k___richcmp__, sizeof(__pyx_k___richcmp__), 1, 1, 1},
  {&__pyx_kp___nonzero__, __pyx_k___nonzero__, sizeof(__pyx_k___nonzero__), 1, 1, 1},
  {&__pyx_kp_Free, __pyx_k_Free, sizeof(__pyx_k_Free), 1, 1, 1},
  {&__pyx_kp_1, __pyx_k_1, sizeof(__pyx_k_1), 1, 1, 1},
  {&__pyx_kp_2, __pyx_k_2, sizeof(__pyx_k_2), 1, 1, 1},
  {&__pyx_kp_Get_extent, __pyx_k_Get_extent, sizeof(__pyx_k_Get_extent), 1, 1, 1},
  {&__pyx_kp_Get_size, __pyx_k_Get_size, sizeof(__pyx_k_Get_size), 1, 1, 1},
  {&__pyx_kp_Dup, __pyx_k_Dup, sizeof(__pyx_k_Dup), 1, 1, 1},
  {&__pyx_kp_Create_contiguous, __pyx_k_Create_contiguous, sizeof(__pyx_k_Create_contiguous), 1, 1, 1},
  {&__pyx_kp_Create_vector, __pyx_k_Create_vector, sizeof(__pyx_k_Create_vector), 1, 1, 1},
  {&__pyx_kp_Create_hvector, __pyx_k_Create_hvector, sizeof(__pyx_k_Create_hvector), 1, 1, 1},
  {&__pyx_kp_Create_indexed, __pyx_k_Create_indexed, sizeof(__pyx_k_Create_indexed), 1, 1, 1},
  {&__pyx_kp_7, __pyx_k_7, sizeof(__pyx_k_7), 1, 1, 1},
  {&__pyx_kp_Create_hindexed, __pyx_k_Create_hindexed, sizeof(__pyx_k_Create_hindexed), 1, 1, 1},
  {&__pyx_kp_Create_subarray, __pyx_k_Create_subarray, sizeof(__pyx_k_Create_subarray), 1, 1, 1},
  {&__pyx_kp_Create_darray, __pyx_k_Create_darray, sizeof(__pyx_k_Create_darray), 1, 1, 1},
  {&__pyx_kp_Create_struct, __pyx_k_Create_struct, sizeof(__pyx_k_Create_struct), 1, 1, 1},
  {&__pyx_kp_Match_size, __pyx_k_Match_size, sizeof(__pyx_k_Match_size), 1, 1, 1},
  {&__pyx_kp_Commit, __pyx_k_Commit, sizeof(__pyx_k_Commit), 1, 1, 1},
  {&__pyx_kp_Create_resized, __pyx_k_Create_resized, sizeof(__pyx_k_Create_resized), 1, 1, 1},
  {&__pyx_kp_Resized, __pyx_k_Resized, sizeof(__pyx_k_Resized), 1, 1, 1},
  {&__pyx_kp_Get_true_extent, __pyx_k_Get_true_extent, sizeof(__pyx_k_Get_true_extent), 1, 1, 1},
  {&__pyx_kp_Pack, __pyx_k_Pack, sizeof(__pyx_k_Pack), 1, 1, 1},
  {&__pyx_kp_Unpack, __pyx_k_Unpack, sizeof(__pyx_k_Unpack), 1, 1, 1},
  {&__pyx_kp_Pack_size, __pyx_k_Pack_size, sizeof(__pyx_k_Pack_size), 1, 1, 1},
  {&__pyx_kp_Pack_external, __pyx_k_Pack_external, sizeof(__pyx_k_Pack_external), 1, 1, 1},
  {&__pyx_kp_Unpack_external, __pyx_k_Unpack_external, sizeof(__pyx_k_Unpack_external), 1, 1, 1},
  {&__pyx_kp_Pack_external_size, __pyx_k_Pack_external_size, sizeof(__pyx_k_Pack_external_size), 1, 1, 1},
  {&__pyx_kp_Get_name, __pyx_k_Get_name, sizeof(__pyx_k_Get_name), 1, 1, 1},
  {&__pyx_kp_Set_name, __pyx_k_Set_name, sizeof(__pyx_k_Set_name), 1, 1, 1},
  {&__pyx_kp_Get_source, __pyx_k_Get_source, sizeof(__pyx_k_Get_source), 1, 1, 1},
  {&__pyx_kp_Set_source, __pyx_k_Set_source, sizeof(__pyx_k_Set_source), 1, 1, 1},
  {&__pyx_kp_Get_tag, __pyx_k_Get_tag, sizeof(__pyx_k_Get_tag), 1, 1, 1},
  {&__pyx_kp_Set_tag, __pyx_k_Set_tag, sizeof(__pyx_k_Set_tag), 1, 1, 1},
  {&__pyx_kp_Get_error, __pyx_k_Get_error, sizeof(__pyx_k_Get_error), 1, 1, 1},
  {&__pyx_kp_Set_error, __pyx_k_Set_error, sizeof(__pyx_k_Set_error), 1, 1, 1},
  {&__pyx_kp_Get_count, __pyx_k_Get_count, sizeof(__pyx_k_Get_count), 1, 1, 1},
  {&__pyx_kp_Get_elements, __pyx_k_Get_elements, sizeof(__pyx_k_Get_elements), 1, 1, 1},
  {&__pyx_kp_Set_elements, __pyx_k_Set_elements, sizeof(__pyx_k_Set_elements), 1, 1, 1},
  {&__pyx_kp_Is_cancelled, __pyx_k_Is_cancelled, sizeof(__pyx_k_Is_cancelled), 1, 1, 1},
  {&__pyx_kp_Set_cancelled, __pyx_k_Set_cancelled, sizeof(__pyx_k_Set_cancelled), 1, 1, 1},
  {&__pyx_kp_Wait, __pyx_k_Wait, sizeof(__pyx_k_Wait), 1, 1, 1},
  {&__pyx_kp_Test, __pyx_k_Test, sizeof(__pyx_k_Test), 1, 1, 1},
  {&__pyx_kp_Get_status, __pyx_k_Get_status, sizeof(__pyx_k_Get_status), 1, 1, 1},
  {&__pyx_kp_Waitany, __pyx_k_Waitany, sizeof(__pyx_k_Waitany), 1, 1, 1},
  {&__pyx_kp_Testany, __pyx_k_Testany, sizeof(__pyx_k_Testany), 1, 1, 1},
  {&__pyx_kp_Waitall, __pyx_k_Waitall, sizeof(__pyx_k_Waitall), 1, 1, 1},
  {&__pyx_kp_Testall, __pyx_k_Testall, sizeof(__pyx_k_Testall), 1, 1, 1},
  {&__pyx_kp_Waitsome, __pyx_k_Waitsome, sizeof(__pyx_k_Waitsome), 1, 1, 1},
  {&__pyx_kp_Testsome, __pyx_k_Testsome, sizeof(__pyx_k_Testsome), 1, 1, 1},
  {&__pyx_kp_Cancel, __pyx_k_Cancel, sizeof(__pyx_k_Cancel), 1, 1, 1},
  {&__pyx_kp_Start, __pyx_k_Start, sizeof(__pyx_k_Start), 1, 1, 1},
  {&__pyx_kp_Startall, __pyx_k_Startall, sizeof(__pyx_k_Startall), 1, 1, 1},
  {&__pyx_kp_Complete, __pyx_k_Complete, sizeof(__pyx_k_Complete), 1, 1, 1},
  {&__pyx_kp_Create, __pyx_k_Create, sizeof(__pyx_k_Create), 1, 1, 1},
  {&__pyx_kp_Get, __pyx_k_Get, sizeof(__pyx_k_Get), 1, 1, 1},
  {&__pyx_kp_Set, __pyx_k_Set, sizeof(__pyx_k_Set), 1, 1, 1},
  {&__pyx_kp_Delete, __pyx_k_Delete, sizeof(__pyx_k_Delete), 1, 1, 1},
  {&__pyx_kp_Get_nkeys, __pyx_k_Get_nkeys, sizeof(__pyx_k_Get_nkeys), 1, 1, 1},
  {&__pyx_kp_Get_nthkey, __pyx_k_Get_nthkey, sizeof(__pyx_k_Get_nthkey), 1, 1, 1},
  {&__pyx_kp___len__, __pyx_k___len__, sizeof(__pyx_k___len__), 1, 1, 1},
  {&__pyx_kp___contains__, __pyx_k___contains__, sizeof(__pyx_k___contains__), 1, 1, 1},
  {&__pyx_kp___iter__, __pyx_k___iter__, sizeof(__pyx_k___iter__), 1, 1, 1},
  {&__pyx_kp___getitem__, __pyx_k___getitem__, sizeof(__pyx_k___getitem__), 1, 1, 1},
  {&__pyx_kp___setitem__, __pyx_k___setitem__, sizeof(__pyx_k___setitem__), 1, 1, 1},
  {&__pyx_kp___delitem__, __pyx_k___delitem__, sizeof(__pyx_k___delitem__), 1, 1, 1},
  {&__pyx_kp_get, __pyx_k_get, sizeof(__pyx_k_get), 1, 1, 1},
  {&__pyx_kp_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 1, 1, 1},
  {&__pyx_kp_values, __pyx_k_values, sizeof(__pyx_k_values), 1, 1, 1},
  {&__pyx_kp_items, __pyx_k_items, sizeof(__pyx_k_items), 1, 1, 1},
  {&__pyx_kp_update, __pyx_k_update, sizeof(__pyx_k_update), 1, 1, 1},
  {&__pyx_kp_clear, __pyx_k_clear, sizeof(__pyx_k_clear), 1, 1, 1},
  {&__pyx_kp___call__, __pyx_k___call__, sizeof(__pyx_k___call__), 1, 1, 1},
  {&__pyx_kp_Get_rank, __pyx_k_Get_rank, sizeof(__pyx_k_Get_rank), 1, 1, 1},
  {&__pyx_kp_Translate_ranks, __pyx_k_Translate_ranks, sizeof(__pyx_k_Translate_ranks), 1, 1, 1},
  {&__pyx_kp_Compare, __pyx_k_Compare, sizeof(__pyx_k_Compare), 1, 1, 1},
  {&__pyx_kp_Union, __pyx_k_Union, sizeof(__pyx_k_Union), 1, 1, 1},
  {&__pyx_kp_Intersect, __pyx_k_Intersect, sizeof(__pyx_k_Intersect), 1, 1, 1},
  {&__pyx_kp_Difference, __pyx_k_Difference, sizeof(__pyx_k_Difference), 1, 1, 1},
  {&__pyx_kp_Incl, __pyx_k_Incl, sizeof(__pyx_k_Incl), 1, 1, 1},
  {&__pyx_kp_Excl, __pyx_k_Excl, sizeof(__pyx_k_Excl), 1, 1, 1},
  {&__pyx_kp_Range_incl, __pyx_k_Range_incl, sizeof(__pyx_k_Range_incl), 1, 1, 1},
  {&__pyx_kp_Range_excl, __pyx_k_Range_excl, sizeof(__pyx_k_Range_excl), 1, 1, 1},
  {&__pyx_kp_Get_group, __pyx_k_Get_group, sizeof(__pyx_k_Get_group), 1, 1, 1},
  {&__pyx_kp_Clone, __pyx_k_Clone, sizeof(__pyx_k_Clone), 1, 1, 1},
  {&__pyx_kp_Send, __pyx_k_Send, sizeof(__pyx_k_Send), 1, 1, 1},
  {&__pyx_kp_Recv, __pyx_k_Recv, sizeof(__pyx_k_Recv), 1, 1, 1},
  {&__pyx_kp_Sendrecv, __pyx_k_Sendrecv, sizeof(__pyx_k_Sendrecv), 1, 1, 1},
  {&__pyx_kp_Sendrecv_replace, __pyx_k_Sendrecv_replace, sizeof(__pyx_k_Sendrecv_replace), 1, 1, 1},
  {&__pyx_kp_Isend, __pyx_k_Isend, sizeof(__pyx_k_Isend), 1, 1, 1},
  {&__pyx_kp_Irecv, __pyx_k_Irecv, sizeof(__pyx_k_Irecv), 1, 1, 1},
  {&__pyx_kp_Probe, __pyx_k_Probe, sizeof(__pyx_k_Probe), 1, 1, 1},
  {&__pyx_kp_Iprobe, __pyx_k_Iprobe, sizeof(__pyx_k_Iprobe), 1, 1, 1},
  {&__pyx_kp_Send_init, __pyx_k_Send_init, sizeof(__pyx_k_Send_init), 1, 1, 1},
  {&__pyx_kp_Recv_init, __pyx_k_Recv_init, sizeof(__pyx_k_Recv_init), 1, 1, 1},
  {&__pyx_kp_Bsend, __pyx_k_Bsend, sizeof(__pyx_k_Bsend), 1, 1, 1},
  {&__pyx_kp_Ssend, __pyx_k_Ssend, sizeof(__pyx_k_Ssend), 1, 1, 1},
  {&__pyx_kp_Rsend, __pyx_k_Rsend, sizeof(__pyx_k_Rsend), 1, 1, 1},
  {&__pyx_kp_Ibsend, __pyx_k_Ibsend, sizeof(__pyx_k_Ibsend), 1, 1, 1},
  {&__pyx_kp_Issend, __pyx_k_Issend, sizeof(__pyx_k_Issend), 1, 1, 1},
  {&__pyx_kp_Irsend, __pyx_k_Irsend, sizeof(__pyx_k_Irsend), 1, 1, 1},
  {&__pyx_kp_Bsend_init, __pyx_k_Bsend_init, sizeof(__pyx_k_Bsend_init), 1, 1, 1},
  {&__pyx_kp_Ssend_init, __pyx_k_Ssend_init, sizeof(__pyx_k_Ssend_init), 1, 1, 1},
  {&__pyx_kp_Rsend_init, __pyx_k_Rsend_init, sizeof(__pyx_k_Rsend_init), 1, 1, 1},
  {&__pyx_kp_Barrier, __pyx_k_Barrier, sizeof(__pyx_k_Barrier), 1, 1, 1},
  {&__pyx_kp_Bcast, __pyx_k_Bcast, sizeof(__pyx_k_Bcast), 1, 1, 1},
  {&__pyx_kp_Gather, __pyx_k_Gather, sizeof(__pyx_k_Gather), 1, 1, 1},
  {&__pyx_kp_Gatherv, __pyx_k_Gatherv, sizeof(__pyx_k_Gatherv), 1, 1, 1},
  {&__pyx_kp_Scatter, __pyx_k_Scatter, sizeof(__pyx_k_Scatter), 1, 1, 1},
  {&__pyx_kp_Scatterv, __pyx_k_Scatterv, sizeof(__pyx_k_Scatterv), 1, 1, 1},
  {&__pyx_kp_Allgather, __pyx_k_Allgather, sizeof(__pyx_k_Allgather), 1, 1, 1},
  {&__pyx_kp_Allgatherv, __pyx_k_Allgatherv, sizeof(__pyx_k_Allgatherv), 1, 1, 1},
  {&__pyx_kp_Alltoall, __pyx_k_Alltoall, sizeof(__pyx_k_Alltoall), 1, 1, 1},
  {&__pyx_kp_Alltoallv, __pyx_k_Alltoallv, sizeof(__pyx_k_Alltoallv), 1, 1, 1},
  {&__pyx_kp_Alltoallw, __pyx_k_Alltoallw, sizeof(__pyx_k_Alltoallw), 1, 1, 1},
  {&__pyx_kp_Reduce, __pyx_k_Reduce, sizeof(__pyx_k_Reduce), 1, 1, 1},
  {&__pyx_kp_Allreduce, __pyx_k_Allreduce, sizeof(__pyx_k_Allreduce), 1, 1, 1},
  {&__pyx_kp_Reduce_scatter, __pyx_k_Reduce_scatter, sizeof(__pyx_k_Reduce_scatter), 1, 1, 1},
  {&__pyx_kp_Is_inter, __pyx_k_Is_inter, sizeof(__pyx_k_Is_inter), 1, 1, 1},
  {&__pyx_kp_Is_intra, __pyx_k_Is_intra, sizeof(__pyx_k_Is_intra), 1, 1, 1},
  {&__pyx_kp_Get_topology, __pyx_k_Get_topology, sizeof(__pyx_k_Get_topology), 1, 1, 1},
  {&__pyx_kp_Get_parent, __pyx_k_Get_parent, sizeof(__pyx_k_Get_parent), 1, 1, 1},
  {&__pyx_kp_Disconnect, __pyx_k_Disconnect, sizeof(__pyx_k_Disconnect), 1, 1, 1},
  {&__pyx_kp_Join, __pyx_k_Join, sizeof(__pyx_k_Join), 1, 1, 1},
  {&__pyx_kp_Get_attr, __pyx_k_Get_attr, sizeof(__pyx_k_Get_attr), 1, 1, 1},
  {&__pyx_kp_Get_errhandler, __pyx_k_Get_errhandler, sizeof(__pyx_k_Get_errhandler), 1, 1, 1},
  {&__pyx_kp_Set_errhandler, __pyx_k_Set_errhandler, sizeof(__pyx_k_Set_errhandler), 1, 1, 1},
  {&__pyx_kp_Call_errhandler, __pyx_k_Call_errhandler, sizeof(__pyx_k_Call_errhandler), 1, 1, 1},
  {&__pyx_kp_Abort, __pyx_k_Abort, sizeof(__pyx_k_Abort), 1, 1, 1},
  {&__pyx_kp_send, __pyx_k_send, sizeof(__pyx_k_send), 1, 1, 1},
  {&__pyx_kp_recv, __pyx_k_recv, sizeof(__pyx_k_recv), 1, 1, 1},
  {&__pyx_kp_sendrecv, __pyx_k_sendrecv, sizeof(__pyx_k_sendrecv), 1, 1, 1},
  {&__pyx_kp_barrier, __pyx_k_barrier, sizeof(__pyx_k_barrier), 1, 1, 1},
  {&__pyx_kp_bcast, __pyx_k_bcast, sizeof(__pyx_k_bcast), 1, 1, 1},
  {&__pyx_kp_gather, __pyx_k_gather, sizeof(__pyx_k_gather), 1, 1, 1},
  {&__pyx_kp_scatter, __pyx_k_scatter, sizeof(__pyx_k_scatter), 1, 1, 1},
  {&__pyx_kp_allgather, __pyx_k_allgather, sizeof(__pyx_k_allgather), 1, 1, 1},
  {&__pyx_kp_alltoall, __pyx_k_alltoall, sizeof(__pyx_k_alltoall), 1, 1, 1},
  {&__pyx_kp_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 1, 1, 1},
  {&__pyx_kp_allreduce, __pyx_k_allreduce, sizeof(__pyx_k_allreduce), 1, 1, 1},
  {&__pyx_kp_Split, __pyx_k_Split, sizeof(__pyx_k_Split), 1, 1, 1},
  {&__pyx_kp_Create_cart, __pyx_k_Create_cart, sizeof(__pyx_k_Create_cart), 1, 1, 1},
  {&__pyx_kp_Create_graph, __pyx_k_Create_graph, sizeof(__pyx_k_Create_graph), 1, 1, 1},
  {&__pyx_kp_Create_intercomm, __pyx_k_Create_intercomm, sizeof(__pyx_k_Create_intercomm), 1, 1, 1},
  {&__pyx_kp_Scan, __pyx_k_Scan, sizeof(__pyx_k_Scan), 1, 1, 1},
  {&__pyx_kp_Exscan, __pyx_k_Exscan, sizeof(__pyx_k_Exscan), 1, 1, 1},
  {&__pyx_kp_scan, __pyx_k_scan, sizeof(__pyx_k_scan), 1, 1, 1},
  {&__pyx_kp_exscan, __pyx_k_exscan, sizeof(__pyx_k_exscan), 1, 1, 1},
  {&__pyx_kp_Spawn, __pyx_k_Spawn, sizeof(__pyx_k_Spawn), 1, 1, 1},
  {&__pyx_kp_Accept, __pyx_k_Accept, sizeof(__pyx_k_Accept), 1, 1, 1},
  {&__pyx_kp_Connect, __pyx_k_Connect, sizeof(__pyx_k_Connect), 1, 1, 1},
  {&__pyx_kp_Get_dim, __pyx_k_Get_dim, sizeof(__pyx_k_Get_dim), 1, 1, 1},
  {&__pyx_kp_Get_topo, __pyx_k_Get_topo, sizeof(__pyx_k_Get_topo), 1, 1, 1},
  {&__pyx_kp_Get_cart_rank, __pyx_k_Get_cart_rank, sizeof(__pyx_k_Get_cart_rank), 1, 1, 1},
  {&__pyx_kp_Get_coords, __pyx_k_Get_coords, sizeof(__pyx_k_Get_coords), 1, 1, 1},
  {&__pyx_kp_Shift, __pyx_k_Shift, sizeof(__pyx_k_Shift), 1, 1, 1},
  {&__pyx_kp_Sub, __pyx_k_Sub, sizeof(__pyx_k_Sub), 1, 1, 1},
  {&__pyx_kp_Map, __pyx_k_Map, sizeof(__pyx_k_Map), 1, 1, 1},
  {&__pyx_kp_Get_dims, __pyx_k_Get_dims, sizeof(__pyx_k_Get_dims), 1, 1, 1},
  {&__pyx_kp_Get_neighbors_count, __pyx_k_Get_neighbors_count, sizeof(__pyx_k_Get_neighbors_count), 1, 1, 1},
  {&__pyx_kp_Get_neighbors, __pyx_k_Get_neighbors, sizeof(__pyx_k_Get_neighbors), 1, 1, 1},
  {&__pyx_kp_Get_remote_group, __pyx_k_Get_remote_group, sizeof(__pyx_k_Get_remote_group), 1, 1, 1},
  {&__pyx_kp_Get_remote_size, __pyx_k_Get_remote_size, sizeof(__pyx_k_Get_remote_size), 1, 1, 1},
  {&__pyx_kp_Merge, __pyx_k_Merge, sizeof(__pyx_k_Merge), 1, 1, 1},
  {&__pyx_kp_Put, __pyx_k_Put, sizeof(__pyx_k_Put), 1, 1, 1},
  {&__pyx_kp_Accumulate, __pyx_k_Accumulate, sizeof(__pyx_k_Accumulate), 1, 1, 1},
  {&__pyx_kp_Fence, __pyx_k_Fence, sizeof(__pyx_k_Fence), 1, 1, 1},
  {&__pyx_kp_Post, __pyx_k_Post, sizeof(__pyx_k_Post), 1, 1, 1},
  {&__pyx_kp_Lock, __pyx_k_Lock, sizeof(__pyx_k_Lock), 1, 1, 1},
  {&__pyx_kp_Unlock, __pyx_k_Unlock, sizeof(__pyx_k_Unlock), 1, 1, 1},
  {&__pyx_kp_Open, __pyx_k_Open, sizeof(__pyx_k_Open), 1, 1, 1},
  {&__pyx_kp_Close, __pyx_k_Close, sizeof(__pyx_k_Close), 1, 1, 1},
  {&__pyx_kp_Set_size, __pyx_k_Set_size, sizeof(__pyx_k_Set_size), 1, 1, 1},
  {&__pyx_kp_Preallocate, __pyx_k_Preallocate, sizeof(__pyx_k_Preallocate), 1, 1, 1},
  {&__pyx_kp_Get_amode, __pyx_k_Get_amode, sizeof(__pyx_k_Get_amode), 1, 1, 1},
  {&__pyx_kp_Set_info, __pyx_k_Set_info, sizeof(__pyx_k_Set_info), 1, 1, 1},
  {&__pyx_kp_Get_info, __pyx_k_Get_info, sizeof(__pyx_k_Get_info), 1, 1, 1},
  {&__pyx_kp_Set_view, __pyx_k_Set_view, sizeof(__pyx_k_Set_view), 1, 1, 1},
  {&__pyx_kp_Get_view, __pyx_k_Get_view, sizeof(__pyx_k_Get_view), 1, 1, 1},
  {&__pyx_kp_Read_at, __pyx_k_Read_at, sizeof(__pyx_k_Read_at), 1, 1, 1},
  {&__pyx_kp_Read_at_all, __pyx_k_Read_at_all, sizeof(__pyx_k_Read_at_all), 1, 1, 1},
  {&__pyx_kp_Write_at, __pyx_k_Write_at, sizeof(__pyx_k_Write_at), 1, 1, 1},
  {&__pyx_kp_Write_at_all, __pyx_k_Write_at_all, sizeof(__pyx_k_Write_at_all), 1, 1, 1},
  {&__pyx_kp_Iread_at, __pyx_k_Iread_at, sizeof(__pyx_k_Iread_at), 1, 1, 1},
  {&__pyx_kp_Iwrite_at, __pyx_k_Iwrite_at, sizeof(__pyx_k_Iwrite_at), 1, 1, 1},
  {&__pyx_kp_Read, __pyx_k_Read, sizeof(__pyx_k_Read), 1, 1, 1},
  {&__pyx_kp_Read_all, __pyx_k_Read_all, sizeof(__pyx_k_Read_all), 1, 1, 1},
  {&__pyx_kp_Write, __pyx_k_Write, sizeof(__pyx_k_Write), 1, 1, 1},
  {&__pyx_kp_Write_all, __pyx_k_Write_all, sizeof(__pyx_k_Write_all), 1, 1, 1},
  {&__pyx_kp_Iread, __pyx_k_Iread, sizeof(__pyx_k_Iread), 1, 1, 1},
  {&__pyx_kp_Iwrite, __pyx_k_Iwrite, sizeof(__pyx_k_Iwrite), 1, 1, 1},
  {&__pyx_kp_Seek, __pyx_k_Seek, sizeof(__pyx_k_Seek), 1, 1, 1},
  {&__pyx_kp_Get_position, __pyx_k_Get_position, sizeof(__pyx_k_Get_position), 1, 1, 1},
  {&__pyx_kp_Get_byte_offset, __pyx_k_Get_byte_offset, sizeof(__pyx_k_Get_byte_offset), 1, 1, 1},
  {&__pyx_kp_Read_shared, __pyx_k_Read_shared, sizeof(__pyx_k_Read_shared), 1, 1, 1},
  {&__pyx_kp_Write_shared, __pyx_k_Write_shared, sizeof(__pyx_k_Write_shared), 1, 1, 1},
  {&__pyx_kp_Iread_shared, __pyx_k_Iread_shared, sizeof(__pyx_k_Iread_shared), 1, 1, 1},
  {&__pyx_kp_Iwrite_shared, __pyx_k_Iwrite_shared, sizeof(__pyx_k_Iwrite_shared), 1, 1, 1},
  {&__pyx_kp_Read_ordered, __pyx_k_Read_ordered, sizeof(__pyx_k_Read_ordered), 1, 1, 1},
  {&__pyx_kp_Write_ordered, __pyx_k_Write_ordered, sizeof(__pyx_k_Write_ordered), 1, 1, 1},
  {&__pyx_kp_Seek_shared, __pyx_k_Seek_shared, sizeof(__pyx_k_Seek_shared), 1, 1, 1},
  {&__pyx_kp_Get_position_shared, __pyx_k_Get_position_shared, sizeof(__pyx_k_Get_position_shared), 1, 1, 1},
  {&__pyx_kp_Read_at_all_begin, __pyx_k_Read_at_all_begin, sizeof(__pyx_k_Read_at_all_begin), 1, 1, 1},
  {&__pyx_kp_Read_at_all_end, __pyx_k_Read_at_all_end, sizeof(__pyx_k_Read_at_all_end), 1, 1, 1},
  {&__pyx_kp_Write_at_all_begin, __pyx_k_Write_at_all_begin, sizeof(__pyx_k_Write_at_all_begin), 1, 1, 1},
  {&__pyx_kp_Write_at_all_end, __pyx_k_Write_at_all_end, sizeof(__pyx_k_Write_at_all_end), 1, 1, 1},
  {&__pyx_kp_Read_all_begin, __pyx_k_Read_all_begin, sizeof(__pyx_k_Read_all_begin), 1, 1, 1},
  {&__pyx_kp_Read_all_end, __pyx_k_Read_all_end, sizeof(__pyx_k_Read_all_end), 1, 1, 1},
  {&__pyx_kp_Write_all_begin, __pyx_k_Write_all_begin, sizeof(__pyx_k_Write_all_begin), 1, 1, 1},
  {&__pyx_kp_Write_all_end, __pyx_k_Write_all_end, sizeof(__pyx_k_Write_all_end), 1, 1, 1},
  {&__pyx_kp_Read_ordered_begin, __pyx_k_Read_ordered_begin, sizeof(__pyx_k_Read_ordered_begin), 1, 1, 1},
  {&__pyx_kp_Read_ordered_end, __pyx_k_Read_ordered_end, sizeof(__pyx_k_Read_ordered_end), 1, 1, 1},
  {&__pyx_kp_Write_ordered_begin, __pyx_k_Write_ordered_begin, sizeof(__pyx_k_Write_ordered_begin), 1, 1, 1},
  {&__pyx_kp_Write_ordered_end, __pyx_k_Write_ordered_end, sizeof(__pyx_k_Write_ordered_end), 1, 1, 1},
  {&__pyx_kp_Get_type_extent, __pyx_k_Get_type_extent, sizeof(__pyx_k_Get_type_extent), 1, 1, 1},
  {&__pyx_kp_Set_atomicity, __pyx_k_Set_atomicity, sizeof(__pyx_k_Set_atomicity), 1, 1, 1},
  {&__pyx_kp_Get_atomicity, __pyx_k_Get_atomicity, sizeof(__pyx_k_Get_atomicity), 1, 1, 1},
  {&__pyx_kp_Sync, __pyx_k_Sync, sizeof(__pyx_k_Sync), 1, 1, 1},
  {&__pyx_kp_query_fn, __pyx_k_query_fn, sizeof(__pyx_k_query_fn), 1, 1, 1},
  {&__pyx_kp_free_fn, __pyx_k_free_fn, sizeof(__pyx_k_free_fn), 1, 1, 1},
  {&__pyx_kp_cancel_fn, __pyx_k_cancel_fn, sizeof(__pyx_k_cancel_fn), 1, 1, 1},
  {&__pyx_kp_args, __pyx_k_args, sizeof(__pyx_k_args), 1, 1, 1},
  {&__pyx_kp_kargs, __pyx_k_kargs, sizeof(__pyx_k_kargs), 1, 1, 1},
  {&__pyx_kp_self, __pyx_k_self, sizeof(__pyx_k_self), 1, 1, 1},
  {&__pyx_kp_ierr, __pyx_k_ierr, sizeof(__pyx_k_ierr), 1, 1, 1},
  {&__pyx_kp_error, __pyx_k_error, sizeof(__pyx_k_error), 1, 1, 1},
  {&__pyx_kp_errorcode, __pyx_k_errorcode, sizeof(__pyx_k_errorcode), 1, 1, 1},
  {&__pyx_kp_other, __pyx_k_other, sizeof(__pyx_k_other), 1, 1, 1},
  {&__pyx_kp_op, __pyx_k_op, sizeof(__pyx_k_op), 1, 1, 1},
  {&__pyx_kp_arg, __pyx_k_arg, sizeof(__pyx_k_arg), 1, 1, 1},
  {&__pyx_kp_count, __pyx_k_count, sizeof(__pyx_k_count), 1, 1, 1},
  {&__pyx_kp_blocklength, __pyx_k_blocklength, sizeof(__pyx_k_blocklength), 1, 1, 1},
  {&__pyx_kp_stride, __pyx_k_stride, sizeof(__pyx_k_stride), 1, 1, 1},
  {&__pyx_kp_blocklengths, __pyx_k_blocklengths, sizeof(__pyx_k_blocklengths), 1, 1, 1},
  {&__pyx_kp_displacements, __pyx_k_displacements, sizeof(__pyx_k_displacements), 1, 1, 1},
  {&__pyx_kp_sizes, __pyx_k_sizes, sizeof(__pyx_k_sizes), 1, 1, 1},
  {&__pyx_kp_subsizes, __pyx_k_subsizes, sizeof(__pyx_k_subsizes), 1, 1, 1},
  {&__pyx_kp_starts, __pyx_k_starts, sizeof(__pyx_k_starts), 1, 1, 1},
  {&__pyx_kp_order, __pyx_k_order, sizeof(__pyx_k_order), 1, 1, 1},
  {&__pyx_kp_size, __pyx_k_size, sizeof(__pyx_k_size), 1, 1, 1},
  {&__pyx_kp_rank, __pyx_k_rank, sizeof(__pyx_k_rank), 1, 1, 1},
  {&__pyx_kp_gsizes, __pyx_k_gsizes, sizeof(__pyx_k_gsizes), 1, 1, 1},
  {&__pyx_kp_distribs, __pyx_k_distribs, sizeof(__pyx_k_distribs), 1, 1, 1},
  {&__pyx_kp_dargs, __pyx_k_dargs, sizeof(__pyx_k_dargs), 1, 1, 1},
  {&__pyx_kp_psizes, __pyx_k_psizes, sizeof(__pyx_k_psizes), 1, 1, 1},
  {&__pyx_kp_datatypes, __pyx_k_datatypes, sizeof(__pyx_k_datatypes), 1, 1, 1},
  {&__pyx_kp_typeclass, __pyx_k_typeclass, sizeof(__pyx_k_typeclass), 1, 1, 1},
  {&__pyx_kp_lb, __pyx_k_lb, sizeof(__pyx_k_lb), 1, 1, 1},
  {&__pyx_kp_extent, __pyx_k_extent, sizeof(__pyx_k_extent), 1, 1, 1},
  {&__pyx_kp_inbuf, __pyx_k_inbuf, sizeof(__pyx_k_inbuf), 1, 1, 1},
  {&__pyx_kp_outbuf, __pyx_k_outbuf, sizeof(__pyx_k_outbuf), 1, 1, 1},
  {&__pyx_kp_position, __pyx_k_position, sizeof(__pyx_k_position), 1, 1, 1},
  {&__pyx_kp_comm, __pyx_k_comm, sizeof(__pyx_k_comm), 1, 1, 1},
  {&__pyx_kp_datarep, __pyx_k_datarep, sizeof(__pyx_k_datarep), 1, 1, 1},
  {&__pyx_kp_name, __pyx_k_name, sizeof(__pyx_k_name), 1, 1, 1},
  {&__pyx_kp_value, __pyx_k_value, sizeof(__pyx_k_value), 1, 1, 1},
  {&__pyx_kp_location, __pyx_k_location, sizeof(__pyx_k_location), 1, 1, 1},
  {&__pyx_kp_source, __pyx_k_source, sizeof(__pyx_k_source), 1, 1, 1},
  {&__pyx_kp_tag, __pyx_k_tag, sizeof(__pyx_k_tag), 1, 1, 1},
  {&__pyx_kp_datatype, __pyx_k_datatype, sizeof(__pyx_k_datatype), 1, 1, 1},
  {&__pyx_kp_flag, __pyx_k_flag, sizeof(__pyx_k_flag), 1, 1, 1},
  {&__pyx_kp_status, __pyx_k_status, sizeof(__pyx_k_status), 1, 1, 1},
  {&__pyx_kp_requests, __pyx_k_requests, sizeof(__pyx_k_requests), 1, 1, 1},
  {&__pyx_kp_statuses, __pyx_k_statuses, sizeof(__pyx_k_statuses), 1, 1, 1},
  {&__pyx_kp_key, __pyx_k_key, sizeof(__pyx_k_key), 1, 1, 1},
  {&__pyx_kp_maxlen, __pyx_k_maxlen, sizeof(__pyx_k_maxlen), 1, 1, 1},
  {&__pyx_kp_n, __pyx_k_n, sizeof(__pyx_k_n), 1, 1, 1},
  {&__pyx_kp_default, __pyx_k_default, sizeof(__pyx_k_default), 1, 1, 1},
  {&__pyx_kp_x, __pyx_k_x, sizeof(__pyx_k_x), 1, 1, 1},
  {&__pyx_kp_y, __pyx_k_y, sizeof(__pyx_k_y), 1, 1, 1},
  {&__pyx_kp_function, __pyx_k_function, sizeof(__pyx_k_function), 1, 1, 1},
  {&__pyx_kp_commute, __pyx_k_commute, sizeof(__pyx_k_commute), 1, 1, 1},
  {&__pyx_kp_48, __pyx_k_48, sizeof(__pyx_k_48), 1, 1, 1},
  {&__pyx_kp_49, __pyx_k_49, sizeof(__pyx_k_49), 1, 1, 1},
  {&__pyx_kp_50, __pyx_k_50, sizeof(__pyx_k_50), 1, 1, 1},
  {&__pyx_kp_ranks, __pyx_k_ranks, sizeof(__pyx_k_ranks), 1, 1, 1},
  {&__pyx_kp_51, __pyx_k_51, sizeof(__pyx_k_51), 1, 1, 1},
  {&__pyx_kp_52, __pyx_k_52, sizeof(__pyx_k_52), 1, 1, 1},
  {&__pyx_kp_buf, __pyx_k_buf, sizeof(__pyx_k_buf), 1, 1, 1},
  {&__pyx_kp_dest, __pyx_k_dest, sizeof(__pyx_k_dest), 1, 1, 1},
  {&__pyx_kp_sendbuf, __pyx_k_sendbuf, sizeof(__pyx_k_sendbuf), 1, 1, 1},
  {&__pyx_kp_sendtag, __pyx_k_sendtag, sizeof(__pyx_k_sendtag), 1, 1, 1},
  {&__pyx_kp_recvbuf, __pyx_k_recvbuf, sizeof(__pyx_k_recvbuf), 1, 1, 1},
  {&__pyx_kp_recvtag, __pyx_k_recvtag, sizeof(__pyx_k_recvtag), 1, 1, 1},
  {&__pyx_kp_root, __pyx_k_root, sizeof(__pyx_k_root), 1, 1, 1},
  {&__pyx_kp_fd, __pyx_k_fd, sizeof(__pyx_k_fd), 1, 1, 1},
  {&__pyx_kp_keyval, __pyx_k_keyval, sizeof(__pyx_k_keyval), 1, 1, 1},
  {&__pyx_kp_errhandler, __pyx_k_errhandler, sizeof(__pyx_k_errhandler), 1, 1, 1},
  {&__pyx_kp_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 1, 1, 1},
  {&__pyx_kp_sendobj, __pyx_k_sendobj, sizeof(__pyx_k_sendobj), 1, 1, 1},
  {&__pyx_kp_recvobj, __pyx_k_recvobj, sizeof(__pyx_k_recvobj), 1, 1, 1},
  {&__pyx_kp_group, __pyx_k_group, sizeof(__pyx_k_group), 1, 1, 1},
  {&__pyx_kp_color, __pyx_k_color, sizeof(__pyx_k_color), 1, 1, 1},
  {&__pyx_kp_dims, __pyx_k_dims, sizeof(__pyx_k_dims), 1, 1, 1},
  {&__pyx_kp_periods, __pyx_k_periods, sizeof(__pyx_k_periods), 1, 1, 1},
  {&__pyx_kp_reorder, __pyx_k_reorder, sizeof(__pyx_k_reorder), 1, 1, 1},
  {&__pyx_kp_index, __pyx_k_index, sizeof(__pyx_k_index), 1, 1, 1},
  {&__pyx_kp_edges, __pyx_k_edges, sizeof(__pyx_k_edges), 1, 1, 1},
  {&__pyx_kp_local_leader, __pyx_k_local_leader, sizeof(__pyx_k_local_leader), 1, 1, 1},
  {&__pyx_kp_peer_comm, __pyx_k_peer_comm, sizeof(__pyx_k_peer_comm), 1, 1, 1},
  {&__pyx_kp_remote_leader, __pyx_k_remote_leader, sizeof(__pyx_k_remote_leader), 1, 1, 1},
  {&__pyx_kp_command, __pyx_k_command, sizeof(__pyx_k_command), 1, 1, 1},
  {&__pyx_kp_maxprocs, __pyx_k_maxprocs, sizeof(__pyx_k_maxprocs), 1, 1, 1},
  {&__pyx_kp_info, __pyx_k_info, sizeof(__pyx_k_info), 1, 1, 1},
  {&__pyx_kp_errcodes, __pyx_k_errcodes, sizeof(__pyx_k_errcodes), 1, 1, 1},
  {&__pyx_kp_port_name, __pyx_k_port_name, sizeof(__pyx_k_port_name), 1, 1, 1},
  {&__pyx_kp_coords, __pyx_k_coords, sizeof(__pyx_k_coords), 1, 1, 1},
  {&__pyx_kp_direction, __pyx_k_direction, sizeof(__pyx_k_direction), 1, 1, 1},
  {&__pyx_kp_disp, __pyx_k_disp, sizeof(__pyx_k_disp), 1, 1, 1},
  {&__pyx_kp_remain_dims, __pyx_k_remain_dims, sizeof(__pyx_k_remain_dims), 1, 1, 1},
  {&__pyx_kp_nnodes, __pyx_k_nnodes, sizeof(__pyx_k_nnodes), 1, 1, 1},
  {&__pyx_kp_high, __pyx_k_high, sizeof(__pyx_k_high), 1, 1, 1},
  {&__pyx_kp_memory, __pyx_k_memory, sizeof(__pyx_k_memory), 1, 1, 1},
  {&__pyx_kp_service_name, __pyx_k_service_name, sizeof(__pyx_k_service_name), 1, 1, 1},
  {&__pyx_kp_disp_unit, __pyx_k_disp_unit, sizeof(__pyx_k_disp_unit), 1, 1, 1},
  {&__pyx_kp_origin, __pyx_k_origin, sizeof(__pyx_k_origin), 1, 1, 1},
  {&__pyx_kp_target_rank, __pyx_k_target_rank, sizeof(__pyx_k_target_rank), 1, 1, 1},
  {&__pyx_kp_target, __pyx_k_target, sizeof(__pyx_k_target), 1, 1, 1},
  {&__pyx_kp_assertion, __pyx_k_assertion, sizeof(__pyx_k_assertion), 1, 1, 1},
  {&__pyx_kp_lock_type, __pyx_k_lock_type, sizeof(__pyx_k_lock_type), 1, 1, 1},
  {&__pyx_kp_filename, __pyx_k_filename, sizeof(__pyx_k_filename), 1, 1, 1},
  {&__pyx_kp_amode, __pyx_k_amode, sizeof(__pyx_k_amode), 1, 1, 1},
  {&__pyx_kp_etype, __pyx_k_etype, sizeof(__pyx_k_etype), 1, 1, 1},
  {&__pyx_kp_filetype, __pyx_k_filetype, sizeof(__pyx_k_filetype), 1, 1, 1},
  {&__pyx_kp_offset, __pyx_k_offset, sizeof(__pyx_k_offset), 1, 1, 1},
  {&__pyx_kp_whence, __pyx_k_whence, sizeof(__pyx_k_whence), 1, 1, 1},
  {&__pyx_kp_required, __pyx_k_required, sizeof(__pyx_k_required), 1, 1, 1},
  {&__pyx_kp___doc__, __pyx_k___doc__, sizeof(__pyx_k___doc__), 1, 1, 1},
  {&__pyx_kp_cPickle, __pyx_k_cPickle, sizeof(__pyx_k_cPickle), 1, 1, 1},
  {&__pyx_kp_dumps, __pyx_k_dumps, sizeof(__pyx_k_dumps), 1, 1, 1},
  {&__pyx_kp_loads, __pyx_k_loads, sizeof(__pyx_k_loads), 1, 1, 1},
  {&__pyx_kp_HIGHEST_PROTOCOL, __pyx_k_HIGHEST_PROTOCOL, sizeof(__pyx_k_HIGHEST_PROTOCOL), 1, 1, 1},
  {&__pyx_kp_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 1, 1, 1},
  {&__pyx_kp_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 1, 1, 1},
  {&__pyx_kp_Exception, __pyx_k_Exception, sizeof(__pyx_k_Exception), 0, 1, 1},
  {&__pyx_kp_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 1, 1, 1},
  {&__pyx_kp___init__, __pyx_k___init__, sizeof(__pyx_k___init__), 1, 1, 1},
  {&__pyx_kp___eq__, __pyx_k___eq__, sizeof(__pyx_k___eq__), 1, 1, 1},
  {&__pyx_kp___ne__, __pyx_k___ne__, sizeof(__pyx_k___ne__), 1, 1, 1},
  {&__pyx_kp___lt__, __pyx_k___lt__, sizeof(__pyx_k___lt__), 1, 1, 1},
  {&__pyx_kp___le__, __pyx_k___le__, sizeof(__pyx_k___le__), 1, 1, 1},
  {&__pyx_kp___gt__, __pyx_k___gt__, sizeof(__pyx_k___gt__), 1, 1, 1},
  {&__pyx_kp___ge__, __pyx_k___ge__, sizeof(__pyx_k___ge__), 1, 1, 1},
  {&__pyx_kp___bool__, __pyx_k___bool__, sizeof(__pyx_k___bool__), 1, 1, 1},
  {&__pyx_kp___int__, __pyx_k___int__, sizeof(__pyx_k___int__), 1, 1, 1},
  {&__pyx_kp___repr__, __pyx_k___repr__, sizeof(__pyx_k___repr__), 1, 1, 1},
  {&__pyx_kp___str__, __pyx_k___str__, sizeof(__pyx_k___str__), 1, 1, 1},
  {&__pyx_kp_Get_error_code, __pyx_k_Get_error_code, sizeof(__pyx_k_Get_error_code), 1, 1, 1},
  {&__pyx_kp_property, __pyx_k_property, sizeof(__pyx_k_property), 1, 1, 1},
  {&__pyx_kp_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 1, 1, 1},
  {&__pyx_kp_error_code, __pyx_k_error_code, sizeof(__pyx_k_error_code), 1, 1, 1},
  {&__pyx_kp_Get_error_class, __pyx_k_Get_error_class, sizeof(__pyx_k_Get_error_class), 1, 1, 1},
  {&__pyx_kp_error_class, __pyx_k_error_class, sizeof(__pyx_k_error_class), 1, 1, 1},
  {&__pyx_kp_Get_error_string, __pyx_k_Get_error_string, sizeof(__pyx_k_Get_error_string), 1, 1, 1},
  {&__pyx_kp_error_string, __pyx_k_error_string, sizeof(__pyx_k_error_string), 1, 1, 1},
  {&__pyx_kp_SUCCESS, __pyx_k_SUCCESS, sizeof(__pyx_k_SUCCESS), 1, 1, 1},
  {&__pyx_kp_ERR_LASTCODE, __pyx_k_ERR_LASTCODE, sizeof(__pyx_k_ERR_LASTCODE), 1, 1, 1},
  {&__pyx_kp_ERR_COMM, __pyx_k_ERR_COMM, sizeof(__pyx_k_ERR_COMM), 1, 1, 1},
  {&__pyx_kp_ERR_GROUP, __pyx_k_ERR_GROUP, sizeof(__pyx_k_ERR_GROUP), 1, 1, 1},
  {&__pyx_kp_ERR_TYPE, __pyx_k_ERR_TYPE, sizeof(__pyx_k_ERR_TYPE), 1, 1, 1},
  {&__pyx_kp_ERR_REQUEST, __pyx_k_ERR_REQUEST, sizeof(__pyx_k_ERR_REQUEST), 1, 1, 1},
  {&__pyx_kp_ERR_OP, __pyx_k_ERR_OP, sizeof(__pyx_k_ERR_OP), 1, 1, 1},
  {&__pyx_kp_ERR_BUFFER, __pyx_k_ERR_BUFFER, sizeof(__pyx_k_ERR_BUFFER), 1, 1, 1},
  {&__pyx_kp_ERR_COUNT, __pyx_k_ERR_COUNT, sizeof(__pyx_k_ERR_COUNT), 1, 1, 1},
  {&__pyx_kp_ERR_TAG, __pyx_k_ERR_TAG, sizeof(__pyx_k_ERR_TAG), 1, 1, 1},
  {&__pyx_kp_ERR_RANK, __pyx_k_ERR_RANK, sizeof(__pyx_k_ERR_RANK), 1, 1, 1},
  {&__pyx_kp_ERR_ROOT, __pyx_k_ERR_ROOT, sizeof(__pyx_k_ERR_ROOT), 1, 1, 1},
  {&__pyx_kp_ERR_TRUNCATE, __pyx_k_ERR_TRUNCATE, sizeof(__pyx_k_ERR_TRUNCATE), 1, 1, 1},
  {&__pyx_kp_ERR_IN_STATUS, __pyx_k_ERR_IN_STATUS, sizeof(__pyx_k_ERR_IN_STATUS), 1, 1, 1},
  {&__pyx_kp_ERR_PENDING, __pyx_k_ERR_PENDING, sizeof(__pyx_k_ERR_PENDING), 1, 1, 1},
  {&__pyx_kp_ERR_TOPOLOGY, __pyx_k_ERR_TOPOLOGY, sizeof(__pyx_k_ERR_TOPOLOGY), 1, 1, 1},
  {&__pyx_kp_ERR_DIMS, __pyx_k_ERR_DIMS, sizeof(__pyx_k_ERR_DIMS), 1, 1, 1},
  {&__pyx_kp_ERR_ARG, __pyx_k_ERR_ARG, sizeof(__pyx_k_ERR_ARG), 1, 1, 1},
  {&__pyx_kp_ERR_OTHER, __pyx_k_ERR_OTHER, sizeof(__pyx_k_ERR_OTHER), 1, 1, 1},
  {&__pyx_kp_ERR_UNKNOWN, __pyx_k_ERR_UNKNOWN, sizeof(__pyx_k_ERR_UNKNOWN), 1, 1, 1},
  {&__pyx_kp_ERR_INTERN, __pyx_k_ERR_INTERN, sizeof(__pyx_k_ERR_INTERN), 1, 1, 1},
  {&__pyx_kp_ERR_INFO, __pyx_k_ERR_INFO, sizeof(__pyx_k_ERR_INFO), 1, 1, 1},
  {&__pyx_kp_ERR_FILE, __pyx_k_ERR_FILE, sizeof(__pyx_k_ERR_FILE), 1, 1, 1},
  {&__pyx_kp_ERR_WIN, __pyx_k_ERR_WIN, sizeof(__pyx_k_ERR_WIN), 1, 1, 1},
  {&__pyx_kp_ERR_KEYVAL, __pyx_k_ERR_KEYVAL, sizeof(__pyx_k_ERR_KEYVAL), 1, 1, 1},
  {&__pyx_kp_ERR_INFO_KEY, __pyx_k_ERR_INFO_KEY, sizeof(__pyx_k_ERR_INFO_KEY), 1, 1, 1},
  {&__pyx_kp_ERR_INFO_VALUE, __pyx_k_ERR_INFO_VALUE, sizeof(__pyx_k_ERR_INFO_VALUE), 1, 1, 1},
  {&__pyx_kp_ERR_INFO_NOKEY, __pyx_k_ERR_INFO_NOKEY, sizeof(__pyx_k_ERR_INFO_NOKEY), 1, 1, 1},
  {&__pyx_kp_ERR_ACCESS, __pyx_k_ERR_ACCESS, sizeof(__pyx_k_ERR_ACCESS), 1, 1, 1},
  {&__pyx_kp_ERR_AMODE, __pyx_k_ERR_AMODE, sizeof(__pyx_k_ERR_AMODE), 1, 1, 1},
  {&__pyx_kp_ERR_BAD_FILE, __pyx_k_ERR_BAD_FILE, sizeof(__pyx_k_ERR_BAD_FILE), 1, 1, 1},
  {&__pyx_kp_ERR_FILE_EXISTS, __pyx_k_ERR_FILE_EXISTS, sizeof(__pyx_k_ERR_FILE_EXISTS), 1, 1, 1},
  {&__pyx_kp_ERR_FILE_IN_USE, __pyx_k_ERR_FILE_IN_USE, sizeof(__pyx_k_ERR_FILE_IN_USE), 1, 1, 1},
  {&__pyx_kp_ERR_NO_SPACE, __pyx_k_ERR_NO_SPACE, sizeof(__pyx_k_ERR_NO_SPACE), 1, 1, 1},
  {&__pyx_kp_ERR_NO_SUCH_FILE, __pyx_k_ERR_NO_SUCH_FILE, sizeof(__pyx_k_ERR_NO_SUCH_FILE), 1, 1, 1},
  {&__pyx_kp_ERR_IO, __pyx_k_ERR_IO, sizeof(__pyx_k_ERR_IO), 1, 1, 1},
  {&__pyx_kp_ERR_READ_ONLY, __pyx_k_ERR_READ_ONLY, sizeof(__pyx_k_ERR_READ_ONLY), 1, 1, 1},
  {&__pyx_kp_ERR_CONVERSION, __pyx_k_ERR_CONVERSION, sizeof(__pyx_k_ERR_CONVERSION), 1, 1, 1},
  {&__pyx_kp_ERR_DUP_DATAREP, __pyx_k_ERR_DUP_DATAREP, sizeof(__pyx_k_ERR_DUP_DATAREP), 1, 1, 1},
  {&__pyx_kp_58, __pyx_k_58, sizeof(__pyx_k_58), 1, 1, 1},
  {&__pyx_kp_59, __pyx_k_59, sizeof(__pyx_k_59), 1, 1, 1},
  {&__pyx_kp_ERR_NAME, __pyx_k_ERR_NAME, sizeof(__pyx_k_ERR_NAME), 1, 1, 1},
  {&__pyx_kp_ERR_NO_MEM, __pyx_k_ERR_NO_MEM, sizeof(__pyx_k_ERR_NO_MEM), 1, 1, 1},
  {&__pyx_kp_ERR_NOT_SAME, __pyx_k_ERR_NOT_SAME, sizeof(__pyx_k_ERR_NOT_SAME), 1, 1, 1},
  {&__pyx_kp_ERR_PORT, __pyx_k_ERR_PORT, sizeof(__pyx_k_ERR_PORT), 1, 1, 1},
  {&__pyx_kp_ERR_QUOTA, __pyx_k_ERR_QUOTA, sizeof(__pyx_k_ERR_QUOTA), 1, 1, 1},
  {&__pyx_kp_ERR_SERVICE, __pyx_k_ERR_SERVICE, sizeof(__pyx_k_ERR_SERVICE), 1, 1, 1},
  {&__pyx_kp_ERR_SPAWN, __pyx_k_ERR_SPAWN, sizeof(__pyx_k_ERR_SPAWN), 1, 1, 1},
  {&__pyx_kp_ERR_BASE, __pyx_k_ERR_BASE, sizeof(__pyx_k_ERR_BASE), 1, 1, 1},
  {&__pyx_kp_ERR_LOCKTYPE, __pyx_k_ERR_LOCKTYPE, sizeof(__pyx_k_ERR_LOCKTYPE), 1, 1, 1},
  {&__pyx_kp_ERR_RMA_CONFLICT, __pyx_k_ERR_RMA_CONFLICT, sizeof(__pyx_k_ERR_RMA_CONFLICT), 1, 1, 1},
  {&__pyx_kp_ERR_RMA_SYNC, __pyx_k_ERR_RMA_SYNC, sizeof(__pyx_k_ERR_RMA_SYNC), 1, 1, 1},
  {&__pyx_kp_ERR_SIZE, __pyx_k_ERR_SIZE, sizeof(__pyx_k_ERR_SIZE), 1, 1, 1},
  {&__pyx_kp_ERR_DISP, __pyx_k_ERR_DISP, sizeof(__pyx_k_ERR_DISP), 1, 1, 1},
  {&__pyx_kp_ERR_ASSERT, __pyx_k_ERR_ASSERT, sizeof(__pyx_k_ERR_ASSERT), 1, 1, 1},
  {&__pyx_kp_ERRHANDLER_NULL, __pyx_k_ERRHANDLER_NULL, sizeof(__pyx_k_ERRHANDLER_NULL), 1, 1, 1},
  {&__pyx_kp_ERRORS_RETURN, __pyx_k_ERRORS_RETURN, sizeof(__pyx_k_ERRORS_RETURN), 1, 1, 1},
  {&__pyx_kp_ERRORS_ARE_FATAL, __pyx_k_ERRORS_ARE_FATAL, sizeof(__pyx_k_ERRORS_ARE_FATAL), 1, 1, 1},
  {&__pyx_kp_ORDER_C, __pyx_k_ORDER_C, sizeof(__pyx_k_ORDER_C), 1, 1, 1},
  {&__pyx_kp_ORDER_FORTRAN, __pyx_k_ORDER_FORTRAN, sizeof(__pyx_k_ORDER_FORTRAN), 1, 1, 1},
  {&__pyx_kp_ORDER_F, __pyx_k_ORDER_F, sizeof(__pyx_k_ORDER_F), 1, 1, 1},
  {&__pyx_kp_TYPECLASS_INTEGER, __pyx_k_TYPECLASS_INTEGER, sizeof(__pyx_k_TYPECLASS_INTEGER), 1, 1, 1},
  {&__pyx_kp_TYPECLASS_REAL, __pyx_k_TYPECLASS_REAL, sizeof(__pyx_k_TYPECLASS_REAL), 1, 1, 1},
  {&__pyx_kp_TYPECLASS_COMPLEX, __pyx_k_TYPECLASS_COMPLEX, sizeof(__pyx_k_TYPECLASS_COMPLEX), 1, 1, 1},
  {&__pyx_kp_DISTRIBUTE_NONE, __pyx_k_DISTRIBUTE_NONE, sizeof(__pyx_k_DISTRIBUTE_NONE), 1, 1, 1},
  {&__pyx_kp_DISTRIBUTE_BLOCK, __pyx_k_DISTRIBUTE_BLOCK, sizeof(__pyx_k_DISTRIBUTE_BLOCK), 1, 1, 1},
  {&__pyx_kp_DISTRIBUTE_CYCLIC, __pyx_k_DISTRIBUTE_CYCLIC, sizeof(__pyx_k_DISTRIBUTE_CYCLIC), 1, 1, 1},
  {&__pyx_kp_60, __pyx_k_60, sizeof(__pyx_k_60), 1, 1, 1},
  {&__pyx_kp_DATATYPE_NULL, __pyx_k_DATATYPE_NULL, sizeof(__pyx_k_DATATYPE_NULL), 1, 1, 1},
  {&__pyx_kp_CHAR, __pyx_k_CHAR, sizeof(__pyx_k_CHAR), 1, 1, 1},
  {&__pyx_kp_WCHAR, __pyx_k_WCHAR, sizeof(__pyx_k_WCHAR), 1, 1, 1},
  {&__pyx_kp_SIGNED_CHAR, __pyx_k_SIGNED_CHAR, sizeof(__pyx_k_SIGNED_CHAR), 1, 1, 1},
  {&__pyx_kp_UNSIGNED_CHAR, __pyx_k_UNSIGNED_CHAR, sizeof(__pyx_k_UNSIGNED_CHAR), 1, 1, 1},
  {&__pyx_kp_SHORT, __pyx_k_SHORT, sizeof(__pyx_k_SHORT), 1, 1, 1},
  {&__pyx_kp_UNSIGNED_SHORT, __pyx_k_UNSIGNED_SHORT, sizeof(__pyx_k_UNSIGNED_SHORT), 1, 1, 1},
  {&__pyx_kp_INT, __pyx_k_INT, sizeof(__pyx_k_INT), 1, 1, 1},
  {&__pyx_kp_UNSIGNED, __pyx_k_UNSIGNED, sizeof(__pyx_k_UNSIGNED), 1, 1, 1},
  {&__pyx_kp_LONG, __pyx_k_LONG, sizeof(__pyx_k_LONG), 1, 1, 1},
  {&__pyx_kp_UNSIGNED_LONG, __pyx_k_UNSIGNED_LONG, sizeof(__pyx_k_UNSIGNED_LONG), 1, 1, 1},
  {&__pyx_kp_FLOAT, __pyx_k_FLOAT, sizeof(__pyx_k_FLOAT), 1, 1, 1},
  {&__pyx_kp_DOUBLE, __pyx_k_DOUBLE, sizeof(__pyx_k_DOUBLE), 1, 1, 1},
  {&__pyx_kp_LONG_DOUBLE, __pyx_k_LONG_DOUBLE, sizeof(__pyx_k_LONG_DOUBLE), 1, 1, 1},
  {&__pyx_kp_BYTE, __pyx_k_BYTE, sizeof(__pyx_k_BYTE), 1, 1, 1},
  {&__pyx_kp_PACKED, __pyx_k_PACKED, sizeof(__pyx_k_PACKED), 1, 1, 1},
  {&__pyx_kp_SHORT_INT, __pyx_k_SHORT_INT, sizeof(__pyx_k_SHORT_INT), 1, 1, 1},
  {&__pyx_kp_TWOINT, __pyx_k_TWOINT, sizeof(__pyx_k_TWOINT), 1, 1, 1},
  {&__pyx_kp_LONG_INT, __pyx_k_LONG_INT, sizeof(__pyx_k_LONG_INT), 1, 1, 1},
  {&__pyx_kp_FLOAT_INT, __pyx_k_FLOAT_INT, sizeof(__pyx_k_FLOAT_INT), 1, 1, 1},
  {&__pyx_kp_DOUBLE_INT, __pyx_k_DOUBLE_INT, sizeof(__pyx_k_DOUBLE_INT), 1, 1, 1},
  {&__pyx_kp_LONG_DOUBLE_INT, __pyx_k_LONG_DOUBLE_INT, sizeof(__pyx_k_LONG_DOUBLE_INT), 1, 1, 1},
  {&__pyx_kp_LONG_LONG, __pyx_k_LONG_LONG, sizeof(__pyx_k_LONG_LONG), 1, 1, 1},
  {&__pyx_kp_UNSIGNED_LONG_LONG, __pyx_k_UNSIGNED_LONG_LONG, sizeof(__pyx_k_UNSIGNED_LONG_LONG), 1, 1, 1},
  {&__pyx_kp_LONG_LONG_INT, __pyx_k_LONG_LONG_INT, sizeof(__pyx_k_LONG_LONG_INT), 1, 1, 1},
  {&__pyx_kp_CHARACTER, __pyx_k_CHARACTER, sizeof(__pyx_k_CHARACTER), 1, 1, 1},
  {&__pyx_kp_LOGICAL, __pyx_k_LOGICAL, sizeof(__pyx_k_LOGICAL), 1, 1, 1},
  {&__pyx_kp_INTEGER, __pyx_k_INTEGER, sizeof(__pyx_k_INTEGER), 1, 1, 1},
  {&__pyx_kp_REAL, __pyx_k_REAL, sizeof(__pyx_k_REAL), 1, 1, 1},
  {&__pyx_kp_DOUBLE_PRECISION, __pyx_k_DOUBLE_PRECISION, sizeof(__pyx_k_DOUBLE_PRECISION), 1, 1, 1},
  {&__pyx_kp_F_COMPLEX, __pyx_k_F_COMPLEX, sizeof(__pyx_k_F_COMPLEX), 1, 1, 1},
  {&__pyx_kp_F_DOUBLE_COMPLEX, __pyx_k_F_DOUBLE_COMPLEX, sizeof(__pyx_k_F_DOUBLE_COMPLEX), 1, 1, 1},
  {&__pyx_kp_UB, __pyx_k_UB, sizeof(__pyx_k_UB), 1, 1, 1},
  {&__pyx_kp_LB, __pyx_k_LB, sizeof(__pyx_k_LB), 1, 1, 1},
  {&__pyx_kp_UNSIGNED_INT, __pyx_k_UNSIGNED_INT, sizeof(__pyx_k_UNSIGNED_INT), 1, 1, 1},
  {&__pyx_kp_INT_INT, __pyx_k_INT_INT, sizeof(__pyx_k_INT_INT), 1, 1, 1},
  {&__pyx_kp_REQUEST_NULL, __pyx_k_REQUEST_NULL, sizeof(__pyx_k_REQUEST_NULL), 1, 1, 1},
  {&__pyx_kp_INFO_NULL, __pyx_k_INFO_NULL, sizeof(__pyx_k_INFO_NULL), 1, 1, 1},
  {&__pyx_kp_OP_NULL, __pyx_k_OP_NULL, sizeof(__pyx_k_OP_NULL), 1, 1, 1},
  {&__pyx_kp_MAX, __pyx_k_MAX, sizeof(__pyx_k_MAX), 1, 1, 1},
  {&__pyx_kp_MIN, __pyx_k_MIN, sizeof(__pyx_k_MIN), 1, 1, 1},
  {&__pyx_kp_SUM, __pyx_k_SUM, sizeof(__pyx_k_SUM), 1, 1, 1},
  {&__pyx_kp_PROD, __pyx_k_PROD, sizeof(__pyx_k_PROD), 1, 1, 1},
  {&__pyx_kp_LAND, __pyx_k_LAND, sizeof(__pyx_k_LAND), 1, 1, 1},
  {&__pyx_kp_BAND, __pyx_k_BAND, sizeof(__pyx_k_BAND), 1, 1, 1},
  {&__pyx_kp_LOR, __pyx_k_LOR, sizeof(__pyx_k_LOR), 1, 1, 1},
  {&__pyx_kp_BOR, __pyx_k_BOR, sizeof(__pyx_k_BOR), 1, 1, 1},
  {&__pyx_kp_LXOR, __pyx_k_LXOR, sizeof(__pyx_k_LXOR), 1, 1, 1},
  {&__pyx_kp_BXOR, __pyx_k_BXOR, sizeof(__pyx_k_BXOR), 1, 1, 1},
  {&__pyx_kp_MAXLOC, __pyx_k_MAXLOC, sizeof(__pyx_k_MAXLOC), 1, 1, 1},
  {&__pyx_kp_MINLOC, __pyx_k_MINLOC, sizeof(__pyx_k_MINLOC), 1, 1, 1},
  {&__pyx_kp_REPLACE, __pyx_k_REPLACE, sizeof(__pyx_k_REPLACE), 1, 1, 1},
  {&__pyx_kp_GROUP_NULL, __pyx_k_GROUP_NULL, sizeof(__pyx_k_GROUP_NULL), 1, 1, 1},
  {&__pyx_kp_GROUP_EMPTY, __pyx_k_GROUP_EMPTY, sizeof(__pyx_k_GROUP_EMPTY), 1, 1, 1},
  {&__pyx_kp_IDENT, __pyx_k_IDENT, sizeof(__pyx_k_IDENT), 1, 1, 1},
  {&__pyx_kp_CONGRUENT, __pyx_k_CONGRUENT, sizeof(__pyx_k_CONGRUENT), 1, 1, 1},
  {&__pyx_kp_SIMILAR, __pyx_k_SIMILAR, sizeof(__pyx_k_SIMILAR), 1, 1, 1},
  {&__pyx_kp_UNEQUAL, __pyx_k_UNEQUAL, sizeof(__pyx_k_UNEQUAL), 1, 1, 1},
  {&__pyx_kp_CART, __pyx_k_CART, sizeof(__pyx_k_CART), 1, 1, 1},
  {&__pyx_kp_GRAPH, __pyx_k_GRAPH, sizeof(__pyx_k_GRAPH), 1, 1, 1},
  {&__pyx_kp_COMM_NULL, __pyx_k_COMM_NULL, sizeof(__pyx_k_COMM_NULL), 1, 1, 1},
  {&__pyx_kp_COMM_SELF, __pyx_k_COMM_SELF, sizeof(__pyx_k_COMM_SELF), 1, 1, 1},
  {&__pyx_kp_COMM_WORLD, __pyx_k_COMM_WORLD, sizeof(__pyx_k_COMM_WORLD), 1, 1, 1},
  {&__pyx_kp_BSEND_OVERHEAD, __pyx_k_BSEND_OVERHEAD, sizeof(__pyx_k_BSEND_OVERHEAD), 1, 1, 1},
  {&__pyx_kp_MODE_NOCHECK, __pyx_k_MODE_NOCHECK, sizeof(__pyx_k_MODE_NOCHECK), 1, 1, 1},
  {&__pyx_kp_MODE_NOSTORE, __pyx_k_MODE_NOSTORE, sizeof(__pyx_k_MODE_NOSTORE), 1, 1, 1},
  {&__pyx_kp_MODE_NOPUT, __pyx_k_MODE_NOPUT, sizeof(__pyx_k_MODE_NOPUT), 1, 1, 1},
  {&__pyx_kp_MODE_NOPRECEDE, __pyx_k_MODE_NOPRECEDE, sizeof(__pyx_k_MODE_NOPRECEDE), 1, 1, 1},
  {&__pyx_kp_MODE_NOSUCCEED, __pyx_k_MODE_NOSUCCEED, sizeof(__pyx_k_MODE_NOSUCCEED), 1, 1, 1},
  {&__pyx_kp_LOCK_EXCLUSIVE, __pyx_k_LOCK_EXCLUSIVE, sizeof(__pyx_k_LOCK_EXCLUSIVE), 1, 1, 1},
  {&__pyx_kp_LOCK_SHARED, __pyx_k_LOCK_SHARED, sizeof(__pyx_k_LOCK_SHARED), 1, 1, 1},
  {&__pyx_kp_WIN_NULL, __pyx_k_WIN_NULL, sizeof(__pyx_k_WIN_NULL), 1, 1, 1},
  {&__pyx_kp_MODE_RDONLY, __pyx_k_MODE_RDONLY, sizeof(__pyx_k_MODE_RDONLY), 1, 1, 1},
  {&__pyx_kp_MODE_WRONLY, __pyx_k_MODE_WRONLY, sizeof(__pyx_k_MODE_WRONLY), 1, 1, 1},
  {&__pyx_kp_MODE_RDWR, __pyx_k_MODE_RDWR, sizeof(__pyx_k_MODE_RDWR), 1, 1, 1},
  {&__pyx_kp_MODE_CREATE, __pyx_k_MODE_CREATE, sizeof(__pyx_k_MODE_CREATE), 1, 1, 1},
  {&__pyx_kp_MODE_EXCL, __pyx_k_MODE_EXCL, sizeof(__pyx_k_MODE_EXCL), 1, 1, 1},
  {&__pyx_kp_82, __pyx_k_82, sizeof(__pyx_k_82), 1, 1, 1},
  {&__pyx_kp_MODE_UNIQUE_OPEN, __pyx_k_MODE_UNIQUE_OPEN, sizeof(__pyx_k_MODE_UNIQUE_OPEN), 1, 1, 1},
  {&__pyx_kp_MODE_SEQUENTIAL, __pyx_k_MODE_SEQUENTIAL, sizeof(__pyx_k_MODE_SEQUENTIAL), 1, 1, 1},
  {&__pyx_kp_MODE_APPEND, __pyx_k_MODE_APPEND, sizeof(__pyx_k_MODE_APPEND), 1, 1, 1},
  {&__pyx_kp_SEEK_SET, __pyx_k_SEEK_SET, sizeof(__pyx_k_SEEK_SET), 1, 1, 1},
  {&__pyx_kp_SEEK_CUR, __pyx_k_SEEK_CUR, sizeof(__pyx_k_SEEK_CUR), 1, 1, 1},
  {&__pyx_kp_SEEK_END, __pyx_k_SEEK_END, sizeof(__pyx_k_SEEK_END), 1, 1, 1},
  {&__pyx_kp_83, __pyx_k_83, sizeof(__pyx_k_83), 1, 1, 1},
  {&__pyx_kp_DISP_CUR, __pyx_k_DISP_CUR, sizeof(__pyx_k_DISP_CUR), 1, 1, 1},
  {&__pyx_kp_FILE_NULL, __pyx_k_FILE_NULL, sizeof(__pyx_k_FILE_NULL), 1, 1, 1},
  {&__pyx_kp_UNDEFINED, __pyx_k_UNDEFINED, sizeof(__pyx_k_UNDEFINED), 1, 1, 1},
  {&__pyx_kp_ANY_SOURCE, __pyx_k_ANY_SOURCE, sizeof(__pyx_k_ANY_SOURCE), 1, 1, 1},
  {&__pyx_kp_ANY_TAG, __pyx_k_ANY_TAG, sizeof(__pyx_k_ANY_TAG), 1, 1, 1},
  {&__pyx_kp_PROC_NULL, __pyx_k_PROC_NULL, sizeof(__pyx_k_PROC_NULL), 1, 1, 1},
  {&__pyx_kp_ROOT, __pyx_k_ROOT, sizeof(__pyx_k_ROOT), 1, 1, 1},
  {&__pyx_kp_BOTTOM, __pyx_k_BOTTOM, sizeof(__pyx_k_BOTTOM), 1, 1, 1},
  {&__pyx_kp_IN_PLACE, __pyx_k_IN_PLACE, sizeof(__pyx_k_IN_PLACE), 1, 1, 1},
  {&__pyx_kp_KEYVAL_INVALID, __pyx_k_KEYVAL_INVALID, sizeof(__pyx_k_KEYVAL_INVALID), 1, 1, 1},
  {&__pyx_kp_TAG_UB, __pyx_k_TAG_UB, sizeof(__pyx_k_TAG_UB), 1, 1, 1},
  {&__pyx_kp_HOST, __pyx_k_HOST, sizeof(__pyx_k_HOST), 1, 1, 1},
  {&__pyx_kp_IO, __pyx_k_IO, sizeof(__pyx_k_IO), 1, 1, 1},
  {&__pyx_kp_WTIME_IS_GLOBAL, __pyx_k_WTIME_IS_GLOBAL, sizeof(__pyx_k_WTIME_IS_GLOBAL), 1, 1, 1},
  {&__pyx_kp_UNIVERSE_SIZE, __pyx_k_UNIVERSE_SIZE, sizeof(__pyx_k_UNIVERSE_SIZE), 1, 1, 1},
  {&__pyx_kp_APPNUM, __pyx_k_APPNUM, sizeof(__pyx_k_APPNUM), 1, 1, 1},
  {&__pyx_kp_LASTUSEDCODE, __pyx_k_LASTUSEDCODE, sizeof(__pyx_k_LASTUSEDCODE), 1, 1, 1},
  {&__pyx_kp_WIN_BASE, __pyx_k_WIN_BASE, sizeof(__pyx_k_WIN_BASE), 1, 1, 1},
  {&__pyx_kp_WIN_SIZE, __pyx_k_WIN_SIZE, sizeof(__pyx_k_WIN_SIZE), 1, 1, 1},
  {&__pyx_kp_WIN_DISP_UNIT, __pyx_k_WIN_DISP_UNIT, sizeof(__pyx_k_WIN_DISP_UNIT), 1, 1, 1},
  {&__pyx_kp_THREAD_SINGLE, __pyx_k_THREAD_SINGLE, sizeof(__pyx_k_THREAD_SINGLE), 1, 1, 1},
  {&__pyx_kp_THREAD_FUNNELED, __pyx_k_THREAD_FUNNELED, sizeof(__pyx_k_THREAD_FUNNELED), 1, 1, 1},
  {&__pyx_kp_THREAD_SERIALIZED, __pyx_k_THREAD_SERIALIZED, sizeof(__pyx_k_THREAD_SERIALIZED), 1, 1, 1},
  {&__pyx_kp_THREAD_MULTIPLE, __pyx_k_THREAD_MULTIPLE, sizeof(__pyx_k_THREAD_MULTIPLE), 1, 1, 1},
  {&__pyx_kp_VERSION, __pyx_k_VERSION, sizeof(__pyx_k_VERSION), 1, 1, 1},
  {&__pyx_kp_SUBVERSION, __pyx_k_SUBVERSION, sizeof(__pyx_k_SUBVERSION), 1, 1, 1},
  {&__pyx_kp_MAX_PROCESSOR_NAME, __pyx_k_MAX_PROCESSOR_NAME, sizeof(__pyx_k_MAX_PROCESSOR_NAME), 1, 1, 1},
  {&__pyx_kp_MAX_ERROR_STRING, __pyx_k_MAX_ERROR_STRING, sizeof(__pyx_k_MAX_ERROR_STRING), 1, 1, 1},
  {&__pyx_kp_MAX_PORT_NAME, __pyx_k_MAX_PORT_NAME, sizeof(__pyx_k_MAX_PORT_NAME), 1, 1, 1},
  {&__pyx_kp_MAX_INFO_KEY, __pyx_k_MAX_INFO_KEY, sizeof(__pyx_k_MAX_INFO_KEY), 1, 1, 1},
  {&__pyx_kp_MAX_INFO_VAL, __pyx_k_MAX_INFO_VAL, sizeof(__pyx_k_MAX_INFO_VAL), 1, 1, 1},
  {&__pyx_kp_MAX_OBJECT_NAME, __pyx_k_MAX_OBJECT_NAME, sizeof(__pyx_k_MAX_OBJECT_NAME), 1, 1, 1},
  {&__pyx_kp_MAX_DATAREP_STRING, __pyx_k_MAX_DATAREP_STRING, sizeof(__pyx_k_MAX_DATAREP_STRING), 1, 1, 1},
  {&__pyx_kp_warnings, __pyx_k_warnings, sizeof(__pyx_k_warnings), 1, 1, 1},
  {&__pyx_kp_warn, __pyx_k_warn, sizeof(__pyx_k_warn), 1, 1, 1},
  {&__pyx_kp_93, __pyx_k_93, sizeof(__pyx_k_93), 1, 1, 1},
  {&__pyx_kp_rc, __pyx_k_rc, sizeof(__pyx_k_rc), 1, 1, 1},
  {&__pyx_kp_94, __pyx_k_94, sizeof(__pyx_k_94), 1, 1, 0},
  {&__pyx_kp_initialize, __pyx_k_initialize, sizeof(__pyx_k_initialize), 1, 1, 1},
  {&__pyx_kp_threaded, __pyx_k_threaded, sizeof(__pyx_k_threaded), 1, 1, 1},
  {&__pyx_kp_thread_level, __pyx_k_thread_level, sizeof(__pyx_k_thread_level), 1, 1, 1},
  {&__pyx_kp_finalize, __pyx_k_finalize, sizeof(__pyx_k_finalize), 1, 1, 1},
  {&__pyx_kp_95, __pyx_k_95, sizeof(__pyx_k_95), 1, 1, 0},
  {&__pyx_kp_96, __pyx_k_96, sizeof(__pyx_k_96), 1, 1, 0},
  {&__pyx_kp_97, __pyx_k_97, sizeof(__pyx_k_97), 1, 1, 0},
  {&__pyx_kp_98, __pyx_k_98, sizeof(__pyx_k_98), 1, 1, 0},
  {&__pyx_kp_99, __pyx_k_99, sizeof(__pyx_k_99), 1, 1, 0},
  {&__pyx_kp_100, __pyx_k_100, sizeof(__pyx_k_100), 1, 1, 0},
  {&__pyx_kp_101, __pyx_k_101, sizeof(__pyx_k_101), 1, 1, 0},
  {&__pyx_kp_102, __pyx_k_102, sizeof(__pyx_k_102), 1, 1, 0},
  {&__pyx_kp_103, __pyx_k_103, sizeof(__pyx_k_103), 1, 1, 0},
  {&__pyx_kp_104, __pyx_k_104, sizeof(__pyx_k_104), 1, 1, 0},
  {&__pyx_kp_105, __pyx_k_105, sizeof(__pyx_k_105), 1, 1, 0},
  {&__pyx_kp_106, __pyx_k_106, sizeof(__pyx_k_106), 1, 1, 0},
  {&__pyx_kp_107, __pyx_k_107, sizeof(__pyx_k_107), 1, 1, 0},
  {&__pyx_kp_108, __pyx_k_108, sizeof(__pyx_k_108), 1, 1, 0},
  {&__pyx_kp_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 1, 1, 1},
  {&__pyx_kp_max, __pyx_k_max, sizeof(__pyx_k_max), 1, 1, 1},
  {&__pyx_kp_min, __pyx_k_min, sizeof(__pyx_k_min), 1, 1, 1},
  {&__pyx_kp_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 1, 1, 1},
  {&__pyx_kp_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 1, 1, 1},
  {&__pyx_kp_zip, __pyx_k_zip, sizeof(__pyx_k_zip), 1, 1, 1},
  {&__pyx_kp_range, __pyx_k_range, sizeof(__pyx_k_range), 1, 1, 1},
  {&__pyx_kp_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 1, 1, 1},
  {&__pyx_kp_insert, __pyx_k_insert, sizeof(__pyx_k_insert), 1, 1, 1},
  {&__pyx_kp_join, __pyx_k_join, sizeof(__pyx_k_join), 1, 1, 1},
  {&__pyx_kp_ob_mpi, __pyx_k_ob_mpi, sizeof(__pyx_k_ob_mpi), 1, 1, 1},
  {&__pyx_kp_NotImplemented, __pyx_k_NotImplemented, sizeof(__pyx_k_NotImplemented), 1, 1, 1},
  {&__pyx_kp_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 1, 1, 1},
  {&__pyx_kp_137, __pyx_k_137, sizeof(__pyx_k_137), 0, 1, 0},
  {&__pyx_kp_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 1, 1, 1},
  {&__pyx_kp_53, __pyx_k_53, sizeof(__pyx_k_53), 1, 0, 0},
  {&__pyx_kp_54, __pyx_k_54, sizeof(__pyx_k_54), 0, 0, 0},
  {&__pyx_kp_92, __pyx_k_92, sizeof(__pyx_k_92), 1, 0, 0},
  {&__pyx_kp_110, __pyx_k_110, sizeof(__pyx_k_110), 1, 0, 0},
  {&__pyx_kp_111, __pyx_k_111, sizeof(__pyx_k_111), 1, 0, 0},
  {&__pyx_kp_113, __pyx_k_113, sizeof(__pyx_k_113), 0, 0, 0},
  {&__pyx_kp_114, __pyx_k_114, sizeof(__pyx_k_114), 0, 0, 0},
  {&__pyx_kp_115, __pyx_k_115, sizeof(__pyx_k_115), 0, 0, 0},
  {&__pyx_kp_116, __pyx_k_116, sizeof(__pyx_k_116), 0, 0, 0},
  {&__pyx_kp_128, __pyx_k_128, sizeof(__pyx_k_128), 0, 0, 0},
  {&__pyx_kp_129, __pyx_k_129, sizeof(__pyx_k_129), 0, 0, 0},
  {0, 0, 0, 0, 0, 0}
};
static int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_ImportError = __Pyx_GetName(__pyx_b, __pyx_kp_ImportError); if (!__pyx_builtin_ImportError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_kp_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_property = __Pyx_GetName(__pyx_b, __pyx_kp_property); if (!__pyx_builtin_property) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_MemoryError = __Pyx_GetName(__pyx_b, __pyx_kp_MemoryError); if (!__pyx_builtin_MemoryError) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_max = __Pyx_GetName(__pyx_b, __pyx_kp_max); if (!__pyx_builtin_max) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_min = __Pyx_GetName(__pyx_b, __pyx_kp_min); if (!__pyx_builtin_min) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_kp_TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_kp_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_zip = __Pyx_GetName(__pyx_b, __pyx_kp_zip); if (!__pyx_builtin_zip) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_kp_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_NotImplemented = __Pyx_GetName(__pyx_b, __pyx_kp_NotImplemented); if (!__pyx_builtin_NotImplemented) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_KeyError = __Pyx_GetName(__pyx_b, __pyx_kp_KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_NotImplementedError = __Pyx_GetName(__pyx_b, __pyx_kp_NotImplementedError); if (!__pyx_builtin_NotImplementedError) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  return 0;
  __pyx_L1_error:;
  return -1;
}

static int __Pyx_InitGlobals(void) {
  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __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[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  return 0;
  __pyx_L1_error:;
  return -1;
}

#if PY_MAJOR_VERSION < 3
PyMODINIT_FUNC initMPIPython(void); /*proto*/
PyMODINIT_FUNC initMPIPython(void)
#else
PyMODINIT_FUNC PyInit_MPIPython(void); /*proto*/
PyMODINIT_FUNC PyInit_MPIPython(void)
#endif
{
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  int __pyx_3;
  PyObject *__pyx_4 = 0;
  PyObject *__pyx_5 = 0;
  PyObject *__pyx_6 = 0;
  PyObject *__pyx_7 = 0;
  PyObject *__pyx_8 = 0;
  PyObject *__pyx_9 = 0;
  PyObject *__pyx_10 = 0;
  PyObject *__pyx_11 = 0;
  PyObject *__pyx_12 = 0;
  PyObject *__pyx_13 = 0;
  PyObject *__pyx_14 = 0;
  PyObject *__pyx_15 = 0;
  PyObject *__pyx_16 = 0;
  PyObject *__pyx_17 = 0;
  PyObject *__pyx_18 = 0;
  PyObject *__pyx_19 = 0;
  PyObject *__pyx_20 = 0;
  PyObject *__pyx_21 = 0;
  PyObject *__pyx_22 = 0;
  PyObject *__pyx_23 = 0;
  PyObject *__pyx_24 = 0;
  PyObject *__pyx_25 = 0;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  #ifdef CYTHON_REFNANNY
  void* __pyx_refchk = NULL;
  __Pyx_Refnanny = __Pyx_ImportRefcountAPI("refnanny");
  if (!__Pyx_Refnanny) {
      PyErr_Clear();
      __Pyx_Refnanny = __Pyx_ImportRefcountAPI("Cython.Runtime.refnanny");
      if (!__Pyx_Refnanny)
          Py_FatalError("failed to import refnanny module");
  }
  __pyx_refchk = __Pyx_Refnanny->NewContext("PyMODINIT_FUNC PyInit_MPIPython(void)", __LINE__, __FILE__);
  #endif
  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Library function declarations ---*/
  __pyx_init_filenames();
  /*--- Initialize various global constants etc. ---*/
  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Module creation code ---*/
  #if PY_MAJOR_VERSION < 3
  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("MPIPython"), __pyx_methods, 0, 0, PYTHON_API_VERSION);
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  #endif
  if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __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[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  /*--- Builtin init code ---*/
  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_skip_dispatch = 0;
  /*--- Global init code ---*/
  __pyx_v_6mpi4py_3MPI_MPIException = 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__Pickle_dumps = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI__Pickle_loads = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyMPI_PICKLER = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickler *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__ = ((PyMPIErrhandlerObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___ERRORS_RETURN__ = ((PyMPIErrhandlerObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__ = ((PyMPIErrhandlerObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DATATYPE_NULL__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___CHAR__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___WCHAR__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___SIGNED_CHAR__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___SHORT__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INT__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___FLOAT__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DOUBLE__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG_DOUBLE__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BYTE__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___PACKED__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___SHORT_INT__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___TWOINT__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG_INT__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___FLOAT_INT__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DOUBLE_INT__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG_LONG__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG_LONG_INT__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___CHARACTER__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOGICAL__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INTEGER__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REAL__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___F_COMPLEX__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___F_DOUBLE_COMPLEX__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UB__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LB__ = ((PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REQUEST_NULL__ = ((PyMPIRequestObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INFO_NULL__ = ((PyMPIInfoObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___OP_NULL__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MAX__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MIN__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___SUM__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___PROD__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LAND__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BAND__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOR__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BOR__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LXOR__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BXOR__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MAXLOC__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MINLOC__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REPLACE__ = ((PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___GROUP_NULL__ = ((PyMPIGroupObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___GROUP_EMPTY__ = ((PyMPIGroupObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMM_NULL__ = ((PyMPICommObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMM_SELF__ = ((PyMPIIntracommObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMM_WORLD__ = ((PyMPIIntracommObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMM_PARENT__ = ((PyMPIIntercommObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___WIN_NULL__ = ((PyMPIWinObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___FILE_NULL__ = ((PyMPIFileObject *)Py_None); Py_INCREF(Py_None);
  /*--- Function export code ---*/
  if (__Pyx_ExportFunction("PyMPIDatatype_New", (void (*)(void))PyMPIDatatype_New, "PyObject *(MPI_Datatype)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIDatatype_Get", (void (*)(void))PyMPIDatatype_Get, "MPI_Datatype *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIStatus_New", (void (*)(void))PyMPIStatus_New, "PyObject *(MPI_Status *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIStatus_Get", (void (*)(void))PyMPIStatus_Get, "MPI_Status *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIRequest_New", (void (*)(void))PyMPIRequest_New, "PyObject *(MPI_Request)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIRequest_Get", (void (*)(void))PyMPIRequest_Get, "MPI_Request *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIOp_New", (void (*)(void))PyMPIOp_New, "PyObject *(MPI_Op)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIOp_Get", (void (*)(void))PyMPIOp_Get, "MPI_Op *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIInfo_New", (void (*)(void))PyMPIInfo_New, "PyObject *(MPI_Info)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIInfo_Get", (void (*)(void))PyMPIInfo_Get, "MPI_Info *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIGroup_New", (void (*)(void))PyMPIGroup_New, "PyObject *(MPI_Group)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIGroup_Get", (void (*)(void))PyMPIGroup_Get, "MPI_Group *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIComm_New", (void (*)(void))PyMPIComm_New, "PyObject *(MPI_Comm)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIComm_Get", (void (*)(void))PyMPIComm_Get, "MPI_Comm *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIWin_New", (void (*)(void))PyMPIWin_New, "PyObject *(MPI_Win)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIWin_Get", (void (*)(void))PyMPIWin_Get, "MPI_Win *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIFile_New", (void (*)(void))PyMPIFile_New, "PyObject *(MPI_File)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIFile_Get", (void (*)(void))PyMPIFile_Get, "MPI_File *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIErrhandler_New", (void (*)(void))PyMPIErrhandler_New, "PyObject *(MPI_Errhandler)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("PyMPIErrhandler_Get", (void (*)(void))PyMPIErrhandler_Get, "MPI_Errhandler *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __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[19]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Datatype", (PyObject *)&PyMPIDatatype_Type) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 25; __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 = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Prequest", (PyObject *)&PyMPIPrequest_Type) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 218; __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 = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Grequest", (PyObject *)&PyMPIGrequest_Type) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Grequest = &PyMPIGrequest_Type;
  if (PyType_Ready(&PyMPIOp_Type) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Op", (PyObject *)&PyMPIOp_Type) < 0) {__pyx_filename = __pyx_f[22]; __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[23]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Group", (PyObject *)&PyMPIGroup_Type) < 0) {__pyx_filename = __pyx_f[23]; __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[7]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Info", (PyObject *)&PyMPIInfo_Type) < 0) {__pyx_filename = __pyx_f[7]; __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[6]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Errhandler", (PyObject *)&PyMPIErrhandler_Type) < 0) {__pyx_filename = __pyx_f[6]; __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[8]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Comm", (PyObject *)&PyMPIComm_Type) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 17; __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[8]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Intracomm", (PyObject *)&PyMPIIntracomm_Type) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 792; __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[8]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Cartcomm", (PyObject *)&PyMPICartcomm_Type) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 983; __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[8]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Graphcomm", (PyObject *)&PyMPIGraphcomm_Type) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Graphcomm = &PyMPIGraphcomm_Type;
  PyMPIIntercomm_Type.tp_base = __pyx_ptype_6mpi4py_3MPI_Comm;
  if (PyType_Ready(&PyMPIIntercomm_Type) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Intercomm", (PyObject *)&PyMPIIntercomm_Type) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_Intercomm = &PyMPIIntercomm_Type;
  if (PyType_Ready(&PyMPIWin_Type) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Win", (PyObject *)&PyMPIWin_Type) < 0) {__pyx_filename = __pyx_f[24]; __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[25]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "File", (PyObject *)&PyMPIFile_Type) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI_File = &PyMPIFile_Type;
  __pyx_vtabptr_6mpi4py_3MPI__p_greq = &__pyx_vtable_6mpi4py_3MPI__p_greq;
  #if PY_MAJOR_VERSION >= 3
  __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;
  #else
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_greq.query = (void(*)(void))__pyx_f_6mpi4py_3MPI_7_p_greq_query;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_greq.free = (void(*)(void))__pyx_f_6mpi4py_3MPI_7_p_greq_free;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_greq.cancel = (void(*)(void))__pyx_f_6mpi4py_3MPI_7_p_greq_cancel;
  #endif
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_greq) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 3; __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[15]; __pyx_lineno = 3; __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[15]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI__p_greq = &__pyx_type_6mpi4py_3MPI__p_greq;
  __pyx_vtabptr_6mpi4py_3MPI__p_msg_p2p = &__pyx_vtable_6mpi4py_3MPI__p_msg_p2p;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_6mpi4py_3MPI__p_msg_p2p.for_send = (PyObject *(*)(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 = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *, PyObject *, int))__pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_recv;
  #else
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_p2p.for_send = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_send;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_p2p.for_recv = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_recv;
  #endif
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_msg_p2p) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 168; __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[5]; __pyx_lineno = 168; __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[5]; __pyx_lineno = 168; __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;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_cco_send = (PyObject *(*)(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 = (PyObject *(*)(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 = (PyObject *(*)(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 = (PyObject *(*)(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 = (PyObject *(*)(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 = (PyObject *(*)(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 = (PyObject *(*)(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 = (PyObject *(*)(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 = (PyObject *(*)(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 = (PyObject *(*)(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 = (PyObject *(*)(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_scan = (PyObject *(*)(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 = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_exscan;
  #else
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_cco_send = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_cco_recv = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_bcast = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_bcast;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_gather = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_gather;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_scatter = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scatter;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_allgather = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allgather;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_alltoall = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_alltoall;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_cro_send = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_cro_recv = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_reduce = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_allreduce = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allreduce;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_scan = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scan;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_exscan = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_exscan;
  #endif
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_msg_cco) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 208; __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[5]; __pyx_lineno = 208; __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[5]; __pyx_lineno = 208; __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;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_rma = (PyObject *(*)(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 = (PyObject *(*)(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 = (PyObject *(*)(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 = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_acc;
  #else
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_rma = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_rma;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_put = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_put;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_get = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_acc = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_acc;
  #endif
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_msg_rma) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 462; __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[5]; __pyx_lineno = 462; __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[5]; __pyx_lineno = 462; __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;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_6mpi4py_3MPI__p_msg_io.for_read = (PyObject *(*)(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 = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *, PyObject *))__pyx_f_6mpi4py_3MPI_9_p_msg_io_for_write;
  #else
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_io.for_read = (void(*)(void))__pyx_f_6mpi4py_3MPI_9_p_msg_io_for_read;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_msg_io.for_write = (void(*)(void))__pyx_f_6mpi4py_3MPI_9_p_msg_io_for_write;
  #endif
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_msg_io) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 552; __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[5]; __pyx_lineno = 552; __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[5]; __pyx_lineno = 552; __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_Pickler = &__pyx_vtable_6mpi4py_3MPI__p_Pickler;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_6mpi4py_3MPI__p_Pickler.dump = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *, PyObject *, void **, int *))__pyx_f_6mpi4py_3MPI_10_p_Pickler_dump;
  __pyx_vtable_6mpi4py_3MPI__p_Pickler.alloc = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *, void **, int))__pyx_f_6mpi4py_3MPI_10_p_Pickler_alloc;
  __pyx_vtable_6mpi4py_3MPI__p_Pickler.load = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *, PyObject *))__pyx_f_6mpi4py_3MPI_10_p_Pickler_load;
  __pyx_vtable_6mpi4py_3MPI__p_Pickler.dumpv = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *, PyObject *, void **, int, int *, int *))__pyx_f_6mpi4py_3MPI_10_p_Pickler_dumpv;
  __pyx_vtable_6mpi4py_3MPI__p_Pickler.allocv = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *, void **, int, int *, int *))__pyx_f_6mpi4py_3MPI_10_p_Pickler_allocv;
  __pyx_vtable_6mpi4py_3MPI__p_Pickler.loadv = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_Pickler *, PyObject *, int, int *, int *))__pyx_f_6mpi4py_3MPI_10_p_Pickler_loadv;
  #else
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_Pickler.dump = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_Pickler_dump;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_Pickler.alloc = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_Pickler_alloc;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_Pickler.load = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_Pickler_load;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_Pickler.dumpv = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_Pickler_dumpv;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_Pickler.allocv = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_Pickler_allocv;
  *(void(**)(void))&__pyx_vtable_6mpi4py_3MPI__p_Pickler.loadv = (void(*)(void))__pyx_f_6mpi4py_3MPI_10_p_Pickler_loadv;
  #endif
  if (PyType_Ready(&__pyx_type_6mpi4py_3MPI__p_Pickler) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_6mpi4py_3MPI__p_Pickler.tp_dict, __pyx_vtabptr_6mpi4py_3MPI__p_Pickler) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_p_Pickler", (PyObject *)&__pyx_type_6mpi4py_3MPI__p_Pickler) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_6mpi4py_3MPI__p_Pickler = &__pyx_type_6mpi4py_3MPI__p_Pickler;
  /*--- Type import code ---*/
  /*--- Function import code ---*/
  /*--- Execution code ---*/

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":1
 * __doc__ = u"""             # <<<<<<<<<<<<<<
 * Message Passing Interface.
 * """
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp___doc__, ((PyObject *)__pyx_kp_53)) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":20
 * # --------------------------------------------------------------------
 * 
 * cdef int inited_atimport = 0             # <<<<<<<<<<<<<<
 * cdef int finalize_atexit = 0
 * cdef int startup_done = 0
 */
  __pyx_v_6mpi4py_3MPI_inited_atimport = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":21
 * 
 * cdef int inited_atimport = 0
 * cdef int finalize_atexit = 0             # <<<<<<<<<<<<<<
 * cdef int startup_done = 0
 * cdef int cleanup_done = 0
 */
  __pyx_v_6mpi4py_3MPI_finalize_atexit = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":22
 * cdef int inited_atimport = 0
 * cdef int finalize_atexit = 0
 * cdef int startup_done = 0             # <<<<<<<<<<<<<<
 * cdef int cleanup_done = 0
 * 
 */
  __pyx_v_6mpi4py_3MPI_startup_done = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":23
 * cdef int finalize_atexit = 0
 * cdef int startup_done = 0
 * cdef int cleanup_done = 0             # <<<<<<<<<<<<<<
 * 
 * cdef MPI_Errhandler comm_self_eh  = MPI_ERRHANDLER_NULL
 */
  __pyx_v_6mpi4py_3MPI_cleanup_done = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":25
 * cdef int cleanup_done = 0
 * 
 * cdef MPI_Errhandler comm_self_eh  = MPI_ERRHANDLER_NULL             # <<<<<<<<<<<<<<
 * cdef MPI_Errhandler comm_world_eh = MPI_ERRHANDLER_NULL
 * cdef int PyMPI_KEYVAL_WIN_MEMORY  = MPI_KEYVAL_INVALID
 */
  __pyx_v_6mpi4py_3MPI_comm_self_eh = MPI_ERRHANDLER_NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":26
 * 
 * cdef MPI_Errhandler comm_self_eh  = MPI_ERRHANDLER_NULL
 * cdef MPI_Errhandler comm_world_eh = MPI_ERRHANDLER_NULL             # <<<<<<<<<<<<<<
 * cdef int PyMPI_KEYVAL_WIN_MEMORY  = MPI_KEYVAL_INVALID
 * 
 */
  __pyx_v_6mpi4py_3MPI_comm_world_eh = MPI_ERRHANDLER_NULL;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":27
 * cdef MPI_Errhandler comm_self_eh  = MPI_ERRHANDLER_NULL
 * cdef MPI_Errhandler comm_world_eh = MPI_ERRHANDLER_NULL
 * cdef int PyMPI_KEYVAL_WIN_MEMORY  = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 * 
 * ctypedef struct RCParams:
 */
  __pyx_v_6mpi4py_3MPI_PyMPI_KEYVAL_WIN_MEMORY = MPI_KEYVAL_INVALID;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/atimport.pxi":237
 *     PyObject *PyExc_NotImplementedError
 * 
 * cdef object MPIException = <object>PyExc_RuntimeError             # <<<<<<<<<<<<<<
 * 
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:
 */
  __Pyx_INCREF(((PyObject *)PyExc_RuntimeError));
  __Pyx_GOTREF(__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);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":11
 * include "atimport.pxi"
 * 
 * initialize()             # <<<<<<<<<<<<<<
 * startup()
 * 
 */
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_initialize(); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":12
 * 
 * initialize()
 * startup()             # <<<<<<<<<<<<<<
 * 
 * include "allocate.pxi"
 */
  __pyx_f_6mpi4py_3MPI_startup();

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":8
 *     int is_tuple "PyTuple_CheckExact" (object)
 * 
 * cdef object __BOTTOM__   = <MPI_Aint>MPI_BOTTOM             # <<<<<<<<<<<<<<
 * cdef object __IN_PLACE__ = <MPI_Aint>MPI_IN_PLACE
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(((MPI_Aint)MPI_BOTTOM)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GOTREF(__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;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/message.pxi":9
 * 
 * cdef object __BOTTOM__   = <MPI_Aint>MPI_BOTTOM
 * cdef object __IN_PLACE__ = <MPI_Aint>MPI_IN_PLACE             # <<<<<<<<<<<<<<
 * 
 * cdef inline int is_BOTTOM(object msg):
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyInt_FromLong(((MPI_Aint)MPI_IN_PLACE)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GOTREF(__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;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":10
 * # --------------------------------------------------------------------
 * 
 * cdef object _Pickle_dumps = None             # <<<<<<<<<<<<<<
 * cdef object _Pickle_loads = None
 * cdef object _Pickle_PROTOCOL = -1
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GOTREF(__pyx_v_6mpi4py_3MPI__Pickle_dumps);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI__Pickle_dumps);
  __Pyx_GIVEREF(Py_None);
  __pyx_v_6mpi4py_3MPI__Pickle_dumps = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":11
 * 
 * cdef object _Pickle_dumps = None
 * cdef object _Pickle_loads = None             # <<<<<<<<<<<<<<
 * cdef object _Pickle_PROTOCOL = -1
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GOTREF(__pyx_v_6mpi4py_3MPI__Pickle_loads);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI__Pickle_loads);
  __Pyx_GIVEREF(Py_None);
  __pyx_v_6mpi4py_3MPI__Pickle_loads = Py_None;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":12
 * cdef object _Pickle_dumps = None
 * cdef object _Pickle_loads = None
 * cdef object _Pickle_PROTOCOL = -1             # <<<<<<<<<<<<<<
 * 
 * try:
 */
  __Pyx_INCREF(__pyx_int_neg_1);
  __Pyx_GOTREF(__pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  __pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL = __pyx_int_neg_1;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":14
 * cdef object _Pickle_PROTOCOL = -1
 * 
 * try:             # <<<<<<<<<<<<<<
 *     from cPickle import dumps as _Pickle_dumps
 *     from cPickle import loads as _Pickle_loads
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":15
 * 
 * try:
 *     from cPickle import dumps as _Pickle_dumps             # <<<<<<<<<<<<<<
 *     from cPickle import loads as _Pickle_loads
 *     from cPickle import HIGHEST_PROTOCOL as _Pickle_PROTOCOL
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __Pyx_INCREF(__pyx_kp_dumps);
      PyList_SET_ITEM(__pyx_t_2, 0, __pyx_kp_dumps);
      __Pyx_GIVEREF(__pyx_kp_dumps);
      __pyx_1 = __Pyx_Import(__pyx_kp_cPickle, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_dumps); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_2);
      __Pyx_GOTREF(__pyx_v_6mpi4py_3MPI__Pickle_dumps);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI__Pickle_dumps);
      __Pyx_GIVEREF(__pyx_2);
      __pyx_v_6mpi4py_3MPI__Pickle_dumps = __pyx_2;
      __pyx_2 = 0;
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":16
 * try:
 *     from cPickle import dumps as _Pickle_dumps
 *     from cPickle import loads as _Pickle_loads             # <<<<<<<<<<<<<<
 *     from cPickle import HIGHEST_PROTOCOL as _Pickle_PROTOCOL
 * except ImportError:
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __Pyx_INCREF(__pyx_kp_loads);
      PyList_SET_ITEM(__pyx_t_2, 0, __pyx_kp_loads);
      __Pyx_GIVEREF(__pyx_kp_loads);
      __pyx_1 = __Pyx_Import(__pyx_kp_cPickle, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_loads); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_2);
      __Pyx_GOTREF(__pyx_v_6mpi4py_3MPI__Pickle_loads);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI__Pickle_loads);
      __Pyx_GIVEREF(__pyx_2);
      __pyx_v_6mpi4py_3MPI__Pickle_loads = __pyx_2;
      __pyx_2 = 0;
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":17
 *     from cPickle import dumps as _Pickle_dumps
 *     from cPickle import loads as _Pickle_loads
 *     from cPickle import HIGHEST_PROTOCOL as _Pickle_PROTOCOL             # <<<<<<<<<<<<<<
 * except ImportError:
 *     from pickle import dumps as _Pickle_dumps
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __Pyx_INCREF(__pyx_kp_HIGHEST_PROTOCOL);
      PyList_SET_ITEM(__pyx_t_2, 0, __pyx_kp_HIGHEST_PROTOCOL);
      __Pyx_GIVEREF(__pyx_kp_HIGHEST_PROTOCOL);
      __pyx_1 = __Pyx_Import(__pyx_kp_cPickle, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_kp_HIGHEST_PROTOCOL); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_2);
      __Pyx_GOTREF(__pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL);
      __Pyx_GIVEREF(__pyx_2);
      __pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL = __pyx_2;
      __pyx_2 = 0;
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L9_try_end;
    __pyx_L2_error:;
    __Pyx_XDECREF(__pyx_1); __pyx_1 = 0;
    __Pyx_XDECREF(__pyx_2); __pyx_2 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":18
 *     from cPickle import loads as _Pickle_loads
 *     from cPickle import HIGHEST_PROTOCOL as _Pickle_PROTOCOL
 * except ImportError:             # <<<<<<<<<<<<<<
 *     from pickle import dumps as _Pickle_dumps
 *     from pickle import loads as _Pickle_loads
 */
    __pyx_3 = PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_3) {
      __Pyx_AddTraceback("mpi4py.MPI");
      if (__Pyx_GetException(&__pyx_1, &__pyx_2, &__pyx_4) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_1);
      __Pyx_GOTREF(__pyx_2);
      __Pyx_GOTREF(__pyx_4);

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":19
 *     from cPickle import HIGHEST_PROTOCOL as _Pickle_PROTOCOL
 * except ImportError:
 *     from pickle import dumps as _Pickle_dumps             # <<<<<<<<<<<<<<
 *     from pickle import loads as _Pickle_loads
 *     from pickle import HIGHEST_PROTOCOL as _Pickle_PROTOCOL
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __Pyx_INCREF(__pyx_kp_dumps);
      PyList_SET_ITEM(__pyx_t_2, 0, __pyx_kp_dumps);
      __Pyx_GIVEREF(__pyx_kp_dumps);
      __pyx_5 = __Pyx_Import(__pyx_kp_pickle, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_5);
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      __pyx_6 = PyObject_GetAttr(__pyx_5, __pyx_kp_dumps); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_6);
      __Pyx_GOTREF(__pyx_v_6mpi4py_3MPI__Pickle_dumps);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI__Pickle_dumps);
      __Pyx_GIVEREF(__pyx_6);
      __pyx_v_6mpi4py_3MPI__Pickle_dumps = __pyx_6;
      __pyx_6 = 0;
      __Pyx_DECREF(__pyx_5); __pyx_5 = 0;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":20
 * except ImportError:
 *     from pickle import dumps as _Pickle_dumps
 *     from pickle import loads as _Pickle_loads             # <<<<<<<<<<<<<<
 *     from pickle import HIGHEST_PROTOCOL as _Pickle_PROTOCOL
 * 
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __Pyx_INCREF(__pyx_kp_loads);
      PyList_SET_ITEM(__pyx_t_2, 0, __pyx_kp_loads);
      __Pyx_GIVEREF(__pyx_kp_loads);
      __pyx_5 = __Pyx_Import(__pyx_kp_pickle, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_5);
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      __pyx_6 = PyObject_GetAttr(__pyx_5, __pyx_kp_loads); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_6);
      __Pyx_GOTREF(__pyx_v_6mpi4py_3MPI__Pickle_loads);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI__Pickle_loads);
      __Pyx_GIVEREF(__pyx_6);
      __pyx_v_6mpi4py_3MPI__Pickle_loads = __pyx_6;
      __pyx_6 = 0;
      __Pyx_DECREF(__pyx_5); __pyx_5 = 0;

      /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":21
 *     from pickle import dumps as _Pickle_dumps
 *     from pickle import loads as _Pickle_loads
 *     from pickle import HIGHEST_PROTOCOL as _Pickle_PROTOCOL             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyMPI_Dump(object obj):
 */
      /* __pyx_t_2 allocated */
      __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __Pyx_INCREF(__pyx_kp_HIGHEST_PROTOCOL);
      PyList_SET_ITEM(__pyx_t_2, 0, __pyx_kp_HIGHEST_PROTOCOL);
      __Pyx_GIVEREF(__pyx_kp_HIGHEST_PROTOCOL);
      __pyx_5 = __Pyx_Import(__pyx_kp_pickle, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_5);
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      /* __pyx_t_2 released */
      __pyx_6 = PyObject_GetAttr(__pyx_5, __pyx_kp_HIGHEST_PROTOCOL); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_6);
      __Pyx_GOTREF(__pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL);
      __Pyx_DECREF(__pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL);
      __Pyx_GIVEREF(__pyx_6);
      __pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL = __pyx_6;
      __pyx_6 = 0;
      __Pyx_DECREF(__pyx_5); __pyx_5 = 0;
      __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
      __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
      __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
      goto __pyx_L3_exception_handled;
    }
    __pyx_L4_except_error:;
    __Pyx_XDECREF(__pyx_save_exc_type);
    __Pyx_XDECREF(__pyx_save_exc_value);
    __Pyx_XDECREF(__pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L3_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L9_try_end:;
  }

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/pickled.pxi":131
 * 
 * 
 * cdef _p_Pickler PyMPI_PICKLER = _p_Pickler()             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_Pickler PyMPI_pickler():
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_6mpi4py_3MPI__p_Pickler)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI__p_Pickler))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLER));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLER));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_v_6mpi4py_3MPI_PyMPI_PICKLER = ((struct __pyx_obj_6mpi4py_3MPI__p_Pickler *)__pyx_t_2);
  __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":1
 * class Exception(RuntimeError):             # <<<<<<<<<<<<<<
 * 
 *     """
 */
  __pyx_5 = PyDict_New(); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_5));
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __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_5), "__doc__", __pyx_kp_54) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_6 = __Pyx_CreateClass(((PyObject *)__pyx_t_2), ((PyObject *)__pyx_5), __pyx_kp_Exception, "mpi4py.MPI"); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_6);
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception___init__, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_1 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp___init__, __pyx_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception___eq__, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_2 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp___eq__, __pyx_2) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception___ne__, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_4 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp___ne__, __pyx_4) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception___lt__, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_1 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp___lt__, __pyx_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception___le__, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_2 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp___le__, __pyx_2) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception___gt__, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_4 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp___gt__, __pyx_4) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception___ge__, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_1 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp___ge__, __pyx_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":32
 *         return <bint> (ierr >= error)
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return ierr != MPI_SUCCESS
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception___nonzero__, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_2 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp___nonzero__, __pyx_2) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":36
 *         return ierr != MPI_SUCCESS
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr = self.ob_mpi
 *         return ierr != MPI_SUCCESS
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception___bool__, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_4 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp___bool__, __pyx_4) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":40
 *         return ierr != MPI_SUCCESS
 * 
 *     def __int__(self):             # <<<<<<<<<<<<<<
 *         if not mpi_active():
 *             return self.ob_mpi
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception___int__, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_1 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp___int__, __pyx_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":45
 *         return self.Get_error_code()
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return mpistr('MPI.Exception(%d)') % self.ob_mpi
 * 
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception___repr__, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_2 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp___repr__, __pyx_2) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":48
 *         return mpistr('MPI.Exception(%d)') % self.ob_mpi
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         if not mpi_active():
 *             return mpistr('error code: %d') % self.ob_mpi
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception___str__, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_4 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp___str__, __pyx_4) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":53
 *         return self.Get_error_string()
 * 
 *     def Get_error_code(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error code
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_Get_error_code, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_1 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp_Get_error_code, __pyx_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":61
 *         return errorcode
 * 
 *     error_code = property(Get_error_code, doc=mpistr("error code"))             # <<<<<<<<<<<<<<
 * 
 *     def Get_error_class(self):
 */
  __pyx_2 = __Pyx_GetName(__pyx_6, __pyx_kp_Get_error_code); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_2);
  __Pyx_GIVEREF(__pyx_2);
  __pyx_2 = 0;
  __pyx_4 = PyDict_New(); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_4));
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_55); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_4, __pyx_kp_doc, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_builtin_property, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __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_4)); __pyx_4 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp_error_code, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":63
 *     error_code = property(Get_error_code, doc=mpistr("error code"))
 * 
 *     def Get_error_class(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error class
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_Get_error_class, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_1 = PyMethod_New(__pyx_t_3, 0, __pyx_6); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp_Get_error_class, __pyx_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":71
 *         return errorclass
 * 
 *     error_class = property(Get_error_class, doc=mpistr("error class"))             # <<<<<<<<<<<<<<
 * 
 *     def Get_error_string(self):
 */
  __pyx_2 = __Pyx_GetName(__pyx_6, __pyx_kp_Get_error_class); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_2);
  __Pyx_GIVEREF(__pyx_2);
  __pyx_2 = 0;
  __pyx_4 = PyDict_New(); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_4));
  /* __pyx_t_2 allocated */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_56); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_4, __pyx_kp_doc, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_builtin_property, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_4)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_4)); __pyx_4 = 0;
  /* __pyx_t_3 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp_error_class, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":73
 *     error_class = property(Get_error_class, doc=mpistr("error class"))
 * 
 *     def Get_error_string(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error string
 */
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyCFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_Get_error_string, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_1 = PyMethod_New(__pyx_t_2, 0, __pyx_6); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp_Get_error_string, __pyx_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/ExceptionP.pyx":82
 *         return tompistr(string, resultlen)
 * 
 *     error_string = property(Get_error_string, doc=mpistr("error string"))             # <<<<<<<<<<<<<<
 */
  __pyx_2 = __Pyx_GetName(__pyx_6, __pyx_kp_Get_error_string); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  /* __pyx_t_2 allocated */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_2);
  __Pyx_GIVEREF(__pyx_2);
  __pyx_2 = 0;
  __pyx_4 = PyDict_New(); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_4));
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_k_57); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_4, __pyx_kp_doc, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_builtin_property, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 82; __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_4)); __pyx_4 = 0;
  /* __pyx_t_2 released */
  if (PyObject_SetAttr(__pyx_6, __pyx_kp_error_string, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_Exception, __pyx_6) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_6); __pyx_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_5)); __pyx_5 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":3
 * include "ExceptionP.pyx"
 * #include "ExceptionC.pyx"
 * MPIException = Exception             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_Exception); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  __Pyx_GOTREF(__pyx_v_6mpi4py_3MPI_MPIException);
  __Pyx_DECREF(__pyx_v_6mpi4py_3MPI_MPIException);
  __Pyx_GIVEREF(__pyx_1);
  __pyx_v_6mpi4py_3MPI_MPIException = __pyx_1;
  __pyx_1 = 0;

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":26
 * 
 * # Actually no errors
 * SUCCESS      = MPI_SUCCESS             # <<<<<<<<<<<<<<
 * ERR_LASTCODE = MPI_ERR_LASTCODE
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_SUCCESS); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_SUCCESS, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":27
 * # Actually no errors
 * SUCCESS      = MPI_SUCCESS
 * ERR_LASTCODE = MPI_ERR_LASTCODE             # <<<<<<<<<<<<<<
 * 
 * # MPI-1 Error classes
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_LASTCODE); 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_kp_ERR_LASTCODE, __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;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":32
 * # -------------------
 * # MPI-1 Objects
 * ERR_COMM      = MPI_ERR_COMM             # <<<<<<<<<<<<<<
 * ERR_GROUP     = MPI_ERR_GROUP
 * ERR_TYPE      = MPI_ERR_TYPE
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_COMM); 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_kp_ERR_COMM, __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;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":33
 * # 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_GROUP); 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_kp_ERR_GROUP, __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;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":34
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_TYPE); 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_kp_ERR_TYPE, __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;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":35
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_REQUEST); 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_kp_ERR_REQUEST, __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;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":36
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_OP); 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_kp_ERR_OP, __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;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":38
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_BUFFER); 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_kp_ERR_BUFFER, __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;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":39
 * # 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_COUNT); 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_kp_ERR_COUNT, __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;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":40
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_TAG); 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_kp_ERR_TAG, __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;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":41
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_RANK); 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_kp_ERR_RANK, __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;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":42
 * ERR_TAG       = MPI_ERR_TAG
 * ERR_RANK      = MPI_ERR_RANK
 * ERR_ROOT      = MPI_ERR_ROOT             # <<<<<<<<<<<<<<
 * ERR_TRUNCATE  = MPI_ERR_TRUNCATE
 * # Multiple completion
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_ROOT); 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_kp_ERR_ROOT, __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;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":43
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_TRUNCATE); 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_kp_ERR_TRUNCATE, __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;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":45
 * ERR_TRUNCATE  = MPI_ERR_TRUNCATE
 * # Multiple completion
 * ERR_IN_STATUS = MPI_ERR_IN_STATUS             # <<<<<<<<<<<<<<
 * ERR_PENDING   = MPI_ERR_PENDING
 * # Topology argument parameters
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_IN_STATUS); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_IN_STATUS, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":46
 * # Multiple completion
 * ERR_IN_STATUS = MPI_ERR_IN_STATUS
 * ERR_PENDING   = MPI_ERR_PENDING             # <<<<<<<<<<<<<<
 * # Topology argument parameters
 * ERR_TOPOLOGY  = MPI_ERR_TOPOLOGY
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_PENDING); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_PENDING, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":48
 * ERR_PENDING   = MPI_ERR_PENDING
 * # Topology argument parameters
 * ERR_TOPOLOGY  = MPI_ERR_TOPOLOGY             # <<<<<<<<<<<<<<
 * ERR_DIMS      = MPI_ERR_DIMS
 * # Other arguments parameters
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_TOPOLOGY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_TOPOLOGY, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":49
 * # Topology argument parameters
 * ERR_TOPOLOGY  = MPI_ERR_TOPOLOGY
 * ERR_DIMS      = MPI_ERR_DIMS             # <<<<<<<<<<<<<<
 * # Other arguments parameters
 * ERR_ARG       = MPI_ERR_ARG
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_DIMS); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_DIMS, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":51
 * ERR_DIMS      = MPI_ERR_DIMS
 * # Other arguments parameters
 * ERR_ARG       = MPI_ERR_ARG             # <<<<<<<<<<<<<<
 * # Other errors
 * ERR_OTHER     = MPI_ERR_OTHER
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_ARG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_ARG, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":53
 * ERR_ARG       = MPI_ERR_ARG
 * # Other errors
 * ERR_OTHER     = MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 * ERR_UNKNOWN   = MPI_ERR_UNKNOWN
 * ERR_INTERN    = MPI_ERR_INTERN
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_OTHER); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_OTHER, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":54
 * # Other errors
 * ERR_OTHER     = MPI_ERR_OTHER
 * ERR_UNKNOWN   = MPI_ERR_UNKNOWN             # <<<<<<<<<<<<<<
 * ERR_INTERN    = MPI_ERR_INTERN
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_UNKNOWN); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_UNKNOWN, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":55
 * ERR_OTHER     = MPI_ERR_OTHER
 * ERR_UNKNOWN   = MPI_ERR_UNKNOWN
 * ERR_INTERN    = MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 * 
 * # MPI-2 Error classes
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_INTERN); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_INTERN, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":60
 * # -------------------
 * # MPI-2 Objects
 * ERR_INFO                   = MPI_ERR_INFO             # <<<<<<<<<<<<<<
 * ERR_FILE                   = MPI_ERR_FILE
 * ERR_WIN                    = MPI_ERR_WIN
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_INFO); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_INFO, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":61
 * # MPI-2 Objects
 * ERR_INFO                   = MPI_ERR_INFO
 * ERR_FILE                   = MPI_ERR_FILE             # <<<<<<<<<<<<<<
 * ERR_WIN                    = MPI_ERR_WIN
 * # Object attributes
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_FILE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_FILE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":62
 * ERR_INFO                   = MPI_ERR_INFO
 * ERR_FILE                   = MPI_ERR_FILE
 * ERR_WIN                    = MPI_ERR_WIN             # <<<<<<<<<<<<<<
 * # Object attributes
 * ERR_KEYVAL                 = MPI_ERR_KEYVAL
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_WIN); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_WIN, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":64
 * ERR_WIN                    = MPI_ERR_WIN
 * # Object attributes
 * ERR_KEYVAL                 = MPI_ERR_KEYVAL             # <<<<<<<<<<<<<<
 * # Info Object
 * ERR_INFO_KEY               = MPI_ERR_INFO_KEY
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_KEYVAL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_KEYVAL, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":66
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_INFO_KEY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_INFO_KEY, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":67
 * # 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_INFO_VALUE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_INFO_VALUE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":68
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_INFO_NOKEY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_INFO_NOKEY, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":70
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_ACCESS); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_ACCESS, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":71
 * # 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_AMODE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_AMODE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":72
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_BAD_FILE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_BAD_FILE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":73
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_FILE_EXISTS); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_FILE_EXISTS, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":74
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_FILE_IN_USE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_FILE_IN_USE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":75
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_NO_SPACE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_NO_SPACE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":76
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_NO_SUCH_FILE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_NO_SUCH_FILE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":77
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_IO); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_IO, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":78
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_READ_ONLY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_READ_ONLY, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":79
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_CONVERSION); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_CONVERSION, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":80
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_DUP_DATAREP); 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);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_DUP_DATAREP, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":81
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_UNSUPPORTED_DATAREP); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_58, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":82
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_UNSUPPORTED_OPERATION); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_59, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":84
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_NAME); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_NAME, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":85
 * # 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_NO_MEM); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_NO_MEM, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":86
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_NOT_SAME); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_NOT_SAME, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":87
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_PORT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_PORT, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":88
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_QUOTA); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_QUOTA, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":89
 * ERR_PORT                   = MPI_ERR_PORT
 * ERR_QUOTA                  = MPI_ERR_QUOTA
 * ERR_SERVICE                = MPI_ERR_SERVICE             # <<<<<<<<<<<<<<
 * ERR_SPAWN                  = MPI_ERR_SPAWN
 * # Windows
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_SERVICE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_SERVICE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":90
 * ERR_QUOTA                  = MPI_ERR_QUOTA
 * ERR_SERVICE                = MPI_ERR_SERVICE
 * ERR_SPAWN                  = MPI_ERR_SPAWN             # <<<<<<<<<<<<<<
 * # Windows
 * ERR_BASE                   = MPI_ERR_BASE
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_SPAWN); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_SPAWN, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":92
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_BASE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_BASE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":93
 * # 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_LOCKTYPE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_LOCKTYPE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":94
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_RMA_CONFLICT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_RMA_CONFLICT, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":95
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_RMA_SYNC); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_RMA_SYNC, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":96
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_SIZE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_SIZE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":97
 * ERR_RMA_SYNC               = MPI_ERR_RMA_SYNC
 * ERR_SIZE                   = MPI_ERR_SIZE
 * ERR_DISP                   = MPI_ERR_DISP             # <<<<<<<<<<<<<<
 * ERR_ASSERT                 = MPI_ERR_ASSERT
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_DISP); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_DISP, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Exception.pyx":98
 * ERR_SIZE                   = MPI_ERR_SIZE
 * ERR_DISP                   = MPI_ERR_DISP
 * ERR_ASSERT                 = MPI_ERR_ASSERT             # <<<<<<<<<<<<<<
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ERR_ASSERT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ERR_ASSERT, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Errhandler.pyx":40
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_kp_2); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler->tp_dict, __pyx_kp_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Errhandler);

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Errhandler(MPI_ERRHANDLER_NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIErrhandlerObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Errhandler(MPI_ERRORS_RETURN)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIErrhandlerObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Errhandler(MPI_ERRORS_ARE_FATAL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIErrhandlerObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_kp_ERRHANDLER_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/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_kp_ERRORS_RETURN, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/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_kp_ERRORS_ARE_FATAL, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ORDER_C); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ORDER_C, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ORDER_FORTRAN); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ORDER_FORTRAN, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ORDER_FORTRAN); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ORDER_F, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_TYPECLASS_INTEGER); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_TYPECLASS_INTEGER, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":12
 * # ------------------------------------------
 * TYPECLASS_INTEGER = MPI_TYPECLASS_INTEGER
 * TYPECLASS_REAL    = MPI_TYPECLASS_REAL             # <<<<<<<<<<<<<<
 * TYPECLASS_COMPLEX = MPI_TYPECLASS_COMPLEX
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_TYPECLASS_REAL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_TYPECLASS_REAL, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":13
 * TYPECLASS_INTEGER = MPI_TYPECLASS_INTEGER
 * TYPECLASS_REAL    = MPI_TYPECLASS_REAL
 * TYPECLASS_COMPLEX = MPI_TYPECLASS_COMPLEX             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_TYPECLASS_COMPLEX); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_TYPECLASS_COMPLEX, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_DISTRIBUTE_NONE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_DISTRIBUTE_NONE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 argument
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_DISTRIBUTE_BLOCK); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_DISTRIBUTE_BLOCK, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 argument
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_DISTRIBUTE_CYCLIC); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_DISTRIBUTE_CYCLIC, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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 argument             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_DISTRIBUTE_DFLT_DARG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_60, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":184
 * 
 *     def Create_subarray(self, sizes, subsizes, starts,
 *                         int order=ORDER_C):             # <<<<<<<<<<<<<<
 *         """
 *         Create a datatype for a subarray of
 */
  __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_kp_ORDER_C); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_PyInt_int(__pyx_4); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
  __pyx_k_61 = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":208
 *     def Create_darray(self, int size, int rank,
 *                       gsizes, distribs, dargs, psizes,
 *                       int order=ORDER_C):             # <<<<<<<<<<<<<<
 *         """
 *         Create a datatype representing an HPF-like
 */
  __pyx_6 = __Pyx_GetName(__pyx_m, __pyx_kp_ORDER_C); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_6);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_PyInt_int(__pyx_6); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_6); __pyx_6 = 0;
  __pyx_k_62 = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":233
 * 
 *     @classmethod
 *     def Create_struct(cls, blocklengths, displacements, datatypes):             # <<<<<<<<<<<<<<
 *         """
 *         Create an datatype from a general set of
 */
  __pyx_5 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_kp_Create_struct); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_5);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_5); __pyx_5 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_kp_Create_struct, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":255
 * 
 *     @classmethod
 *     def Match_size(cls, int typeclass, int size):             # <<<<<<<<<<<<<<
 *         """
 *         Find a datatype matching a specified size in bytes
 */
  __pyx_1 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_kp_Match_size); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_kp_Match_size, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":292
 *         return datatype
 * 
 *     Resized = Create_resized             # <<<<<<<<<<<<<<
 * 
 *     def Get_true_extent(self):
 */
  __pyx_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_kp_Create_resized); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_kp_Resized, __pyx_2) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":469
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_4 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_kp_2); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dict, __pyx_kp_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":493
 * 
 * 
 * cdef Datatype __DATATYPE_NULL__      = _new_Datatype( MPI_DATATYPE_NULL      )             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __CHAR__               = _new_Datatype( MPI_CHAR               )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_DATATYPE_NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":495
 * cdef Datatype __DATATYPE_NULL__      = _new_Datatype( MPI_DATATYPE_NULL      )
 * 
 * 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 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_CHAR)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___CHAR__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":496
 * 
 * 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 __UNSIGNED_CHAR__      = _new_Datatype( MPI_UNSIGNED_CHAR      )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_WCHAR)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___WCHAR__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":497
 * 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 __UNSIGNED_CHAR__      = _new_Datatype( MPI_UNSIGNED_CHAR      )
 * cdef Datatype __SHORT__              = _new_Datatype( MPI_SHORT              )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_SIGNED_CHAR)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":498
 * cdef Datatype __WCHAR__              = _new_Datatype( MPI_WCHAR              )
 * cdef Datatype __SIGNED_CHAR__        = _new_Datatype( MPI_SIGNED_CHAR        )
 * cdef Datatype __UNSIGNED_CHAR__      = _new_Datatype( MPI_UNSIGNED_CHAR      )             # <<<<<<<<<<<<<<
 * cdef Datatype __SHORT__              = _new_Datatype( MPI_SHORT              )
 * cdef Datatype __UNSIGNED_SHORT__     = _new_Datatype( MPI_UNSIGNED_SHORT     )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_UNSIGNED_CHAR)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":499
 * cdef Datatype __SIGNED_CHAR__        = _new_Datatype( MPI_SIGNED_CHAR        )
 * cdef Datatype __UNSIGNED_CHAR__      = _new_Datatype( MPI_UNSIGNED_CHAR      )
 * cdef Datatype __SHORT__              = _new_Datatype( MPI_SHORT              )             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED_SHORT__     = _new_Datatype( MPI_UNSIGNED_SHORT     )
 * cdef Datatype __INT__                = _new_Datatype( MPI_INT                )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_SHORT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___SHORT__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":500
 * cdef Datatype __UNSIGNED_CHAR__      = _new_Datatype( MPI_UNSIGNED_CHAR      )
 * cdef Datatype __SHORT__              = _new_Datatype( MPI_SHORT              )
 * cdef Datatype __UNSIGNED_SHORT__     = _new_Datatype( MPI_UNSIGNED_SHORT     )             # <<<<<<<<<<<<<<
 * cdef Datatype __INT__                = _new_Datatype( MPI_INT                )
 * cdef Datatype __UNSIGNED__           = _new_Datatype( MPI_UNSIGNED           )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_UNSIGNED_SHORT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":501
 * cdef Datatype __SHORT__              = _new_Datatype( MPI_SHORT              )
 * cdef Datatype __UNSIGNED_SHORT__     = _new_Datatype( MPI_UNSIGNED_SHORT     )
 * cdef Datatype __INT__                = _new_Datatype( MPI_INT                )             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED__           = _new_Datatype( MPI_UNSIGNED           )
 * cdef Datatype __LONG__               = _new_Datatype( MPI_LONG               )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INT__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":502
 * cdef Datatype __UNSIGNED_SHORT__     = _new_Datatype( MPI_UNSIGNED_SHORT     )
 * cdef Datatype __INT__                = _new_Datatype( MPI_INT                )
 * cdef Datatype __UNSIGNED__           = _new_Datatype( MPI_UNSIGNED           )             # <<<<<<<<<<<<<<
 * cdef Datatype __LONG__               = _new_Datatype( MPI_LONG               )
 * cdef Datatype __UNSIGNED_LONG__      = _new_Datatype( MPI_UNSIGNED_LONG      )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_UNSIGNED)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___UNSIGNED__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":503
 * cdef Datatype __INT__                = _new_Datatype( MPI_INT                )
 * cdef Datatype __UNSIGNED__           = _new_Datatype( MPI_UNSIGNED           )
 * cdef Datatype __LONG__               = _new_Datatype( MPI_LONG               )             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED_LONG__      = _new_Datatype( MPI_UNSIGNED_LONG      )
 * cdef Datatype __FLOAT__              = _new_Datatype( MPI_FLOAT              )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_LONG)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LONG__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":504
 * cdef Datatype __UNSIGNED__           = _new_Datatype( MPI_UNSIGNED           )
 * cdef Datatype __LONG__               = _new_Datatype( MPI_LONG               )
 * cdef Datatype __UNSIGNED_LONG__      = _new_Datatype( MPI_UNSIGNED_LONG      )             # <<<<<<<<<<<<<<
 * cdef Datatype __FLOAT__              = _new_Datatype( MPI_FLOAT              )
 * cdef Datatype __DOUBLE__             = _new_Datatype( MPI_DOUBLE             )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_UNSIGNED_LONG)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":505
 * cdef Datatype __LONG__               = _new_Datatype( MPI_LONG               )
 * cdef Datatype __UNSIGNED_LONG__      = _new_Datatype( MPI_UNSIGNED_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 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_FLOAT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___FLOAT__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":506
 * cdef Datatype __UNSIGNED_LONG__      = _new_Datatype( MPI_UNSIGNED_LONG      )
 * 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 __BYTE__               = _new_Datatype( MPI_BYTE               )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_DOUBLE)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___DOUBLE__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":507
 * 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 __BYTE__               = _new_Datatype( MPI_BYTE               )
 * cdef Datatype __PACKED__             = _new_Datatype( MPI_PACKED             )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_LONG_DOUBLE)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":508
 * cdef Datatype __DOUBLE__             = _new_Datatype( MPI_DOUBLE             )
 * cdef Datatype __LONG_DOUBLE__        = _new_Datatype( MPI_LONG_DOUBLE        )
 * cdef Datatype __BYTE__               = _new_Datatype( MPI_BYTE               )             # <<<<<<<<<<<<<<
 * cdef Datatype __PACKED__             = _new_Datatype( MPI_PACKED             )
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_BYTE)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___BYTE__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":509
 * cdef Datatype __LONG_DOUBLE__        = _new_Datatype( MPI_LONG_DOUBLE        )
 * cdef Datatype __BYTE__               = _new_Datatype( MPI_BYTE               )
 * cdef Datatype __PACKED__             = _new_Datatype( MPI_PACKED             )             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __SHORT_INT__          = _new_Datatype( MPI_SHORT_INT          )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_PACKED)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___PACKED__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___PACKED__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___PACKED__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":511
 * cdef Datatype __PACKED__             = _new_Datatype( MPI_PACKED             )
 * 
 * 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 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_SHORT_INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":512
 * 
 * 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 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_2INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___TWOINT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___TWOINT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___TWOINT__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":513
 * 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 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_LONG_INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":514
 * 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 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_FLOAT_INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":515
 * 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 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_DOUBLE_INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":516
 * 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 __LONG_LONG__          = _new_Datatype( MPI_LONG_LONG          )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_LONG_DOUBLE_INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":518
 * cdef Datatype __LONG_DOUBLE_INT__    = _new_Datatype( MPI_LONG_DOUBLE_INT    )
 * 
 * cdef Datatype __LONG_LONG__          = _new_Datatype( MPI_LONG_LONG          )             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED_LONG_LONG__ = _new_Datatype( MPI_UNSIGNED_LONG_LONG )
 * cdef Datatype __LONG_LONG_INT__      = _new_Datatype( MPI_LONG_LONG_INT      )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_LONG_LONG)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":519
 * 
 * cdef Datatype __LONG_LONG__          = _new_Datatype( MPI_LONG_LONG          )
 * cdef Datatype __UNSIGNED_LONG_LONG__ = _new_Datatype( MPI_UNSIGNED_LONG_LONG )             # <<<<<<<<<<<<<<
 * cdef Datatype __LONG_LONG_INT__      = _new_Datatype( MPI_LONG_LONG_INT      )
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_UNSIGNED_LONG_LONG)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":520
 * cdef Datatype __LONG_LONG__          = _new_Datatype( MPI_LONG_LONG          )
 * cdef Datatype __UNSIGNED_LONG_LONG__ = _new_Datatype( MPI_UNSIGNED_LONG_LONG )
 * cdef Datatype __LONG_LONG_INT__      = _new_Datatype( MPI_LONG_LONG_INT      )             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __CHARACTER__          = _new_Datatype( MPI_CHARACTER          )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_LONG_LONG_INT)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG_INT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG_INT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LONG_LONG_INT__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":522
 * cdef Datatype __LONG_LONG_INT__      = _new_Datatype( MPI_LONG_LONG_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 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_CHARACTER)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___CHARACTER__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___CHARACTER__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___CHARACTER__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":523
 * 
 * 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 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_LOGICAL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LOGICAL__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":524
 * 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 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_INTEGER)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INTEGER__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":525
 * 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 __F_COMPLEX__          = _new_Datatype( MPI_COMPLEX            )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_REAL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___REAL__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":526
 * 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 __F_COMPLEX__          = _new_Datatype( MPI_COMPLEX            )
 * cdef Datatype __F_DOUBLE_COMPLEX__   = _new_Datatype( MPI_DOUBLE_COMPLEX     )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_DOUBLE_PRECISION)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((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__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":527
 * cdef Datatype __REAL__               = _new_Datatype( MPI_REAL               )
 * cdef Datatype __DOUBLE_PRECISION__   = _new_Datatype( MPI_DOUBLE_PRECISION   )
 * cdef Datatype __F_COMPLEX__          = _new_Datatype( MPI_COMPLEX            )             # <<<<<<<<<<<<<<
 * cdef Datatype __F_DOUBLE_COMPLEX__   = _new_Datatype( MPI_DOUBLE_COMPLEX     )
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_COMPLEX)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___F_COMPLEX__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___F_COMPLEX__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___F_COMPLEX__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":528
 * cdef Datatype __DOUBLE_PRECISION__   = _new_Datatype( MPI_DOUBLE_PRECISION   )
 * cdef Datatype __F_COMPLEX__          = _new_Datatype( MPI_COMPLEX            )
 * cdef Datatype __F_DOUBLE_COMPLEX__   = _new_Datatype( MPI_DOUBLE_COMPLEX     )             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __UB__                 = _new_Datatype( MPI_UB                 )
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___F_DOUBLE_COMPLEX__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___F_DOUBLE_COMPLEX__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___F_DOUBLE_COMPLEX__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":530
 * cdef Datatype __F_DOUBLE_COMPLEX__   = _new_Datatype( MPI_DOUBLE_COMPLEX     )
 * 
 * cdef Datatype __UB__                 = _new_Datatype( MPI_UB                 )             # <<<<<<<<<<<<<<
 * cdef Datatype __LB__                 = _new_Datatype( MPI_LB                 )
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_UB)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UB__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___UB__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___UB__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":531
 * 
 * cdef Datatype __UB__                 = _new_Datatype( MPI_UB                 )
 * cdef Datatype __LB__                 = _new_Datatype( MPI_LB                 )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Datatype(MPI_LB)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LB__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LB__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LB__ = ((PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":537
 * # ---------------------------
 * 
 * DATATYPE_NULL      = __DATATYPE_NULL__  #: Null datatype handle             # <<<<<<<<<<<<<<
 * # Elementary datatypes
 * CHAR               = __CHAR__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_DATATYPE_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":539
 * DATATYPE_NULL      = __DATATYPE_NULL__  #: Null datatype handle
 * # Elementary datatypes
 * CHAR               = __CHAR__             # <<<<<<<<<<<<<<
 * WCHAR              = __WCHAR__
 * SIGNED_CHAR        = __SIGNED_CHAR__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_CHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":540
 * # Elementary datatypes
 * CHAR               = __CHAR__
 * WCHAR              = __WCHAR__             # <<<<<<<<<<<<<<
 * SIGNED_CHAR        = __SIGNED_CHAR__
 * UNSIGNED_CHAR      = __UNSIGNED_CHAR__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_WCHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":541
 * CHAR               = __CHAR__
 * WCHAR              = __WCHAR__
 * SIGNED_CHAR        = __SIGNED_CHAR__             # <<<<<<<<<<<<<<
 * UNSIGNED_CHAR      = __UNSIGNED_CHAR__
 * SHORT              = __SHORT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_SIGNED_CHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":542
 * WCHAR              = __WCHAR__
 * SIGNED_CHAR        = __SIGNED_CHAR__
 * UNSIGNED_CHAR      = __UNSIGNED_CHAR__             # <<<<<<<<<<<<<<
 * SHORT              = __SHORT__
 * UNSIGNED_SHORT     = __UNSIGNED_SHORT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_UNSIGNED_CHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":543
 * SIGNED_CHAR        = __SIGNED_CHAR__
 * UNSIGNED_CHAR      = __UNSIGNED_CHAR__
 * SHORT              = __SHORT__             # <<<<<<<<<<<<<<
 * UNSIGNED_SHORT     = __UNSIGNED_SHORT__
 * INT                = __INT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_SHORT, ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":544
 * UNSIGNED_CHAR      = __UNSIGNED_CHAR__
 * SHORT              = __SHORT__
 * UNSIGNED_SHORT     = __UNSIGNED_SHORT__             # <<<<<<<<<<<<<<
 * INT                = __INT__
 * UNSIGNED           = __UNSIGNED__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_UNSIGNED_SHORT, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":545
 * SHORT              = __SHORT__
 * UNSIGNED_SHORT     = __UNSIGNED_SHORT__
 * INT                = __INT__             # <<<<<<<<<<<<<<
 * UNSIGNED           = __UNSIGNED__
 * LONG               = __LONG__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":546
 * UNSIGNED_SHORT     = __UNSIGNED_SHORT__
 * INT                = __INT__
 * UNSIGNED           = __UNSIGNED__             # <<<<<<<<<<<<<<
 * LONG               = __LONG__
 * UNSIGNED_LONG      = __UNSIGNED_LONG__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_UNSIGNED, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":547
 * INT                = __INT__
 * UNSIGNED           = __UNSIGNED__
 * LONG               = __LONG__             # <<<<<<<<<<<<<<
 * UNSIGNED_LONG      = __UNSIGNED_LONG__
 * FLOAT              = __FLOAT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":548
 * UNSIGNED           = __UNSIGNED__
 * LONG               = __LONG__
 * UNSIGNED_LONG      = __UNSIGNED_LONG__             # <<<<<<<<<<<<<<
 * FLOAT              = __FLOAT__
 * DOUBLE             = __DOUBLE__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_UNSIGNED_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":549
 * LONG               = __LONG__
 * UNSIGNED_LONG      = __UNSIGNED_LONG__
 * FLOAT              = __FLOAT__             # <<<<<<<<<<<<<<
 * DOUBLE             = __DOUBLE__
 * LONG_DOUBLE        = __LONG_DOUBLE__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_FLOAT, ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":550
 * UNSIGNED_LONG      = __UNSIGNED_LONG__
 * FLOAT              = __FLOAT__
 * DOUBLE             = __DOUBLE__             # <<<<<<<<<<<<<<
 * LONG_DOUBLE        = __LONG_DOUBLE__
 * BYTE               = __BYTE__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_DOUBLE, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":551
 * FLOAT              = __FLOAT__
 * DOUBLE             = __DOUBLE__
 * LONG_DOUBLE        = __LONG_DOUBLE__             # <<<<<<<<<<<<<<
 * BYTE               = __BYTE__
 * PACKED             = __PACKED__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_LONG_DOUBLE, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":552
 * DOUBLE             = __DOUBLE__
 * LONG_DOUBLE        = __LONG_DOUBLE__
 * BYTE               = __BYTE__             # <<<<<<<<<<<<<<
 * PACKED             = __PACKED__
 * # Datatypes for reduction operations
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_BYTE, ((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":553
 * LONG_DOUBLE        = __LONG_DOUBLE__
 * BYTE               = __BYTE__
 * PACKED             = __PACKED__             # <<<<<<<<<<<<<<
 * # Datatypes for reduction operations
 * SHORT_INT          = __SHORT_INT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_PACKED, ((PyObject *)__pyx_v_6mpi4py_3MPI___PACKED__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":555
 * PACKED             = __PACKED__
 * # Datatypes for reduction operations
 * SHORT_INT          = __SHORT_INT__             # <<<<<<<<<<<<<<
 * TWOINT             = __TWOINT__
 * LONG_INT           = __LONG_INT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_SHORT_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT_INT__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":556
 * # Datatypes for reduction operations
 * SHORT_INT          = __SHORT_INT__
 * TWOINT             = __TWOINT__             # <<<<<<<<<<<<<<
 * LONG_INT           = __LONG_INT__
 * FLOAT_INT          = __FLOAT_INT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_TWOINT, ((PyObject *)__pyx_v_6mpi4py_3MPI___TWOINT__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":557
 * SHORT_INT          = __SHORT_INT__
 * TWOINT             = __TWOINT__
 * LONG_INT           = __LONG_INT__             # <<<<<<<<<<<<<<
 * FLOAT_INT          = __FLOAT_INT__
 * DOUBLE_INT         = __DOUBLE_INT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_LONG_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_INT__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":558
 * 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_kp_FLOAT_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT_INT__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":559
 * LONG_INT           = __LONG_INT__
 * FLOAT_INT          = __FLOAT_INT__
 * DOUBLE_INT         = __DOUBLE_INT__             # <<<<<<<<<<<<<<
 * LONG_DOUBLE_INT    = __LONG_DOUBLE_INT__
 * # Optional datatypes
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_DOUBLE_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_INT__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":560
 * FLOAT_INT          = __FLOAT_INT__
 * DOUBLE_INT         = __DOUBLE_INT__
 * LONG_DOUBLE_INT    = __LONG_DOUBLE_INT__             # <<<<<<<<<<<<<<
 * # Optional datatypes
 * LONG_LONG          = __LONG_LONG__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_LONG_DOUBLE_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":562
 * LONG_DOUBLE_INT    = __LONG_DOUBLE_INT__
 * # Optional datatypes
 * LONG_LONG          = __LONG_LONG__             # <<<<<<<<<<<<<<
 * UNSIGNED_LONG_LONG = __UNSIGNED_LONG_LONG__
 * LONG_LONG_INT      = __LONG_LONG_INT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_LONG_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":563
 * # Optional datatypes
 * LONG_LONG          = __LONG_LONG__
 * UNSIGNED_LONG_LONG = __UNSIGNED_LONG_LONG__             # <<<<<<<<<<<<<<
 * LONG_LONG_INT      = __LONG_LONG_INT__
 * # Fortran datatypes
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_UNSIGNED_LONG_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":564
 * LONG_LONG          = __LONG_LONG__
 * UNSIGNED_LONG_LONG = __UNSIGNED_LONG_LONG__
 * LONG_LONG_INT      = __LONG_LONG_INT__             # <<<<<<<<<<<<<<
 * # Fortran datatypes
 * CHARACTER          = __CHARACTER__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_LONG_LONG_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG_INT__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":566
 * LONG_LONG_INT      = __LONG_LONG_INT__
 * # Fortran datatypes
 * CHARACTER          = __CHARACTER__             # <<<<<<<<<<<<<<
 * LOGICAL            = __LOGICAL__
 * INTEGER            = __INTEGER__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_CHARACTER, ((PyObject *)__pyx_v_6mpi4py_3MPI___CHARACTER__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":567
 * # Fortran datatypes
 * CHARACTER          = __CHARACTER__
 * LOGICAL            = __LOGICAL__             # <<<<<<<<<<<<<<
 * INTEGER            = __INTEGER__
 * REAL               = __REAL__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_LOGICAL, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":568
 * CHARACTER          = __CHARACTER__
 * LOGICAL            = __LOGICAL__
 * INTEGER            = __INTEGER__             # <<<<<<<<<<<<<<
 * REAL               = __REAL__
 * DOUBLE_PRECISION   = __DOUBLE_PRECISION__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_INTEGER, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":569
 * LOGICAL            = __LOGICAL__
 * INTEGER            = __INTEGER__
 * REAL               = __REAL__             # <<<<<<<<<<<<<<
 * DOUBLE_PRECISION   = __DOUBLE_PRECISION__
 * F_COMPLEX          = __F_COMPLEX__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_REAL, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":570
 * INTEGER            = __INTEGER__
 * REAL               = __REAL__
 * DOUBLE_PRECISION   = __DOUBLE_PRECISION__             # <<<<<<<<<<<<<<
 * F_COMPLEX          = __F_COMPLEX__
 * F_DOUBLE_COMPLEX   = __F_DOUBLE_COMPLEX__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_DOUBLE_PRECISION, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":571
 * REAL               = __REAL__
 * DOUBLE_PRECISION   = __DOUBLE_PRECISION__
 * F_COMPLEX          = __F_COMPLEX__             # <<<<<<<<<<<<<<
 * F_DOUBLE_COMPLEX   = __F_DOUBLE_COMPLEX__
 * # Special datatypes (for constructing derived datatypes)
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_F_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___F_COMPLEX__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":572
 * DOUBLE_PRECISION   = __DOUBLE_PRECISION__
 * F_COMPLEX          = __F_COMPLEX__
 * F_DOUBLE_COMPLEX   = __F_DOUBLE_COMPLEX__             # <<<<<<<<<<<<<<
 * # Special datatypes (for constructing derived datatypes)
 * UB                 = __UB__  #: upper-bound marker (deprecated in MPI-2)
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_F_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___F_DOUBLE_COMPLEX__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":574
 * F_DOUBLE_COMPLEX   = __F_DOUBLE_COMPLEX__
 * # Special datatypes (for constructing derived datatypes)
 * UB                 = __UB__  #: upper-bound marker (deprecated in MPI-2)             # <<<<<<<<<<<<<<
 * LB                 = __LB__  #: lower-bound marker (deprecated in MPI-2)
 * # Convenience aliases (not in the MPI-1/MPI-2 stardards)
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_UB, ((PyObject *)__pyx_v_6mpi4py_3MPI___UB__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":575
 * # Special datatypes (for constructing derived datatypes)
 * UB                 = __UB__  #: upper-bound marker (deprecated in MPI-2)
 * LB                 = __LB__  #: lower-bound marker (deprecated in MPI-2)             # <<<<<<<<<<<<<<
 * # Convenience aliases (not in the MPI-1/MPI-2 stardards)
 * UNSIGNED_INT       = __UNSIGNED__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_LB, ((PyObject *)__pyx_v_6mpi4py_3MPI___LB__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":577
 * LB                 = __LB__  #: lower-bound marker (deprecated in MPI-2)
 * # Convenience aliases (not in the MPI-1/MPI-2 stardards)
 * UNSIGNED_INT       = __UNSIGNED__             # <<<<<<<<<<<<<<
 * INT_INT            = __TWOINT__
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_UNSIGNED_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Datatype.pyx":578
 * # Convenience aliases (not in the MPI-1/MPI-2 stardards)
 * UNSIGNED_INT       = __UNSIGNED__
 * INT_INT            = __TWOINT__             # <<<<<<<<<<<<<<
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_INT_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___TWOINT__)) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/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_6 = __Pyx_GetName(__pyx_m, __pyx_kp_BYTE); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_6);
  if (!(__Pyx_TypeTest(__pyx_6, __pyx_ptype_6mpi4py_3MPI_Datatype))) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_63 = ((PyMPIDatatypeObject *)__pyx_6);
  __Pyx_GIVEREF((PyObject *)__pyx_k_63);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":64
 * 
 *     @classmethod
 *     def Waitany(cls, requests, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for any previously initiated request to complete
 */
  __pyx_5 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_kp_Waitany); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_5);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_5); __pyx_5 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_kp_Waitany, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":82
 * 
 *     @classmethod
 *     def Testany(cls, requests, Status status=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of any previously initiated request
 */
  __pyx_1 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_kp_Testany); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_kp_Testany, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":101
 * 
 *     @classmethod
 *     def Waitall(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for all previously initiated requests to complete
 */
  __pyx_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_kp_Waitall); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_kp_Waitall, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":120
 * 
 *     @classmethod
 *     def Testall(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of all previously initiated requests
 */
  __pyx_4 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_kp_Testall); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_kp_Testall, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":140
 * 
 *     @classmethod
 *     def Waitsome(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Wait for some previously initiated requests to complete
 */
  __pyx_5 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_kp_Waitsome); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_5);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_5); __pyx_5 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_kp_Waitsome, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":166
 * 
 *     @classmethod
 *     def Testsome(cls, requests, statuses=None):             # <<<<<<<<<<<<<<
 *         """
 *         Test for completion of some previously initiated requests
 */
  __pyx_1 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_kp_Testsome); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_kp_Testsome, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":209
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_kp_2); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request->tp_dict, __pyx_kp_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":231
 * 
 *     @classmethod
 *     def Startall(cls, requests):             # <<<<<<<<<<<<<<
 *         """
 *         Start a collection of persistent requests
 */
  __pyx_4 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_kp_Startall); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest->tp_dict, __pyx_kp_Startall, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Prequest);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":256
 * 
 *     @classmethod
 *     def Start(cls, query_fn, free_fn, cancel_fn,             # <<<<<<<<<<<<<<
 *               args=None, kargs=None):
 *         """
 */
  __pyx_5 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Grequest, __pyx_kp_Start); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_5);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_5); __pyx_5 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Grequest->tp_dict, __pyx_kp_Start, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Grequest);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":286
 * 
 * 
 * cdef Request __REQUEST_NULL__ = _new_Request(MPI_REQUEST_NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Request(MPI_REQUEST_NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REQUEST_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REQUEST_NULL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___REQUEST_NULL__ = ((PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Request.pyx":292
 * # --------------------------
 * 
 * REQUEST_NULL = __REQUEST_NULL__  #: Null request handle             # <<<<<<<<<<<<<<
 * 
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_REQUEST_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___REQUEST_NULL__)) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":26
 * 
 *     @classmethod
 *     def Create(cls):             # <<<<<<<<<<<<<<
 *         """
 *         Create a new, empty info object
 */
  __pyx_1 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_kp_Create); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info->tp_dict, __pyx_kp_Create, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":112
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_kp_2); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info->tp_dict, __pyx_kp_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":214
 * 
 * 
 * cdef Info __INFO_NULL__ = _new_Info(MPI_INFO_NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Info(MPI_INFO_NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_NULL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___INFO_NULL__ = ((PyMPIInfoObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Info.pyx":220
 * # -----------------------
 * 
 * INFO_NULL = __INFO_NULL__  #: Null info handle             # <<<<<<<<<<<<<<
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_INFO_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_NULL__)) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":32
 * 
 *     @classmethod
 *     def Create(cls, function, bint commute=False):             # <<<<<<<<<<<<<<
 *         """
 *         Create a user-defined operation
 */
  __pyx_4 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_kp_Create); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op->tp_dict, __pyx_kp_Create, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":58
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_5 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_kp_2); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_5);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_5); __pyx_5 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op->tp_dict, __pyx_kp_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":67
 * 
 * 
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_OP_NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___OP_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___OP_NULL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___OP_NULL__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":68
 * 
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_MAX)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MAX__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MAX__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___MAX__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":69
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_MIN)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MIN__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MIN__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___MIN__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":70
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_SUM)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___SUM__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___SUM__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___SUM__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":71
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_PROD)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___PROD__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___PROD__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___PROD__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":72
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_LAND)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LAND__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LAND__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LAND__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":73
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_BAND)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BAND__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BAND__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___BAND__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":74
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_LOR)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LOR__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LOR__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":75
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_BOR)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BOR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BOR__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___BOR__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":76
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_LXOR)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LXOR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___LXOR__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___LXOR__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":77
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_BXOR)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BXOR__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___BXOR__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___BXOR__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":78
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_MAXLOC)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___MAXLOC__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":79
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_MINLOC)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___MINLOC__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":80
 * cdef Op __MAXLOC__  = _new_Op( MPI_MAXLOC  )
 * cdef Op __MINLOC__  = _new_Op( MPI_MINLOC  )
 * cdef Op __REPLACE__ = _new_Op( MPI_REPLACE )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Op(MPI_REPLACE)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REPLACE__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___REPLACE__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___REPLACE__ = ((PyMPIOpObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":86
 * # ----------------------------
 * 
 * OP_NULL = __OP_NULL__  #: Null             # <<<<<<<<<<<<<<
 * MAX     = __MAX__      #: Maximum
 * MIN     = __MIN__      #: Minimum
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_OP_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___OP_NULL__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":87
 * 
 * OP_NULL = __OP_NULL__  #: Null
 * MAX     = __MAX__      #: Maximum             # <<<<<<<<<<<<<<
 * MIN     = __MIN__      #: Minimum
 * SUM     = __SUM__      #: Sum
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MAX, ((PyObject *)__pyx_v_6mpi4py_3MPI___MAX__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":88
 * OP_NULL = __OP_NULL__  #: Null
 * MAX     = __MAX__      #: Maximum
 * MIN     = __MIN__      #: Minimum             # <<<<<<<<<<<<<<
 * SUM     = __SUM__      #: Sum
 * PROD    = __PROD__     #: Product
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MIN, ((PyObject *)__pyx_v_6mpi4py_3MPI___MIN__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":89
 * MAX     = __MAX__      #: Maximum
 * MIN     = __MIN__      #: Minimum
 * SUM     = __SUM__      #: Sum             # <<<<<<<<<<<<<<
 * PROD    = __PROD__     #: Product
 * LAND    = __LAND__     #: Logical and
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_SUM, ((PyObject *)__pyx_v_6mpi4py_3MPI___SUM__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":90
 * MIN     = __MIN__      #: Minimum
 * SUM     = __SUM__      #: Sum
 * PROD    = __PROD__     #: Product             # <<<<<<<<<<<<<<
 * LAND    = __LAND__     #: Logical and
 * BAND    = __BAND__     #: Bit-wise and
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_PROD, ((PyObject *)__pyx_v_6mpi4py_3MPI___PROD__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":91
 * 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_kp_LAND, ((PyObject *)__pyx_v_6mpi4py_3MPI___LAND__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":92
 * 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_kp_BAND, ((PyObject *)__pyx_v_6mpi4py_3MPI___BAND__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":93
 * 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_kp_LOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOR__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":94
 * 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_kp_BOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___BOR__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":95
 * 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_kp_LXOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___LXOR__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":96
 * 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_kp_BXOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___BXOR__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":97
 * 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_kp_MAXLOC, ((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":98
 * 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_kp_MINLOC, ((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Op.pyx":99
 * MAXLOC  = __MAXLOC__   #: Maximum and location
 * MINLOC  = __MINLOC__   #: Minimum and location
 * REPLACE = __REPLACE__  #: Replace (for RMA)             # <<<<<<<<<<<<<<
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_REPLACE, ((PyObject *)__pyx_v_6mpi4py_3MPI___REPLACE__)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":55
 * 
 *     @classmethod
 *     def Translate_ranks(cls, Group group1 not None, ranks1,             # <<<<<<<<<<<<<<
 *                         Group group2=None):
 *         """
 */
  __pyx_1 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_kp_Translate_ranks); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group->tp_dict, __pyx_kp_Translate_ranks, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":84
 * 
 *     @classmethod
 *     def Compare(cls,             # <<<<<<<<<<<<<<
 *                 Group group1 not None,
 *                 Group group2 not None):
 */
  __pyx_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_kp_Compare); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group->tp_dict, __pyx_kp_Compare, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":106
 * 
 *     @classmethod
 *     def Union(cls,             # <<<<<<<<<<<<<<
 *               Group group1 not None,
 *               Group group2 not None):
 */
  __pyx_4 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_kp_Union); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group->tp_dict, __pyx_kp_Union, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":118
 * 
 *     @classmethod
 *     def Intersect(cls,             # <<<<<<<<<<<<<<
 *                   Group group1 not None,
 *                   Group group2 not None):
 */
  __pyx_5 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_kp_Intersect); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_5);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_5); __pyx_5 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group->tp_dict, __pyx_kp_Intersect, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":130
 * 
 *     @classmethod
 *     def Difference(cls,             # <<<<<<<<<<<<<<
 *                    Group group1 not None,
 *                    Group group2 not None):
 */
  __pyx_1 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_kp_Difference); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_1); __pyx_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group->tp_dict, __pyx_kp_Difference, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Group.pyx":219
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_2 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_kp_2); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_2); __pyx_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group->tp_dict, __pyx_kp_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Group(MPI_GROUP_NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_NULL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___GROUP_NULL__ = ((PyMPIGroupObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Group(MPI_GROUP_EMPTY)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___GROUP_EMPTY__ = ((PyMPIGroupObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_kp_GROUP_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_NULL__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/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_kp_GROUP_EMPTY, ((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":4
 * # ------------------------
 * 
 * IDENT     = MPI_IDENT      #: Groups are identical, communicator contexts are de same             # <<<<<<<<<<<<<<
 * CONGRUENT = MPI_CONGRUENT  #: Groups are identical, contexts are different
 * SIMILAR   = MPI_SIMILAR    #: Groups are similar, rank order differs
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_IDENT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_IDENT, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":5
 * 
 * IDENT     = MPI_IDENT      #: Groups are identical, communicator contexts are de 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_CONGRUENT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_CONGRUENT, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":6
 * IDENT     = MPI_IDENT      #: Groups are identical, communicator contexts are de 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_SIMILAR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_SIMILAR, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_UNEQUAL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_UNEQUAL, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":13
 * # -----------------------
 * 
 * CART  = MPI_CART   #: Cartesian topology             # <<<<<<<<<<<<<<
 * GRAPH = MPI_GRAPH  #: Graph topology
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_CART); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_CART, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":14
 * 
 * CART  = MPI_CART   #: Cartesian topology
 * GRAPH = MPI_GRAPH  #: Graph topology             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_GRAPH); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_GRAPH, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":87
 * 
 *     @classmethod
 *     def Compare(cls, Comm comm1 not None, Comm comm2 not None):             # <<<<<<<<<<<<<<
 *         """
 *         Compare two communicators
 */
  __pyx_4 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_kp_Compare); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm->tp_dict, __pyx_kp_Compare, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":515
 *     # ---------------------------
 * 
 *     def Reduce(self, sendbuf, recvbuf, Op op not None=SUM, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Reduce
 */
  __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_5);
  if (!(__Pyx_TypeTest(__pyx_5, __pyx_ptype_6mpi4py_3MPI_Op))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_64 = ((PyMPIOpObject *)__pyx_5);
  __Pyx_GIVEREF((PyObject *)__pyx_k_64);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":525
 *             op.ob_mpi, root, self.ob_mpi) )
 * 
 *     def Allreduce(self, sendbuf, recvbuf, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         All Reduce
 */
  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_1);
  if (!(__Pyx_TypeTest(__pyx_1, __pyx_ptype_6mpi4py_3MPI_Op))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_65 = ((PyMPIOpObject *)__pyx_1);
  __Pyx_GIVEREF((PyObject *)__pyx_k_65);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":535
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter(self, sendbuf, recvbuf, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Reduce-Scatter
 */
  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_2);
  if (!(__Pyx_TypeTest(__pyx_2, __pyx_ptype_6mpi4py_3MPI_Op))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_66 = ((PyMPIOpObject *)__pyx_2);
  __Pyx_GIVEREF((PyObject *)__pyx_k_66);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":593
 * 
 *     @classmethod
 *     def Get_parent(cls):             # <<<<<<<<<<<<<<
 *         """
 *         Return the parent intercommunicator for this process
 */
  __pyx_4 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_kp_Get_parent); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm->tp_dict, __pyx_kp_Get_parent, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":612
 * 
 *     @classmethod
 *     def Join(cls, int fd):             # <<<<<<<<<<<<<<
 *         """
 *         Create a intercommunicator by joining
 */
  __pyx_4 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_kp_Join); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm->tp_dict, __pyx_kp_Join, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":717
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_4 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_kp_2); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_4); __pyx_4 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm->tp_dict, __pyx_kp_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":779
 *         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_4 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_4);
  __pyx_k_67 = __pyx_4;
  __pyx_4 = 0;
  __Pyx_GIVEREF(__pyx_k_67);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":785
 *         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_7 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_7);
  __pyx_k_68 = __pyx_7;
  __pyx_7 = 0;
  __Pyx_GIVEREF(__pyx_k_68);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":878
 *     # Inclusive Scan
 * 
 *     def Scan(self, sendbuf, recvbuf, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Inclusive Scan
 */
  __pyx_8 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_8);
  if (!(__Pyx_TypeTest(__pyx_8, __pyx_ptype_6mpi4py_3MPI_Op))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_69 = ((PyMPIOpObject *)__pyx_8);
  __Pyx_GIVEREF((PyObject *)__pyx_k_69);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":890
 *     # Exclusive Scan
 * 
 *     def Exscan(self, sendbuf, recvbuf, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Exclusive Scan
 */
  __pyx_9 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_9);
  if (!(__Pyx_TypeTest(__pyx_9, __pyx_ptype_6mpi4py_3MPI_Op))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_70 = ((PyMPIOpObject *)__pyx_9);
  __Pyx_GIVEREF((PyObject *)__pyx_k_70);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":902
 *     # Python Communication
 *     #
 *     def scan(self, sendobj=None, recvobj=None, op=SUM):             # <<<<<<<<<<<<<<
 *         """Inclusive Scan"""
 *         if op is None: op = SUM
 */
  __pyx_10 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_10);
  __pyx_k_71 = __pyx_10;
  __pyx_10 = 0;
  __Pyx_GIVEREF(__pyx_k_71);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":908
 *         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_11 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_11)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_11);
  __pyx_k_72 = __pyx_11;
  __pyx_11 = 0;
  __Pyx_GIVEREF(__pyx_k_72);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":921
 * 
 *     def Spawn(self, command, args, int maxprocs=1,
 *               Info info=INFO_NULL, int root=0, errcodes=None):             # <<<<<<<<<<<<<<
 *         """
 *         Spawn instances of a single MPI application
 */
  __pyx_12 = __Pyx_GetName(__pyx_m, __pyx_kp_INFO_NULL); if (unlikely(!__pyx_12)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_12);
  if (!(__Pyx_TypeTest(__pyx_12, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_73 = ((PyMPIInfoObject *)__pyx_12);
  __Pyx_GIVEREF((PyObject *)__pyx_k_73);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":954
 *     # Server Routines
 * 
 *     def Accept(self, port_name, Info info=INFO_NULL, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Accept a request to form a new intercommunicator
 */
  __pyx_13 = __Pyx_GetName(__pyx_m, __pyx_kp_INFO_NULL); if (unlikely(!__pyx_13)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_13);
  if (!(__Pyx_TypeTest(__pyx_13, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_74 = ((PyMPIInfoObject *)__pyx_13);
  __Pyx_GIVEREF((PyObject *)__pyx_k_74);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":969
 *     # Client Routines
 * 
 *     def Connect(self, port_name, Info info=INFO_NULL, int root=0):             # <<<<<<<<<<<<<<
 *         """
 *         Make a request to form a new intercommunicator
 */
  __pyx_14 = __Pyx_GetName(__pyx_m, __pyx_kp_INFO_NULL); if (unlikely(!__pyx_14)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_14);
  if (!(__Pyx_TypeTest(__pyx_14, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_75 = ((PyMPIInfoObject *)__pyx_14);
  __Pyx_GIVEREF((PyObject *)__pyx_k_75);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1360
 * 
 * 
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Comm(MPI_COMM_NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_NULL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___COMM_NULL__ = ((PyMPICommObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1361
 * 
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Intracomm(MPI_COMM_SELF)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_SELF__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_SELF__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___COMM_SELF__ = ((PyMPIIntracommObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1362
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Intracomm(MPI_COMM_WORLD)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_WORLD__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_WORLD__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___COMM_WORLD__ = ((PyMPIIntracommObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1363
 * 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_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Intercomm(MPI_COMM_NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_PARENT__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_PARENT__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___COMM_PARENT__ = ((PyMPIIntercommObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1369
 * # ------------------------
 * 
 * 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_kp_COMM_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_NULL__)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1370
 * 
 * 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_kp_COMM_SELF, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_SELF__)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1371
 * 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_kp_COMM_WORLD, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_WORLD__)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1377
 * # ---------------------------
 * 
 * BSEND_OVERHEAD = MPI_BSEND_OVERHEAD             # <<<<<<<<<<<<<<
 * #: Upper bound of memory overhead for sending in buffered mode
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_BSEND_OVERHEAD); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_BSEND_OVERHEAD, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1407
 * # -----------------------
 * 
 * def Open_port(Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *     """
 *     Return an address that can be used to establish
 */
  __pyx_15 = __Pyx_GetName(__pyx_m, __pyx_kp_INFO_NULL); if (unlikely(!__pyx_15)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_15);
  if (!(__Pyx_TypeTest(__pyx_15, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_76 = ((PyMPIInfoObject *)__pyx_15);
  __Pyx_GIVEREF((PyObject *)__pyx_k_76);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1417
 *     return mpistr(cportname)
 * 
 * def Close_port(port_name, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *     """
 *     Close a port
 */
  __pyx_16 = __Pyx_GetName(__pyx_m, __pyx_kp_INFO_NULL); if (unlikely(!__pyx_16)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_16);
  if (!(__Pyx_TypeTest(__pyx_16, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_77 = ((PyMPIInfoObject *)__pyx_16);
  __Pyx_GIVEREF((PyObject *)__pyx_k_77);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Comm.pyx":1451
 *     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_17 = __Pyx_GetName(__pyx_m, __pyx_kp_INFO_NULL); if (unlikely(!__pyx_17)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_17);
  if (!(__Pyx_TypeTest(__pyx_17, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_78 = ((PyMPIInfoObject *)__pyx_17);
  __Pyx_GIVEREF((PyObject *)__pyx_k_78);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":4
 * # ---------------
 * 
 * MODE_NOCHECK   = MPI_MODE_NOCHECK             # <<<<<<<<<<<<<<
 * MODE_NOSTORE   = MPI_MODE_NOSTORE
 * MODE_NOPUT     = MPI_MODE_NOPUT
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_NOCHECK); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MODE_NOCHECK, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_NOSTORE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MODE_NOSTORE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_NOPUT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MODE_NOPUT, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_NOPRECEDE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MODE_NOPRECEDE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":8
 * MODE_NOPUT     = MPI_MODE_NOPUT
 * MODE_NOPRECEDE = MPI_MODE_NOPRECEDE
 * MODE_NOSUCCEED = MPI_MODE_NOSUCCEED             # <<<<<<<<<<<<<<
 * 
 * # Lock types
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_NOSUCCEED); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MODE_NOSUCCEED, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":13
 * # ----------
 * 
 * LOCK_EXCLUSIVE = MPI_LOCK_EXCLUSIVE             # <<<<<<<<<<<<<<
 * LOCK_SHARED    = MPI_LOCK_SHARED
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_LOCK_EXCLUSIVE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_LOCK_EXCLUSIVE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":14
 * 
 * LOCK_EXCLUSIVE = MPI_LOCK_EXCLUSIVE
 * LOCK_SHARED    = MPI_LOCK_SHARED             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_LOCK_SHARED); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_LOCK_SHARED, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":49
 *     @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_18 = __Pyx_GetName(__pyx_m, __pyx_kp_INFO_NULL); if (unlikely(!__pyx_18)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_18);
  if (!(__Pyx_TypeTest(__pyx_18, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_79 = ((PyMPIInfoObject *)__pyx_18);
  __Pyx_GIVEREF((PyObject *)__pyx_k_79);
  __pyx_19 = __Pyx_GetName(__pyx_m, __pyx_kp_COMM_SELF); if (unlikely(!__pyx_19)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_19);
  if (!(__Pyx_TypeTest(__pyx_19, __pyx_ptype_6mpi4py_3MPI_Intracomm))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_80 = ((PyMPIIntracommObject *)__pyx_19);
  __Pyx_GIVEREF((PyObject *)__pyx_k_80);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":48
 * 
 *     @classmethod
 *     def Create(cls, memory, int disp_unit=1,             # <<<<<<<<<<<<<<
 *                Info info=INFO_NULL, Intracomm comm not None=COMM_SELF):
 *         """
 */
  __pyx_20 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_kp_Create); if (unlikely(!__pyx_20)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_20);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_20); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_20); __pyx_20 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win->tp_dict, __pyx_kp_Create, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":193
 * 
 *     def Accumulate(self, origin, int target_rank,
 *                    target=None, Op op not None=SUM):             # <<<<<<<<<<<<<<
 *         """
 *         Accumulate data into the target process
 */
  __pyx_20 = __Pyx_GetName(__pyx_m, __pyx_kp_SUM); if (unlikely(!__pyx_20)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_20);
  if (!(__Pyx_TypeTest(__pyx_20, __pyx_ptype_6mpi4py_3MPI_Op))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_81 = ((PyMPIOpObject *)__pyx_20);
  __Pyx_GIVEREF((PyObject *)__pyx_k_81);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":329
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_21 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_kp_2); if (unlikely(!__pyx_21)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_21);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_21); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_21); __pyx_21 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win->tp_dict, __pyx_kp_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":338
 * 
 * 
 * cdef Win __WIN_NULL__ = _new_Win(MPI_WIN_NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_Win(MPI_WIN_NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___WIN_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___WIN_NULL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___WIN_NULL__ = ((PyMPIWinObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/Win.pyx":344
 * # -------------------------
 * 
 * WIN_NULL = __WIN_NULL__  #: Null window handle             # <<<<<<<<<<<<<<
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_WIN_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___WIN_NULL__)) < 0) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_RDONLY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MODE_RDONLY, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_WRONLY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MODE_WRONLY, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_RDWR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MODE_RDWR, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_CREATE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MODE_CREATE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_EXCL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MODE_EXCL, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_DELETE_ON_CLOSE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_82, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_UNIQUE_OPEN); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MODE_UNIQUE_OPEN, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_SEQUENTIAL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MODE_SEQUENTIAL, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MODE_APPEND); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MODE_APPEND, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_SEEK_SET); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_SEEK_SET, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_SEEK_CUR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_SEEK_CUR, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_SEEK_END); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_SEEK_END, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_DISPLACEMENT_CURRENT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_83, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_DISPLACEMENT_CURRENT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_DISP_CUR, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":57
 *     @classmethod
 *     def Open(cls, Intracomm comm not None, filename,
 *              int amode=MODE_RDONLY, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *         """
 *         Open a file
 */
  __pyx_21 = __Pyx_GetName(__pyx_m, __pyx_kp_MODE_RDONLY); if (unlikely(!__pyx_21)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_21);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_PyInt_int(__pyx_21); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_21); __pyx_21 = 0;
  __pyx_k_84 = __pyx_t_1;
  /* __pyx_t_1 released */
  __pyx_21 = __Pyx_GetName(__pyx_m, __pyx_kp_INFO_NULL); if (unlikely(!__pyx_21)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_21);
  if (!(__Pyx_TypeTest(__pyx_21, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_85 = ((PyMPIInfoObject *)__pyx_21);
  __Pyx_GIVEREF((PyObject *)__pyx_k_85);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":56
 * 
 *     @classmethod
 *     def Open(cls, Intracomm comm not None, filename,             # <<<<<<<<<<<<<<
 *              int amode=MODE_RDONLY, Info info=INFO_NULL):
 *         """
 */
  __pyx_22 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_kp_Open); if (unlikely(!__pyx_22)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_22);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_22); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_22); __pyx_22 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_File->tp_dict, __pyx_kp_Open, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":83
 * 
 *     @classmethod
 *     def Delete(cls, filename, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *         """
 *         Delete a file
 */
  __pyx_22 = __Pyx_GetName(__pyx_m, __pyx_kp_INFO_NULL); if (unlikely(!__pyx_22)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_22);
  if (!(__Pyx_TypeTest(__pyx_22, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_86 = ((PyMPIInfoObject *)__pyx_22);
  __Pyx_GIVEREF((PyObject *)__pyx_k_86);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":82
 *     # -----------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Delete(cls, filename, Info info=INFO_NULL):
 *         """
 */
  __pyx_23 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_kp_Delete); if (unlikely(!__pyx_23)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_23);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_23); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_23); __pyx_23 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_File->tp_dict, __pyx_kp_Delete, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":186
 *     def Set_view(self, Offset disp=0,
 *                  Datatype etype=None, Datatype filetype=None,
 *                  datarep=None, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *         """
 *         Set the file view
 */
  __pyx_23 = __Pyx_GetName(__pyx_m, __pyx_kp_INFO_NULL); if (unlikely(!__pyx_23)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_23);
  if (!(__Pyx_TypeTest(__pyx_23, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_87 = ((PyMPIInfoObject *)__pyx_23);
  __Pyx_GIVEREF((PyObject *)__pyx_k_87);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":323
 *         return request
 * 
 *     def Seek(self, Offset offset, int whence=SEEK_SET):             # <<<<<<<<<<<<<<
 *         """
 *         Update the individual file pointer
 */
  __pyx_24 = __Pyx_GetName(__pyx_m, __pyx_kp_SEEK_SET); if (unlikely(!__pyx_24)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_24);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_PyInt_int(__pyx_24); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_24); __pyx_24 = 0;
  __pyx_k_88 = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":400
 *         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):             # <<<<<<<<<<<<<<
 *         """
 *         Update the shared file pointer
 */
  __pyx_24 = __Pyx_GetName(__pyx_m, __pyx_kp_SEEK_SET); if (unlikely(!__pyx_24)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_24);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_PyInt_int(__pyx_24); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_24); __pyx_24 = 0;
  __pyx_k_89 = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":602
 * 
 *     @classmethod
 *     def f2py(cls, arg):             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_24 = __Pyx_GetName((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_kp_2); if (unlikely(!__pyx_24)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_24);
  /* __pyx_t_3 allocated */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_24); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_24); __pyx_24 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_6mpi4py_3MPI_File->tp_dict, __pyx_kp_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":611
 * 
 * 
 * cdef File __FILE_NULL__ = _new_File(MPI_FILE_NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI__new_File(MPI_FILE_NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(((PyObject *)__pyx_v_6mpi4py_3MPI___FILE_NULL__));
  __Pyx_DECREF(((PyObject *)__pyx_v_6mpi4py_3MPI___FILE_NULL__));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_6mpi4py_3MPI___FILE_NULL__ = ((PyMPIFileObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/File.pyx":617
 * # -----------------------
 * 
 * FILE_NULL = __FILE_NULL__  #: Null file handle             # <<<<<<<<<<<<<<
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_FILE_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___FILE_NULL__)) < 0) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":40
 * # ------------------
 * 
 * UNDEFINED = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 * #"""Undefined integer value"""
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_UNDEFINED); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_UNDEFINED, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":43
 * #"""Undefined integer value"""
 * 
 * ANY_SOURCE = MPI_ANY_SOURCE             # <<<<<<<<<<<<<<
 * #"""Wildcard source value for receives"""
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ANY_SOURCE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ANY_SOURCE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":46
 * #"""Wildcard source value for receives"""
 * 
 * ANY_TAG = MPI_ANY_TAG             # <<<<<<<<<<<<<<
 * #"""Wildcard tag value for receives"""
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ANY_TAG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ANY_TAG, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":49
 * #"""Wildcard tag value for receives"""
 * 
 * PROC_NULL = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 * #"""Special process rank for send/receive"""
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_PROC_NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_PROC_NULL, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":52
 * #"""Special process rank for send/receive"""
 * 
 * ROOT = MPI_ROOT             # <<<<<<<<<<<<<<
 * #"""Root process for collective inter-communications"""
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_ROOT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_ROOT, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":55
 * #"""Root process for collective inter-communications"""
 * 
 * BOTTOM = __BOTTOM__             # <<<<<<<<<<<<<<
 * #"""Special address for buffers"""
 * 
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_BOTTOM, __pyx_v_6mpi4py_3MPI___BOTTOM__) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":58
 * #"""Special address for buffers"""
 * 
 * IN_PLACE = __IN_PLACE__             # <<<<<<<<<<<<<<
 * #"""*In-place* option for collective communications"""
 * 
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_IN_PLACE, __pyx_v_6mpi4py_3MPI___IN_PLACE__) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":66
 * # ----------------------------
 * 
 * KEYVAL_INVALID  = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 * 
 * TAG_UB          = MPI_TAG_UB
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_KEYVAL_INVALID); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_KEYVAL_INVALID, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":68
 * KEYVAL_INVALID  = MPI_KEYVAL_INVALID
 * 
 * TAG_UB          = MPI_TAG_UB             # <<<<<<<<<<<<<<
 * HOST            = MPI_HOST
 * IO              = MPI_IO
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_TAG_UB); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_TAG_UB, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":69
 * 
 * TAG_UB          = MPI_TAG_UB
 * HOST            = MPI_HOST             # <<<<<<<<<<<<<<
 * IO              = MPI_IO
 * WTIME_IS_GLOBAL = MPI_WTIME_IS_GLOBAL
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_HOST); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_HOST, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":70
 * TAG_UB          = MPI_TAG_UB
 * HOST            = MPI_HOST
 * IO              = MPI_IO             # <<<<<<<<<<<<<<
 * WTIME_IS_GLOBAL = MPI_WTIME_IS_GLOBAL
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_IO); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_IO, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":71
 * HOST            = MPI_HOST
 * IO              = MPI_IO
 * WTIME_IS_GLOBAL = MPI_WTIME_IS_GLOBAL             # <<<<<<<<<<<<<<
 * 
 * UNIVERSE_SIZE   = MPI_UNIVERSE_SIZE
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_WTIME_IS_GLOBAL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_WTIME_IS_GLOBAL, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":73
 * WTIME_IS_GLOBAL = MPI_WTIME_IS_GLOBAL
 * 
 * UNIVERSE_SIZE   = MPI_UNIVERSE_SIZE             # <<<<<<<<<<<<<<
 * APPNUM          = MPI_APPNUM
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_UNIVERSE_SIZE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_UNIVERSE_SIZE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":74
 * 
 * UNIVERSE_SIZE   = MPI_UNIVERSE_SIZE
 * APPNUM          = MPI_APPNUM             # <<<<<<<<<<<<<<
 * 
 * LASTUSEDCODE    = MPI_LASTUSEDCODE
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_APPNUM); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_APPNUM, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":76
 * APPNUM          = MPI_APPNUM
 * 
 * LASTUSEDCODE    = MPI_LASTUSEDCODE             # <<<<<<<<<<<<<<
 * 
 * WIN_BASE        = MPI_WIN_BASE
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_LASTUSEDCODE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_LASTUSEDCODE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":78
 * LASTUSEDCODE    = MPI_LASTUSEDCODE
 * 
 * WIN_BASE        = MPI_WIN_BASE             # <<<<<<<<<<<<<<
 * WIN_SIZE        = MPI_WIN_SIZE
 * WIN_DISP_UNIT   = MPI_WIN_DISP_UNIT
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_WIN_BASE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_WIN_BASE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":79
 * 
 * WIN_BASE        = MPI_WIN_BASE
 * WIN_SIZE        = MPI_WIN_SIZE             # <<<<<<<<<<<<<<
 * WIN_DISP_UNIT   = MPI_WIN_DISP_UNIT
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_WIN_SIZE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_WIN_SIZE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":80
 * WIN_BASE        = MPI_WIN_BASE
 * WIN_SIZE        = MPI_WIN_SIZE
 * WIN_DISP_UNIT   = MPI_WIN_DISP_UNIT             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_WIN_DISP_UNIT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_WIN_DISP_UNIT, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":86
 * # -----------------
 * 
 * def Alloc_mem(Aint size, Info info=INFO_NULL):             # <<<<<<<<<<<<<<
 *     """
 *     Allocate memory for message passing and RMA
 */
  __pyx_24 = __Pyx_GetName(__pyx_m, __pyx_kp_INFO_NULL); if (unlikely(!__pyx_24)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_24);
  if (!(__Pyx_TypeTest(__pyx_24, __pyx_ptype_6mpi4py_3MPI_Info))) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_k_90 = ((PyMPIInfoObject *)__pyx_24);
  __Pyx_GIVEREF((PyObject *)__pyx_k_90);

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":124
 * # -------------------------------
 * 
 * THREAD_SINGLE     = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 * # """Only one thread will execute"""
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_THREAD_SINGLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_THREAD_SINGLE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":127
 * # """Only one thread will execute"""
 * 
 * THREAD_FUNNELED   = MPI_THREAD_FUNNELED             # <<<<<<<<<<<<<<
 * # """MPI calls are *funneled* to the main thread"""
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_THREAD_FUNNELED); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_THREAD_FUNNELED, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":130
 * # """MPI calls are *funneled* to the main thread"""
 * 
 * THREAD_SERIALIZED = MPI_THREAD_SERIALIZED             # <<<<<<<<<<<<<<
 * # """MPI calls are *serialized*"""
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_THREAD_SERIALIZED); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_THREAD_SERIALIZED, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":133
 * # """MPI calls are *serialized*"""
 * 
 * THREAD_MULTIPLE   = MPI_THREAD_MULTIPLE             # <<<<<<<<<<<<<<
 * # """Multiple threads may call MPI"""
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_THREAD_MULTIPLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_THREAD_MULTIPLE, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":136
 * # """Multiple threads may call MPI"""
 * 
 * def Init_thread(int required=THREAD_MULTIPLE):             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment
 */
  __pyx_25 = __Pyx_GetName(__pyx_m, __pyx_kp_THREAD_MULTIPLE); if (unlikely(!__pyx_25)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_25);
  /* __pyx_t_1 allocated */
  __pyx_t_1 = __pyx_PyInt_int(__pyx_25); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_25); __pyx_25 = 0;
  __pyx_k_91 = __pyx_t_1;
  /* __pyx_t_1 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":195
 *     return (version, subversion)
 * 
 * VERSION    = MPI_VERSION             # <<<<<<<<<<<<<<
 * SUBVERSION = MPI_SUBVERSION
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_VERSION); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_VERSION, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":196
 * 
 * VERSION    = MPI_VERSION
 * SUBVERSION = MPI_SUBVERSION             # <<<<<<<<<<<<<<
 * 
 * # Environmental Inquires
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_SUBVERSION); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_SUBVERSION, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":230
 * 
 * # MPI-1
 * MAX_PROCESSOR_NAME = MPI_MAX_PROCESSOR_NAME             # <<<<<<<<<<<<<<
 * MAX_ERROR_STRING   = MPI_MAX_ERROR_STRING
 * # MPI-2
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MAX_PROCESSOR_NAME); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MAX_PROCESSOR_NAME, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":231
 * # 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MAX_ERROR_STRING); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MAX_ERROR_STRING, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":233
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MAX_PORT_NAME); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MAX_PORT_NAME, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":234
 * # 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MAX_INFO_KEY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MAX_INFO_KEY, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":235
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MAX_INFO_VAL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MAX_INFO_VAL, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":236
 * 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_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MAX_OBJECT_NAME); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MAX_OBJECT_NAME, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/Devel/mpi4py-dev/src/MPI/MPI.pyx":237
 * MAX_INFO_VAL       = MPI_MAX_INFO_VAL
 * MAX_OBJECT_NAME    = MPI_MAX_OBJECT_NAME
 * MAX_DATAREP_STRING = MPI_MAX_DATAREP_STRING             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /* __pyx_t_3 allocated */
  __pyx_t_3 = PyInt_FromLong(MPI_MAX_DATAREP_STRING); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyObject_SetAttr(__pyx_m, __pyx_kp_MAX_DATAREP_STRING, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[26]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  /* __pyx_t_3 released */

  /* "/u/dalcinl/lib/python/Cython/Includes/python_object.pxd":1
 * cdef extern from "Python.h":             # <<<<<<<<<<<<<<
 *     ctypedef void PyObject
 *     ctypedef void PyTypeObject
 */
  if (__Pyx_RegisterCleanup()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_1);
  __Pyx_XDECREF(__pyx_2);
  __Pyx_XDECREF(__pyx_4);
  __Pyx_XDECREF(__pyx_5);
  __Pyx_XDECREF(__pyx_6);
  __Pyx_XDECREF(__pyx_7);
  __Pyx_XDECREF(__pyx_8);
  __Pyx_XDECREF(__pyx_9);
  __Pyx_XDECREF(__pyx_10);
  __Pyx_XDECREF(__pyx_11);
  __Pyx_XDECREF(__pyx_12);
  __Pyx_XDECREF(__pyx_13);
  __Pyx_XDECREF(__pyx_14);
  __Pyx_XDECREF(__pyx_15);
  __Pyx_XDECREF(__pyx_16);
  __Pyx_XDECREF(__pyx_17);
  __Pyx_XDECREF(__pyx_18);
  __Pyx_XDECREF(__pyx_19);
  __Pyx_XDECREF(__pyx_20);
  __Pyx_XDECREF(__pyx_21);
  __Pyx_XDECREF(__pyx_22);
  __Pyx_XDECREF(__pyx_23);
  __Pyx_XDECREF(__pyx_24);
  __Pyx_XDECREF(__pyx_25);
  __Pyx_AddTraceback("mpi4py.MPI");
  Py_DECREF(__pyx_m); __pyx_m = 0;
  __pyx_L0:;
  __Pyx_FinishRefcountContext();
  #if PY_MAJOR_VERSION < 3
  return;
  #else
  return __pyx_m;
  #endif
}

static void __Pyx_CleanupGlobals(void) {
}

static PyObject* __pyx_module_cleanup(PyObject *self, 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((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___F_DOUBLE_COMPLEX__); __pyx_v_6mpi4py_3MPI___F_DOUBLE_COMPLEX__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___F_COMPLEX__); __pyx_v_6mpi4py_3MPI___F_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_LONG_INT__); __pyx_v_6mpi4py_3MPI___LONG_LONG_INT__ = 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___LONG_LONG__); __pyx_v_6mpi4py_3MPI___LONG_LONG__ = 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___PACKED__); __pyx_v_6mpi4py_3MPI___PACKED__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__); __pyx_v_6mpi4py_3MPI___BYTE__ = 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__); __pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__); __pyx_v_6mpi4py_3MPI___LONG__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__); __pyx_v_6mpi4py_3MPI___UNSIGNED__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT__); __pyx_v_6mpi4py_3MPI___INT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__); __pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__ = 0;
  Py_DECREF((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__); __pyx_v_6mpi4py_3MPI___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___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___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_PICKLER); __pyx_v_6mpi4py_3MPI_PyMPI_PICKLER = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL); __pyx_v_6mpi4py_3MPI__Pickle_PROTOCOL = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI__Pickle_loads); __pyx_v_6mpi4py_3MPI__Pickle_loads = 0;
  Py_DECREF(__pyx_v_6mpi4py_3MPI__Pickle_dumps); __pyx_v_6mpi4py_3MPI__Pickle_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_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_MemoryError); __pyx_builtin_MemoryError = 0;
  Py_DECREF(__pyx_builtin_max); __pyx_builtin_max = 0;
  Py_DECREF(__pyx_builtin_min); __pyx_builtin_min = 0;
  Py_DECREF(__pyx_builtin_TypeError); __pyx_builtin_TypeError = 0;
  Py_DECREF(__pyx_builtin_ValueError); __pyx_builtin_ValueError = 0;
  Py_DECREF(__pyx_builtin_zip); __pyx_builtin_zip = 0;
  Py_DECREF(__pyx_builtin_range); __pyx_builtin_range = 0;
  Py_DECREF(__pyx_builtin_NotImplemented); __pyx_builtin_NotImplemented = 0;
  Py_DECREF(__pyx_builtin_KeyError); __pyx_builtin_KeyError = 0;
  Py_DECREF(__pyx_builtin_NotImplementedError); __pyx_builtin_NotImplementedError = 0;
  /*--- Intern cleanup code ---*/
  Py_DECREF(__pyx_empty_tuple); __pyx_empty_tuple = 0;
  Py_DECREF(__pyx_int_neg_1); __pyx_int_neg_1 = 0;
  Py_DECREF(__pyx_int_0); __pyx_int_0 = 0;
  Py_DECREF(__pyx_kp___cinit__); __pyx_kp___cinit__ = 0;
  Py_DECREF(__pyx_kp___dealloc__); __pyx_kp___dealloc__ = 0;
  Py_DECREF(__pyx_kp___richcmp__); __pyx_kp___richcmp__ = 0;
  Py_DECREF(__pyx_kp___nonzero__); __pyx_kp___nonzero__ = 0;
  Py_DECREF(__pyx_kp_Free); __pyx_kp_Free = 0;
  Py_DECREF(__pyx_kp_1); __pyx_kp_1 = 0;
  Py_DECREF(__pyx_kp_2); __pyx_kp_2 = 0;
  Py_DECREF(__pyx_kp_Get_extent); __pyx_kp_Get_extent = 0;
  Py_DECREF(__pyx_kp_Get_size); __pyx_kp_Get_size = 0;
  Py_DECREF(__pyx_kp_Dup); __pyx_kp_Dup = 0;
  Py_DECREF(__pyx_kp_Create_contiguous); __pyx_kp_Create_contiguous = 0;
  Py_DECREF(__pyx_kp_Create_vector); __pyx_kp_Create_vector = 0;
  Py_DECREF(__pyx_kp_Create_hvector); __pyx_kp_Create_hvector = 0;
  Py_DECREF(__pyx_kp_Create_indexed); __pyx_kp_Create_indexed = 0;
  Py_DECREF(__pyx_kp_7); __pyx_kp_7 = 0;
  Py_DECREF(__pyx_kp_Create_hindexed); __pyx_kp_Create_hindexed = 0;
  Py_DECREF(__pyx_kp_Create_subarray); __pyx_kp_Create_subarray = 0;
  Py_DECREF(__pyx_kp_Create_darray); __pyx_kp_Create_darray = 0;
  Py_DECREF(__pyx_kp_Create_struct); __pyx_kp_Create_struct = 0;
  Py_DECREF(__pyx_kp_Match_size); __pyx_kp_Match_size = 0;
  Py_DECREF(__pyx_kp_Commit); __pyx_kp_Commit = 0;
  Py_DECREF(__pyx_kp_Create_resized); __pyx_kp_Create_resized = 0;
  Py_DECREF(__pyx_kp_Resized); __pyx_kp_Resized = 0;
  Py_DECREF(__pyx_kp_Get_true_extent); __pyx_kp_Get_true_extent = 0;
  Py_DECREF(__pyx_kp_Pack); __pyx_kp_Pack = 0;
  Py_DECREF(__pyx_kp_Unpack); __pyx_kp_Unpack = 0;
  Py_DECREF(__pyx_kp_Pack_size); __pyx_kp_Pack_size = 0;
  Py_DECREF(__pyx_kp_Pack_external); __pyx_kp_Pack_external = 0;
  Py_DECREF(__pyx_kp_Unpack_external); __pyx_kp_Unpack_external = 0;
  Py_DECREF(__pyx_kp_Pack_external_size); __pyx_kp_Pack_external_size = 0;
  Py_DECREF(__pyx_kp_Get_name); __pyx_kp_Get_name = 0;
  Py_DECREF(__pyx_kp_Set_name); __pyx_kp_Set_name = 0;
  Py_DECREF(__pyx_kp_Get_source); __pyx_kp_Get_source = 0;
  Py_DECREF(__pyx_kp_Set_source); __pyx_kp_Set_source = 0;
  Py_DECREF(__pyx_kp_Get_tag); __pyx_kp_Get_tag = 0;
  Py_DECREF(__pyx_kp_Set_tag); __pyx_kp_Set_tag = 0;
  Py_DECREF(__pyx_kp_Get_error); __pyx_kp_Get_error = 0;
  Py_DECREF(__pyx_kp_Set_error); __pyx_kp_Set_error = 0;
  Py_DECREF(__pyx_kp_Get_count); __pyx_kp_Get_count = 0;
  Py_DECREF(__pyx_kp_Get_elements); __pyx_kp_Get_elements = 0;
  Py_DECREF(__pyx_kp_Set_elements); __pyx_kp_Set_elements = 0;
  Py_DECREF(__pyx_kp_Is_cancelled); __pyx_kp_Is_cancelled = 0;
  Py_DECREF(__pyx_kp_Set_cancelled); __pyx_kp_Set_cancelled = 0;
  Py_DECREF(__pyx_kp_Wait); __pyx_kp_Wait = 0;
  Py_DECREF(__pyx_kp_Test); __pyx_kp_Test = 0;
  Py_DECREF(__pyx_kp_Get_status); __pyx_kp_Get_status = 0;
  Py_DECREF(__pyx_kp_Waitany); __pyx_kp_Waitany = 0;
  Py_DECREF(__pyx_kp_Testany); __pyx_kp_Testany = 0;
  Py_DECREF(__pyx_kp_Waitall); __pyx_kp_Waitall = 0;
  Py_DECREF(__pyx_kp_Testall); __pyx_kp_Testall = 0;
  Py_DECREF(__pyx_kp_Waitsome); __pyx_kp_Waitsome = 0;
  Py_DECREF(__pyx_kp_Testsome); __pyx_kp_Testsome = 0;
  Py_DECREF(__pyx_kp_Cancel); __pyx_kp_Cancel = 0;
  Py_DECREF(__pyx_kp_Start); __pyx_kp_Start = 0;
  Py_DECREF(__pyx_kp_Startall); __pyx_kp_Startall = 0;
  Py_DECREF(__pyx_kp_Complete); __pyx_kp_Complete = 0;
  Py_DECREF(__pyx_kp_Create); __pyx_kp_Create = 0;
  Py_DECREF(__pyx_kp_Get); __pyx_kp_Get = 0;
  Py_DECREF(__pyx_kp_Set); __pyx_kp_Set = 0;
  Py_DECREF(__pyx_kp_Delete); __pyx_kp_Delete = 0;
  Py_DECREF(__pyx_kp_Get_nkeys); __pyx_kp_Get_nkeys = 0;
  Py_DECREF(__pyx_kp_Get_nthkey); __pyx_kp_Get_nthkey = 0;
  Py_DECREF(__pyx_kp___len__); __pyx_kp___len__ = 0;
  Py_DECREF(__pyx_kp___contains__); __pyx_kp___contains__ = 0;
  Py_DECREF(__pyx_kp___iter__); __pyx_kp___iter__ = 0;
  Py_DECREF(__pyx_kp___getitem__); __pyx_kp___getitem__ = 0;
  Py_DECREF(__pyx_kp___setitem__); __pyx_kp___setitem__ = 0;
  Py_DECREF(__pyx_kp___delitem__); __pyx_kp___delitem__ = 0;
  Py_DECREF(__pyx_kp_get); __pyx_kp_get = 0;
  Py_DECREF(__pyx_kp_keys); __pyx_kp_keys = 0;
  Py_DECREF(__pyx_kp_values); __pyx_kp_values = 0;
  Py_DECREF(__pyx_kp_items); __pyx_kp_items = 0;
  Py_DECREF(__pyx_kp_update); __pyx_kp_update = 0;
  Py_DECREF(__pyx_kp_clear); __pyx_kp_clear = 0;
  Py_DECREF(__pyx_kp___call__); __pyx_kp___call__ = 0;
  Py_DECREF(__pyx_kp_Get_rank); __pyx_kp_Get_rank = 0;
  Py_DECREF(__pyx_kp_Translate_ranks); __pyx_kp_Translate_ranks = 0;
  Py_DECREF(__pyx_kp_Compare); __pyx_kp_Compare = 0;
  Py_DECREF(__pyx_kp_Union); __pyx_kp_Union = 0;
  Py_DECREF(__pyx_kp_Intersect); __pyx_kp_Intersect = 0;
  Py_DECREF(__pyx_kp_Difference); __pyx_kp_Difference = 0;
  Py_DECREF(__pyx_kp_Incl); __pyx_kp_Incl = 0;
  Py_DECREF(__pyx_kp_Excl); __pyx_kp_Excl = 0;
  Py_DECREF(__pyx_kp_Range_incl); __pyx_kp_Range_incl = 0;
  Py_DECREF(__pyx_kp_Range_excl); __pyx_kp_Range_excl = 0;
  Py_DECREF(__pyx_kp_Get_group); __pyx_kp_Get_group = 0;
  Py_DECREF(__pyx_kp_Clone); __pyx_kp_Clone = 0;
  Py_DECREF(__pyx_kp_Send); __pyx_kp_Send = 0;
  Py_DECREF(__pyx_kp_Recv); __pyx_kp_Recv = 0;
  Py_DECREF(__pyx_kp_Sendrecv); __pyx_kp_Sendrecv = 0;
  Py_DECREF(__pyx_kp_Sendrecv_replace); __pyx_kp_Sendrecv_replace = 0;
  Py_DECREF(__pyx_kp_Isend); __pyx_kp_Isend = 0;
  Py_DECREF(__pyx_kp_Irecv); __pyx_kp_Irecv = 0;
  Py_DECREF(__pyx_kp_Probe); __pyx_kp_Probe = 0;
  Py_DECREF(__pyx_kp_Iprobe); __pyx_kp_Iprobe = 0;
  Py_DECREF(__pyx_kp_Send_init); __pyx_kp_Send_init = 0;
  Py_DECREF(__pyx_kp_Recv_init); __pyx_kp_Recv_init = 0;
  Py_DECREF(__pyx_kp_Bsend); __pyx_kp_Bsend = 0;
  Py_DECREF(__pyx_kp_Ssend); __pyx_kp_Ssend = 0;
  Py_DECREF(__pyx_kp_Rsend); __pyx_kp_Rsend = 0;
  Py_DECREF(__pyx_kp_Ibsend); __pyx_kp_Ibsend = 0;
  Py_DECREF(__pyx_kp_Issend); __pyx_kp_Issend = 0;
  Py_DECREF(__pyx_kp_Irsend); __pyx_kp_Irsend = 0;
  Py_DECREF(__pyx_kp_Bsend_init); __pyx_kp_Bsend_init = 0;
  Py_DECREF(__pyx_kp_Ssend_init); __pyx_kp_Ssend_init = 0;
  Py_DECREF(__pyx_kp_Rsend_init); __pyx_kp_Rsend_init = 0;
  Py_DECREF(__pyx_kp_Barrier); __pyx_kp_Barrier = 0;
  Py_DECREF(__pyx_kp_Bcast); __pyx_kp_Bcast = 0;
  Py_DECREF(__pyx_kp_Gather); __pyx_kp_Gather = 0;
  Py_DECREF(__pyx_kp_Gatherv); __pyx_kp_Gatherv = 0;
  Py_DECREF(__pyx_kp_Scatter); __pyx_kp_Scatter = 0;
  Py_DECREF(__pyx_kp_Scatterv); __pyx_kp_Scatterv = 0;
  Py_DECREF(__pyx_kp_Allgather); __pyx_kp_Allgather = 0;
  Py_DECREF(__pyx_kp_Allgatherv); __pyx_kp_Allgatherv = 0;
  Py_DECREF(__pyx_kp_Alltoall); __pyx_kp_Alltoall = 0;
  Py_DECREF(__pyx_kp_Alltoallv); __pyx_kp_Alltoallv = 0;
  Py_DECREF(__pyx_kp_Alltoallw); __pyx_kp_Alltoallw = 0;
  Py_DECREF(__pyx_kp_Reduce); __pyx_kp_Reduce = 0;
  Py_DECREF(__pyx_kp_Allreduce); __pyx_kp_Allreduce = 0;
  Py_DECREF(__pyx_kp_Reduce_scatter); __pyx_kp_Reduce_scatter = 0;
  Py_DECREF(__pyx_kp_Is_inter); __pyx_kp_Is_inter = 0;
  Py_DECREF(__pyx_kp_Is_intra); __pyx_kp_Is_intra = 0;
  Py_DECREF(__pyx_kp_Get_topology); __pyx_kp_Get_topology = 0;
  Py_DECREF(__pyx_kp_Get_parent); __pyx_kp_Get_parent = 0;
  Py_DECREF(__pyx_kp_Disconnect); __pyx_kp_Disconnect = 0;
  Py_DECREF(__pyx_kp_Join); __pyx_kp_Join = 0;
  Py_DECREF(__pyx_kp_Get_attr); __pyx_kp_Get_attr = 0;
  Py_DECREF(__pyx_kp_Get_errhandler); __pyx_kp_Get_errhandler = 0;
  Py_DECREF(__pyx_kp_Set_errhandler); __pyx_kp_Set_errhandler = 0;
  Py_DECREF(__pyx_kp_Call_errhandler); __pyx_kp_Call_errhandler = 0;
  Py_DECREF(__pyx_kp_Abort); __pyx_kp_Abort = 0;
  Py_DECREF(__pyx_kp_send); __pyx_kp_send = 0;
  Py_DECREF(__pyx_kp_recv); __pyx_kp_recv = 0;
  Py_DECREF(__pyx_kp_sendrecv); __pyx_kp_sendrecv = 0;
  Py_DECREF(__pyx_kp_barrier); __pyx_kp_barrier = 0;
  Py_DECREF(__pyx_kp_bcast); __pyx_kp_bcast = 0;
  Py_DECREF(__pyx_kp_gather); __pyx_kp_gather = 0;
  Py_DECREF(__pyx_kp_scatter); __pyx_kp_scatter = 0;
  Py_DECREF(__pyx_kp_allgather); __pyx_kp_allgather = 0;
  Py_DECREF(__pyx_kp_alltoall); __pyx_kp_alltoall = 0;
  Py_DECREF(__pyx_kp_reduce); __pyx_kp_reduce = 0;
  Py_DECREF(__pyx_kp_allreduce); __pyx_kp_allreduce = 0;
  Py_DECREF(__pyx_kp_Split); __pyx_kp_Split = 0;
  Py_DECREF(__pyx_kp_Create_cart); __pyx_kp_Create_cart = 0;
  Py_DECREF(__pyx_kp_Create_graph); __pyx_kp_Create_graph = 0;
  Py_DECREF(__pyx_kp_Create_intercomm); __pyx_kp_Create_intercomm = 0;
  Py_DECREF(__pyx_kp_Scan); __pyx_kp_Scan = 0;
  Py_DECREF(__pyx_kp_Exscan); __pyx_kp_Exscan = 0;
  Py_DECREF(__pyx_kp_scan); __pyx_kp_scan = 0;
  Py_DECREF(__pyx_kp_exscan); __pyx_kp_exscan = 0;
  Py_DECREF(__pyx_kp_Spawn); __pyx_kp_Spawn = 0;
  Py_DECREF(__pyx_kp_Accept); __pyx_kp_Accept = 0;
  Py_DECREF(__pyx_kp_Connect); __pyx_kp_Connect = 0;
  Py_DECREF(__pyx_kp_Get_dim); __pyx_kp_Get_dim = 0;
  Py_DECREF(__pyx_kp_Get_topo); __pyx_kp_Get_topo = 0;
  Py_DECREF(__pyx_kp_Get_cart_rank); __pyx_kp_Get_cart_rank = 0;
  Py_DECREF(__pyx_kp_Get_coords); __pyx_kp_Get_coords = 0;
  Py_DECREF(__pyx_kp_Shift); __pyx_kp_Shift = 0;
  Py_DECREF(__pyx_kp_Sub); __pyx_kp_Sub = 0;
  Py_DECREF(__pyx_kp_Map); __pyx_kp_Map = 0;
  Py_DECREF(__pyx_kp_Get_dims); __pyx_kp_Get_dims = 0;
  Py_DECREF(__pyx_kp_Get_neighbors_count); __pyx_kp_Get_neighbors_count = 0;
  Py_DECREF(__pyx_kp_Get_neighbors); __pyx_kp_Get_neighbors = 0;
  Py_DECREF(__pyx_kp_Get_remote_group); __pyx_kp_Get_remote_group = 0;
  Py_DECREF(__pyx_kp_Get_remote_size); __pyx_kp_Get_remote_size = 0;
  Py_DECREF(__pyx_kp_Merge); __pyx_kp_Merge = 0;
  Py_DECREF(__pyx_kp_Put); __pyx_kp_Put = 0;
  Py_DECREF(__pyx_kp_Accumulate); __pyx_kp_Accumulate = 0;
  Py_DECREF(__pyx_kp_Fence); __pyx_kp_Fence = 0;
  Py_DECREF(__pyx_kp_Post); __pyx_kp_Post = 0;
  Py_DECREF(__pyx_kp_Lock); __pyx_kp_Lock = 0;
  Py_DECREF(__pyx_kp_Unlock); __pyx_kp_Unlock = 0;
  Py_DECREF(__pyx_kp_Open); __pyx_kp_Open = 0;
  Py_DECREF(__pyx_kp_Close); __pyx_kp_Close = 0;
  Py_DECREF(__pyx_kp_Set_size); __pyx_kp_Set_size = 0;
  Py_DECREF(__pyx_kp_Preallocate); __pyx_kp_Preallocate = 0;
  Py_DECREF(__pyx_kp_Get_amode); __pyx_kp_Get_amode = 0;
  Py_DECREF(__pyx_kp_Set_info); __pyx_kp_Set_info = 0;
  Py_DECREF(__pyx_kp_Get_info); __pyx_kp_Get_info = 0;
  Py_DECREF(__pyx_kp_Set_view); __pyx_kp_Set_view = 0;
  Py_DECREF(__pyx_kp_Get_view); __pyx_kp_Get_view = 0;
  Py_DECREF(__pyx_kp_Read_at); __pyx_kp_Read_at = 0;
  Py_DECREF(__pyx_kp_Read_at_all); __pyx_kp_Read_at_all = 0;
  Py_DECREF(__pyx_kp_Write_at); __pyx_kp_Write_at = 0;
  Py_DECREF(__pyx_kp_Write_at_all); __pyx_kp_Write_at_all = 0;
  Py_DECREF(__pyx_kp_Iread_at); __pyx_kp_Iread_at = 0;
  Py_DECREF(__pyx_kp_Iwrite_at); __pyx_kp_Iwrite_at = 0;
  Py_DECREF(__pyx_kp_Read); __pyx_kp_Read = 0;
  Py_DECREF(__pyx_kp_Read_all); __pyx_kp_Read_all = 0;
  Py_DECREF(__pyx_kp_Write); __pyx_kp_Write = 0;
  Py_DECREF(__pyx_kp_Write_all); __pyx_kp_Write_all = 0;
  Py_DECREF(__pyx_kp_Iread); __pyx_kp_Iread = 0;
  Py_DECREF(__pyx_kp_Iwrite); __pyx_kp_Iwrite = 0;
  Py_DECREF(__pyx_kp_Seek); __pyx_kp_Seek = 0;
  Py_DECREF(__pyx_kp_Get_position); __pyx_kp_Get_position = 0;
  Py_DECREF(__pyx_kp_Get_byte_offset); __pyx_kp_Get_byte_offset = 0;
  Py_DECREF(__pyx_kp_Read_shared); __pyx_kp_Read_shared = 0;
  Py_DECREF(__pyx_kp_Write_shared); __pyx_kp_Write_shared = 0;
  Py_DECREF(__pyx_kp_Iread_shared); __pyx_kp_Iread_shared = 0;
  Py_DECREF(__pyx_kp_Iwrite_shared); __pyx_kp_Iwrite_shared = 0;
  Py_DECREF(__pyx_kp_Read_ordered); __pyx_kp_Read_ordered = 0;
  Py_DECREF(__pyx_kp_Write_ordered); __pyx_kp_Write_ordered = 0;
  Py_DECREF(__pyx_kp_Seek_shared); __pyx_kp_Seek_shared = 0;
  Py_DECREF(__pyx_kp_Get_position_shared); __pyx_kp_Get_position_shared = 0;
  Py_DECREF(__pyx_kp_Read_at_all_begin); __pyx_kp_Read_at_all_begin = 0;
  Py_DECREF(__pyx_kp_Read_at_all_end); __pyx_kp_Read_at_all_end = 0;
  Py_DECREF(__pyx_kp_Write_at_all_begin); __pyx_kp_Write_at_all_begin = 0;
  Py_DECREF(__pyx_kp_Write_at_all_end); __pyx_kp_Write_at_all_end = 0;
  Py_DECREF(__pyx_kp_Read_all_begin); __pyx_kp_Read_all_begin = 0;
  Py_DECREF(__pyx_kp_Read_all_end); __pyx_kp_Read_all_end = 0;
  Py_DECREF(__pyx_kp_Write_all_begin); __pyx_kp_Write_all_begin = 0;
  Py_DECREF(__pyx_kp_Write_all_end); __pyx_kp_Write_all_end = 0;
  Py_DECREF(__pyx_kp_Read_ordered_begin); __pyx_kp_Read_ordered_begin = 0;
  Py_DECREF(__pyx_kp_Read_ordered_end); __pyx_kp_Read_ordered_end = 0;
  Py_DECREF(__pyx_kp_Write_ordered_begin); __pyx_kp_Write_ordered_begin = 0;
  Py_DECREF(__pyx_kp_Write_ordered_end); __pyx_kp_Write_ordered_end = 0;
  Py_DECREF(__pyx_kp_Get_type_extent); __pyx_kp_Get_type_extent = 0;
  Py_DECREF(__pyx_kp_Set_atomicity); __pyx_kp_Set_atomicity = 0;
  Py_DECREF(__pyx_kp_Get_atomicity); __pyx_kp_Get_atomicity = 0;
  Py_DECREF(__pyx_kp_Sync); __pyx_kp_Sync = 0;
  Py_DECREF(__pyx_kp_query_fn); __pyx_kp_query_fn = 0;
  Py_DECREF(__pyx_kp_free_fn); __pyx_kp_free_fn = 0;
  Py_DECREF(__pyx_kp_cancel_fn); __pyx_kp_cancel_fn = 0;
  Py_DECREF(__pyx_kp_args); __pyx_kp_args = 0;
  Py_DECREF(__pyx_kp_kargs); __pyx_kp_kargs = 0;
  Py_DECREF(__pyx_kp_self); __pyx_kp_self = 0;
  Py_DECREF(__pyx_kp_ierr); __pyx_kp_ierr = 0;
  Py_DECREF(__pyx_kp_error); __pyx_kp_error = 0;
  Py_DECREF(__pyx_kp_errorcode); __pyx_kp_errorcode = 0;
  Py_DECREF(__pyx_kp_other); __pyx_kp_other = 0;
  Py_DECREF(__pyx_kp_op); __pyx_kp_op = 0;
  Py_DECREF(__pyx_kp_arg); __pyx_kp_arg = 0;
  Py_DECREF(__pyx_kp_count); __pyx_kp_count = 0;
  Py_DECREF(__pyx_kp_blocklength); __pyx_kp_blocklength = 0;
  Py_DECREF(__pyx_kp_stride); __pyx_kp_stride = 0;
  Py_DECREF(__pyx_kp_blocklengths); __pyx_kp_blocklengths = 0;
  Py_DECREF(__pyx_kp_displacements); __pyx_kp_displacements = 0;
  Py_DECREF(__pyx_kp_sizes); __pyx_kp_sizes = 0;
  Py_DECREF(__pyx_kp_subsizes); __pyx_kp_subsizes = 0;
  Py_DECREF(__pyx_kp_starts); __pyx_kp_starts = 0;
  Py_DECREF(__pyx_kp_order); __pyx_kp_order = 0;
  Py_DECREF(__pyx_kp_size); __pyx_kp_size = 0;
  Py_DECREF(__pyx_kp_rank); __pyx_kp_rank = 0;
  Py_DECREF(__pyx_kp_gsizes); __pyx_kp_gsizes = 0;
  Py_DECREF(__pyx_kp_distribs); __pyx_kp_distribs = 0;
  Py_DECREF(__pyx_kp_dargs); __pyx_kp_dargs = 0;
  Py_DECREF(__pyx_kp_psizes); __pyx_kp_psizes = 0;
  Py_DECREF(__pyx_kp_datatypes); __pyx_kp_datatypes = 0;
  Py_DECREF(__pyx_kp_typeclass); __pyx_kp_typeclass = 0;
  Py_DECREF(__pyx_kp_lb); __pyx_kp_lb = 0;
  Py_DECREF(__pyx_kp_extent); __pyx_kp_extent = 0;
  Py_DECREF(__pyx_kp_inbuf); __pyx_kp_inbuf = 0;
  Py_DECREF(__pyx_kp_outbuf); __pyx_kp_outbuf = 0;
  Py_DECREF(__pyx_kp_position); __pyx_kp_position = 0;
  Py_DECREF(__pyx_kp_comm); __pyx_kp_comm = 0;
  Py_DECREF(__pyx_kp_datarep); __pyx_kp_datarep = 0;
  Py_DECREF(__pyx_kp_name); __pyx_kp_name = 0;
  Py_DECREF(__pyx_kp_value); __pyx_kp_value = 0;
  Py_DECREF(__pyx_kp_location); __pyx_kp_location = 0;
  Py_DECREF(__pyx_kp_source); __pyx_kp_source = 0;
  Py_DECREF(__pyx_kp_tag); __pyx_kp_tag = 0;
  Py_DECREF(__pyx_kp_datatype); __pyx_kp_datatype = 0;
  Py_DECREF(__pyx_kp_flag); __pyx_kp_flag = 0;
  Py_DECREF(__pyx_kp_status); __pyx_kp_status = 0;
  Py_DECREF(__pyx_kp_requests); __pyx_kp_requests = 0;
  Py_DECREF(__pyx_kp_statuses); __pyx_kp_statuses = 0;
  Py_DECREF(__pyx_kp_key); __pyx_kp_key = 0;
  Py_DECREF(__pyx_kp_maxlen); __pyx_kp_maxlen = 0;
  Py_DECREF(__pyx_kp_n); __pyx_kp_n = 0;
  Py_DECREF(__pyx_kp_default); __pyx_kp_default = 0;
  Py_DECREF(__pyx_kp_x); __pyx_kp_x = 0;
  Py_DECREF(__pyx_kp_y); __pyx_kp_y = 0;
  Py_DECREF(__pyx_kp_function); __pyx_kp_function = 0;
  Py_DECREF(__pyx_kp_commute); __pyx_kp_commute = 0;
  Py_DECREF(__pyx_kp_48); __pyx_kp_48 = 0;
  Py_DECREF(__pyx_kp_49); __pyx_kp_49 = 0;
  Py_DECREF(__pyx_kp_50); __pyx_kp_50 = 0;
  Py_DECREF(__pyx_kp_ranks); __pyx_kp_ranks = 0;
  Py_DECREF(__pyx_kp_51); __pyx_kp_51 = 0;
  Py_DECREF(__pyx_kp_52); __pyx_kp_52 = 0;
  Py_DECREF(__pyx_kp_buf); __pyx_kp_buf = 0;
  Py_DECREF(__pyx_kp_dest); __pyx_kp_dest = 0;
  Py_DECREF(__pyx_kp_sendbuf); __pyx_kp_sendbuf = 0;
  Py_DECREF(__pyx_kp_sendtag); __pyx_kp_sendtag = 0;
  Py_DECREF(__pyx_kp_recvbuf); __pyx_kp_recvbuf = 0;
  Py_DECREF(__pyx_kp_recvtag); __pyx_kp_recvtag = 0;
  Py_DECREF(__pyx_kp_root); __pyx_kp_root = 0;
  Py_DECREF(__pyx_kp_fd); __pyx_kp_fd = 0;
  Py_DECREF(__pyx_kp_keyval); __pyx_kp_keyval = 0;
  Py_DECREF(__pyx_kp_errhandler); __pyx_kp_errhandler = 0;
  Py_DECREF(__pyx_kp_obj); __pyx_kp_obj = 0;
  Py_DECREF(__pyx_kp_sendobj); __pyx_kp_sendobj = 0;
  Py_DECREF(__pyx_kp_recvobj); __pyx_kp_recvobj = 0;
  Py_DECREF(__pyx_kp_group); __pyx_kp_group = 0;
  Py_DECREF(__pyx_kp_color); __pyx_kp_color = 0;
  Py_DECREF(__pyx_kp_dims); __pyx_kp_dims = 0;
  Py_DECREF(__pyx_kp_periods); __pyx_kp_periods = 0;
  Py_DECREF(__pyx_kp_reorder); __pyx_kp_reorder = 0;
  Py_DECREF(__pyx_kp_index); __pyx_kp_index = 0;
  Py_DECREF(__pyx_kp_edges); __pyx_kp_edges = 0;
  Py_DECREF(__pyx_kp_local_leader); __pyx_kp_local_leader = 0;
  Py_DECREF(__pyx_kp_peer_comm); __pyx_kp_peer_comm = 0;
  Py_DECREF(__pyx_kp_remote_leader); __pyx_kp_remote_leader = 0;
  Py_DECREF(__pyx_kp_command); __pyx_kp_command = 0;
  Py_DECREF(__pyx_kp_maxprocs); __pyx_kp_maxprocs = 0;
  Py_DECREF(__pyx_kp_info); __pyx_kp_info = 0;
  Py_DECREF(__pyx_kp_errcodes); __pyx_kp_errcodes = 0;
  Py_DECREF(__pyx_kp_port_name); __pyx_kp_port_name = 0;
  Py_DECREF(__pyx_kp_coords); __pyx_kp_coords = 0;
  Py_DECREF(__pyx_kp_direction); __pyx_kp_direction = 0;
  Py_DECREF(__pyx_kp_disp); __pyx_kp_disp = 0;
  Py_DECREF(__pyx_kp_remain_dims); __pyx_kp_remain_dims = 0;
  Py_DECREF(__pyx_kp_nnodes); __pyx_kp_nnodes = 0;
  Py_DECREF(__pyx_kp_high); __pyx_kp_high = 0;
  Py_DECREF(__pyx_kp_memory); __pyx_kp_memory = 0;
  Py_DECREF(__pyx_kp_service_name); __pyx_kp_service_name = 0;
  Py_DECREF(__pyx_kp_disp_unit); __pyx_kp_disp_unit = 0;
  Py_DECREF(__pyx_kp_origin); __pyx_kp_origin = 0;
  Py_DECREF(__pyx_kp_target_rank); __pyx_kp_target_rank = 0;
  Py_DECREF(__pyx_kp_target); __pyx_kp_target = 0;
  Py_DECREF(__pyx_kp_assertion); __pyx_kp_assertion = 0;
  Py_DECREF(__pyx_kp_lock_type); __pyx_kp_lock_type = 0;
  Py_DECREF(__pyx_kp_filename); __pyx_kp_filename = 0;
  Py_DECREF(__pyx_kp_amode); __pyx_kp_amode = 0;
  Py_DECREF(__pyx_kp_etype); __pyx_kp_etype = 0;
  Py_DECREF(__pyx_kp_filetype); __pyx_kp_filetype = 0;
  Py_DECREF(__pyx_kp_offset); __pyx_kp_offset = 0;
  Py_DECREF(__pyx_kp_whence); __pyx_kp_whence = 0;
  Py_DECREF(__pyx_kp_required); __pyx_kp_required = 0;
  Py_DECREF(__pyx_kp___doc__); __pyx_kp___doc__ = 0;
  Py_DECREF(__pyx_kp_cPickle); __pyx_kp_cPickle = 0;
  Py_DECREF(__pyx_kp_dumps); __pyx_kp_dumps = 0;
  Py_DECREF(__pyx_kp_loads); __pyx_kp_loads = 0;
  Py_DECREF(__pyx_kp_HIGHEST_PROTOCOL); __pyx_kp_HIGHEST_PROTOCOL = 0;
  Py_DECREF(__pyx_kp_ImportError); __pyx_kp_ImportError = 0;
  Py_DECREF(__pyx_kp_pickle); __pyx_kp_pickle = 0;
  Py_DECREF(__pyx_kp_Exception); __pyx_kp_Exception = 0;
  Py_DECREF(__pyx_kp_RuntimeError); __pyx_kp_RuntimeError = 0;
  Py_DECREF(__pyx_kp___init__); __pyx_kp___init__ = 0;
  Py_DECREF(__pyx_kp___eq__); __pyx_kp___eq__ = 0;
  Py_DECREF(__pyx_kp___ne__); __pyx_kp___ne__ = 0;
  Py_DECREF(__pyx_kp___lt__); __pyx_kp___lt__ = 0;
  Py_DECREF(__pyx_kp___le__); __pyx_kp___le__ = 0;
  Py_DECREF(__pyx_kp___gt__); __pyx_kp___gt__ = 0;
  Py_DECREF(__pyx_kp___ge__); __pyx_kp___ge__ = 0;
  Py_DECREF(__pyx_kp___bool__); __pyx_kp___bool__ = 0;
  Py_DECREF(__pyx_kp___int__); __pyx_kp___int__ = 0;
  Py_DECREF(__pyx_kp___repr__); __pyx_kp___repr__ = 0;
  Py_DECREF(__pyx_kp___str__); __pyx_kp___str__ = 0;
  Py_DECREF(__pyx_kp_Get_error_code); __pyx_kp_Get_error_code = 0;
  Py_DECREF(__pyx_kp_property); __pyx_kp_property = 0;
  Py_DECREF(__pyx_kp_doc); __pyx_kp_doc = 0;
  Py_DECREF(__pyx_kp_error_code); __pyx_kp_error_code = 0;
  Py_DECREF(__pyx_kp_Get_error_class); __pyx_kp_Get_error_class = 0;
  Py_DECREF(__pyx_kp_error_class); __pyx_kp_error_class = 0;
  Py_DECREF(__pyx_kp_Get_error_string); __pyx_kp_Get_error_string = 0;
  Py_DECREF(__pyx_kp_error_string); __pyx_kp_error_string = 0;
  Py_DECREF(__pyx_kp_SUCCESS); __pyx_kp_SUCCESS = 0;
  Py_DECREF(__pyx_kp_ERR_LASTCODE); __pyx_kp_ERR_LASTCODE = 0;
  Py_DECREF(__pyx_kp_ERR_COMM); __pyx_kp_ERR_COMM = 0;
  Py_DECREF(__pyx_kp_ERR_GROUP); __pyx_kp_ERR_GROUP = 0;
  Py_DECREF(__pyx_kp_ERR_TYPE); __pyx_kp_ERR_TYPE = 0;
  Py_DECREF(__pyx_kp_ERR_REQUEST); __pyx_kp_ERR_REQUEST = 0;
  Py_DECREF(__pyx_kp_ERR_OP); __pyx_kp_ERR_OP = 0;
  Py_DECREF(__pyx_kp_ERR_BUFFER); __pyx_kp_ERR_BUFFER = 0;
  Py_DECREF(__pyx_kp_ERR_COUNT); __pyx_kp_ERR_COUNT = 0;
  Py_DECREF(__pyx_kp_ERR_TAG); __pyx_kp_ERR_TAG = 0;
  Py_DECREF(__pyx_kp_ERR_RANK); __pyx_kp_ERR_RANK = 0;
  Py_DECREF(__pyx_kp_ERR_ROOT); __pyx_kp_ERR_ROOT = 0;
  Py_DECREF(__pyx_kp_ERR_TRUNCATE); __pyx_kp_ERR_TRUNCATE = 0;
  Py_DECREF(__pyx_kp_ERR_IN_STATUS); __pyx_kp_ERR_IN_STATUS = 0;
  Py_DECREF(__pyx_kp_ERR_PENDING); __pyx_kp_ERR_PENDING = 0;
  Py_DECREF(__pyx_kp_ERR_TOPOLOGY); __pyx_kp_ERR_TOPOLOGY = 0;
  Py_DECREF(__pyx_kp_ERR_DIMS); __pyx_kp_ERR_DIMS = 0;
  Py_DECREF(__pyx_kp_ERR_ARG); __pyx_kp_ERR_ARG = 0;
  Py_DECREF(__pyx_kp_ERR_OTHER); __pyx_kp_ERR_OTHER = 0;
  Py_DECREF(__pyx_kp_ERR_UNKNOWN); __pyx_kp_ERR_UNKNOWN = 0;
  Py_DECREF(__pyx_kp_ERR_INTERN); __pyx_kp_ERR_INTERN = 0;
  Py_DECREF(__pyx_kp_ERR_INFO); __pyx_kp_ERR_INFO = 0;
  Py_DECREF(__pyx_kp_ERR_FILE); __pyx_kp_ERR_FILE = 0;
  Py_DECREF(__pyx_kp_ERR_WIN); __pyx_kp_ERR_WIN = 0;
  Py_DECREF(__pyx_kp_ERR_KEYVAL); __pyx_kp_ERR_KEYVAL = 0;
  Py_DECREF(__pyx_kp_ERR_INFO_KEY); __pyx_kp_ERR_INFO_KEY = 0;
  Py_DECREF(__pyx_kp_ERR_INFO_VALUE); __pyx_kp_ERR_INFO_VALUE = 0;
  Py_DECREF(__pyx_kp_ERR_INFO_NOKEY); __pyx_kp_ERR_INFO_NOKEY = 0;
  Py_DECREF(__pyx_kp_ERR_ACCESS); __pyx_kp_ERR_ACCESS = 0;
  Py_DECREF(__pyx_kp_ERR_AMODE); __pyx_kp_ERR_AMODE = 0;
  Py_DECREF(__pyx_kp_ERR_BAD_FILE); __pyx_kp_ERR_BAD_FILE = 0;
  Py_DECREF(__pyx_kp_ERR_FILE_EXISTS); __pyx_kp_ERR_FILE_EXISTS = 0;
  Py_DECREF(__pyx_kp_ERR_FILE_IN_USE); __pyx_kp_ERR_FILE_IN_USE = 0;
  Py_DECREF(__pyx_kp_ERR_NO_SPACE); __pyx_kp_ERR_NO_SPACE = 0;
  Py_DECREF(__pyx_kp_ERR_NO_SUCH_FILE); __pyx_kp_ERR_NO_SUCH_FILE = 0;
  Py_DECREF(__pyx_kp_ERR_IO); __pyx_kp_ERR_IO = 0;
  Py_DECREF(__pyx_kp_ERR_READ_ONLY); __pyx_kp_ERR_READ_ONLY = 0;
  Py_DECREF(__pyx_kp_ERR_CONVERSION); __pyx_kp_ERR_CONVERSION = 0;
  Py_DECREF(__pyx_kp_ERR_DUP_DATAREP); __pyx_kp_ERR_DUP_DATAREP = 0;
  Py_DECREF(__pyx_kp_58); __pyx_kp_58 = 0;
  Py_DECREF(__pyx_kp_59); __pyx_kp_59 = 0;
  Py_DECREF(__pyx_kp_ERR_NAME); __pyx_kp_ERR_NAME = 0;
  Py_DECREF(__pyx_kp_ERR_NO_MEM); __pyx_kp_ERR_NO_MEM = 0;
  Py_DECREF(__pyx_kp_ERR_NOT_SAME); __pyx_kp_ERR_NOT_SAME = 0;
  Py_DECREF(__pyx_kp_ERR_PORT); __pyx_kp_ERR_PORT = 0;
  Py_DECREF(__pyx_kp_ERR_QUOTA); __pyx_kp_ERR_QUOTA = 0;
  Py_DECREF(__pyx_kp_ERR_SERVICE); __pyx_kp_ERR_SERVICE = 0;
  Py_DECREF(__pyx_kp_ERR_SPAWN); __pyx_kp_ERR_SPAWN = 0;
  Py_DECREF(__pyx_kp_ERR_BASE); __pyx_kp_ERR_BASE = 0;
  Py_DECREF(__pyx_kp_ERR_LOCKTYPE); __pyx_kp_ERR_LOCKTYPE = 0;
  Py_DECREF(__pyx_kp_ERR_RMA_CONFLICT); __pyx_kp_ERR_RMA_CONFLICT = 0;
  Py_DECREF(__pyx_kp_ERR_RMA_SYNC); __pyx_kp_ERR_RMA_SYNC = 0;
  Py_DECREF(__pyx_kp_ERR_SIZE); __pyx_kp_ERR_SIZE = 0;
  Py_DECREF(__pyx_kp_ERR_DISP); __pyx_kp_ERR_DISP = 0;
  Py_DECREF(__pyx_kp_ERR_ASSERT); __pyx_kp_ERR_ASSERT = 0;
  Py_DECREF(__pyx_kp_ERRHANDLER_NULL); __pyx_kp_ERRHANDLER_NULL = 0;
  Py_DECREF(__pyx_kp_ERRORS_RETURN); __pyx_kp_ERRORS_RETURN = 0;
  Py_DECREF(__pyx_kp_ERRORS_ARE_FATAL); __pyx_kp_ERRORS_ARE_FATAL = 0;
  Py_DECREF(__pyx_kp_ORDER_C); __pyx_kp_ORDER_C = 0;
  Py_DECREF(__pyx_kp_ORDER_FORTRAN); __pyx_kp_ORDER_FORTRAN = 0;
  Py_DECREF(__pyx_kp_ORDER_F); __pyx_kp_ORDER_F = 0;
  Py_DECREF(__pyx_kp_TYPECLASS_INTEGER); __pyx_kp_TYPECLASS_INTEGER = 0;
  Py_DECREF(__pyx_kp_TYPECLASS_REAL); __pyx_kp_TYPECLASS_REAL = 0;
  Py_DECREF(__pyx_kp_TYPECLASS_COMPLEX); __pyx_kp_TYPECLASS_COMPLEX = 0;
  Py_DECREF(__pyx_kp_DISTRIBUTE_NONE); __pyx_kp_DISTRIBUTE_NONE = 0;
  Py_DECREF(__pyx_kp_DISTRIBUTE_BLOCK); __pyx_kp_DISTRIBUTE_BLOCK = 0;
  Py_DECREF(__pyx_kp_DISTRIBUTE_CYCLIC); __pyx_kp_DISTRIBUTE_CYCLIC = 0;
  Py_DECREF(__pyx_kp_60); __pyx_kp_60 = 0;
  Py_DECREF(__pyx_kp_DATATYPE_NULL); __pyx_kp_DATATYPE_NULL = 0;
  Py_DECREF(__pyx_kp_CHAR); __pyx_kp_CHAR = 0;
  Py_DECREF(__pyx_kp_WCHAR); __pyx_kp_WCHAR = 0;
  Py_DECREF(__pyx_kp_SIGNED_CHAR); __pyx_kp_SIGNED_CHAR = 0;
  Py_DECREF(__pyx_kp_UNSIGNED_CHAR); __pyx_kp_UNSIGNED_CHAR = 0;
  Py_DECREF(__pyx_kp_SHORT); __pyx_kp_SHORT = 0;
  Py_DECREF(__pyx_kp_UNSIGNED_SHORT); __pyx_kp_UNSIGNED_SHORT = 0;
  Py_DECREF(__pyx_kp_INT); __pyx_kp_INT = 0;
  Py_DECREF(__pyx_kp_UNSIGNED); __pyx_kp_UNSIGNED = 0;
  Py_DECREF(__pyx_kp_LONG); __pyx_kp_LONG = 0;
  Py_DECREF(__pyx_kp_UNSIGNED_LONG); __pyx_kp_UNSIGNED_LONG = 0;
  Py_DECREF(__pyx_kp_FLOAT); __pyx_kp_FLOAT = 0;
  Py_DECREF(__pyx_kp_DOUBLE); __pyx_kp_DOUBLE = 0;
  Py_DECREF(__pyx_kp_LONG_DOUBLE); __pyx_kp_LONG_DOUBLE = 0;
  Py_DECREF(__pyx_kp_BYTE); __pyx_kp_BYTE = 0;
  Py_DECREF(__pyx_kp_PACKED); __pyx_kp_PACKED = 0;
  Py_DECREF(__pyx_kp_SHORT_INT); __pyx_kp_SHORT_INT = 0;
  Py_DECREF(__pyx_kp_TWOINT); __pyx_kp_TWOINT = 0;
  Py_DECREF(__pyx_kp_LONG_INT); __pyx_kp_LONG_INT = 0;
  Py_DECREF(__pyx_kp_FLOAT_INT); __pyx_kp_FLOAT_INT = 0;
  Py_DECREF(__pyx_kp_DOUBLE_INT); __pyx_kp_DOUBLE_INT = 0;
  Py_DECREF(__pyx_kp_LONG_DOUBLE_INT); __pyx_kp_LONG_DOUBLE_INT = 0;
  Py_DECREF(__pyx_kp_LONG_LONG); __pyx_kp_LONG_LONG = 0;
  Py_DECREF(__pyx_kp_UNSIGNED_LONG_LONG); __pyx_kp_UNSIGNED_LONG_LONG = 0;
  Py_DECREF(__pyx_kp_LONG_LONG_INT); __pyx_kp_LONG_LONG_INT = 0;
  Py_DECREF(__pyx_kp_CHARACTER); __pyx_kp_CHARACTER = 0;
  Py_DECREF(__pyx_kp_LOGICAL); __pyx_kp_LOGICAL = 0;
  Py_DECREF(__pyx_kp_INTEGER); __pyx_kp_INTEGER = 0;
  Py_DECREF(__pyx_kp_REAL); __pyx_kp_REAL = 0;
  Py_DECREF(__pyx_kp_DOUBLE_PRECISION); __pyx_kp_DOUBLE_PRECISION = 0;
  Py_DECREF(__pyx_kp_F_COMPLEX); __pyx_kp_F_COMPLEX = 0;
  Py_DECREF(__pyx_kp_F_DOUBLE_COMPLEX); __pyx_kp_F_DOUBLE_COMPLEX = 0;
  Py_DECREF(__pyx_kp_UB); __pyx_kp_UB = 0;
  Py_DECREF(__pyx_kp_LB); __pyx_kp_LB = 0;
  Py_DECREF(__pyx_kp_UNSIGNED_INT); __pyx_kp_UNSIGNED_INT = 0;
  Py_DECREF(__pyx_kp_INT_INT); __pyx_kp_INT_INT = 0;
  Py_DECREF(__pyx_kp_REQUEST_NULL); __pyx_kp_REQUEST_NULL = 0;
  Py_DECREF(__pyx_kp_INFO_NULL); __pyx_kp_INFO_NULL = 0;
  Py_DECREF(__pyx_kp_OP_NULL); __pyx_kp_OP_NULL = 0;
  Py_DECREF(__pyx_kp_MAX); __pyx_kp_MAX = 0;
  Py_DECREF(__pyx_kp_MIN); __pyx_kp_MIN = 0;
  Py_DECREF(__pyx_kp_SUM); __pyx_kp_SUM = 0;
  Py_DECREF(__pyx_kp_PROD); __pyx_kp_PROD = 0;
  Py_DECREF(__pyx_kp_LAND); __pyx_kp_LAND = 0;
  Py_DECREF(__pyx_kp_BAND); __pyx_kp_BAND = 0;
  Py_DECREF(__pyx_kp_LOR); __pyx_kp_LOR = 0;
  Py_DECREF(__pyx_kp_BOR); __pyx_kp_BOR = 0;
  Py_DECREF(__pyx_kp_LXOR); __pyx_kp_LXOR = 0;
  Py_DECREF(__pyx_kp_BXOR); __pyx_kp_BXOR = 0;
  Py_DECREF(__pyx_kp_MAXLOC); __pyx_kp_MAXLOC = 0;
  Py_DECREF(__pyx_kp_MINLOC); __pyx_kp_MINLOC = 0;
  Py_DECREF(__pyx_kp_REPLACE); __pyx_kp_REPLACE = 0;
  Py_DECREF(__pyx_kp_GROUP_NULL); __pyx_kp_GROUP_NULL = 0;
  Py_DECREF(__pyx_kp_GROUP_EMPTY); __pyx_kp_GROUP_EMPTY = 0;
  Py_DECREF(__pyx_kp_IDENT); __pyx_kp_IDENT = 0;
  Py_DECREF(__pyx_kp_CONGRUENT); __pyx_kp_CONGRUENT = 0;
  Py_DECREF(__pyx_kp_SIMILAR); __pyx_kp_SIMILAR = 0;
  Py_DECREF(__pyx_kp_UNEQUAL); __pyx_kp_UNEQUAL = 0;
  Py_DECREF(__pyx_kp_CART); __pyx_kp_CART = 0;
  Py_DECREF(__pyx_kp_GRAPH); __pyx_kp_GRAPH = 0;
  Py_DECREF(__pyx_kp_COMM_NULL); __pyx_kp_COMM_NULL = 0;
  Py_DECREF(__pyx_kp_COMM_SELF); __pyx_kp_COMM_SELF = 0;
  Py_DECREF(__pyx_kp_COMM_WORLD); __pyx_kp_COMM_WORLD = 0;
  Py_DECREF(__pyx_kp_BSEND_OVERHEAD); __pyx_kp_BSEND_OVERHEAD = 0;
  Py_DECREF(__pyx_kp_MODE_NOCHECK); __pyx_kp_MODE_NOCHECK = 0;
  Py_DECREF(__pyx_kp_MODE_NOSTORE); __pyx_kp_MODE_NOSTORE = 0;
  Py_DECREF(__pyx_kp_MODE_NOPUT); __pyx_kp_MODE_NOPUT = 0;
  Py_DECREF(__pyx_kp_MODE_NOPRECEDE); __pyx_kp_MODE_NOPRECEDE = 0;
  Py_DECREF(__pyx_kp_MODE_NOSUCCEED); __pyx_kp_MODE_NOSUCCEED = 0;
  Py_DECREF(__pyx_kp_LOCK_EXCLUSIVE); __pyx_kp_LOCK_EXCLUSIVE = 0;
  Py_DECREF(__pyx_kp_LOCK_SHARED); __pyx_kp_LOCK_SHARED = 0;
  Py_DECREF(__pyx_kp_WIN_NULL); __pyx_kp_WIN_NULL = 0;
  Py_DECREF(__pyx_kp_MODE_RDONLY); __pyx_kp_MODE_RDONLY = 0;
  Py_DECREF(__pyx_kp_MODE_WRONLY); __pyx_kp_MODE_WRONLY = 0;
  Py_DECREF(__pyx_kp_MODE_RDWR); __pyx_kp_MODE_RDWR = 0;
  Py_DECREF(__pyx_kp_MODE_CREATE); __pyx_kp_MODE_CREATE = 0;
  Py_DECREF(__pyx_kp_MODE_EXCL); __pyx_kp_MODE_EXCL = 0;
  Py_DECREF(__pyx_kp_82); __pyx_kp_82 = 0;
  Py_DECREF(__pyx_kp_MODE_UNIQUE_OPEN); __pyx_kp_MODE_UNIQUE_OPEN = 0;
  Py_DECREF(__pyx_kp_MODE_SEQUENTIAL); __pyx_kp_MODE_SEQUENTIAL = 0;
  Py_DECREF(__pyx_kp_MODE_APPEND); __pyx_kp_MODE_APPEND = 0;
  Py_DECREF(__pyx_kp_SEEK_SET); __pyx_kp_SEEK_SET = 0;
  Py_DECREF(__pyx_kp_SEEK_CUR); __pyx_kp_SEEK_CUR = 0;
  Py_DECREF(__pyx_kp_SEEK_END); __pyx_kp_SEEK_END = 0;
  Py_DECREF(__pyx_kp_83); __pyx_kp_83 = 0;
  Py_DECREF(__pyx_kp_DISP_CUR); __pyx_kp_DISP_CUR = 0;
  Py_DECREF(__pyx_kp_FILE_NULL); __pyx_kp_FILE_NULL = 0;
  Py_DECREF(__pyx_kp_UNDEFINED); __pyx_kp_UNDEFINED = 0;
  Py_DECREF(__pyx_kp_ANY_SOURCE); __pyx_kp_ANY_SOURCE = 0;
  Py_DECREF(__pyx_kp_ANY_TAG); __pyx_kp_ANY_TAG = 0;
  Py_DECREF(__pyx_kp_PROC_NULL); __pyx_kp_PROC_NULL = 0;
  Py_DECREF(__pyx_kp_ROOT); __pyx_kp_ROOT = 0;
  Py_DECREF(__pyx_kp_BOTTOM); __pyx_kp_BOTTOM = 0;
  Py_DECREF(__pyx_kp_IN_PLACE); __pyx_kp_IN_PLACE = 0;
  Py_DECREF(__pyx_kp_KEYVAL_INVALID); __pyx_kp_KEYVAL_INVALID = 0;
  Py_DECREF(__pyx_kp_TAG_UB); __pyx_kp_TAG_UB = 0;
  Py_DECREF(__pyx_kp_HOST); __pyx_kp_HOST = 0;
  Py_DECREF(__pyx_kp_IO); __pyx_kp_IO = 0;
  Py_DECREF(__pyx_kp_WTIME_IS_GLOBAL); __pyx_kp_WTIME_IS_GLOBAL = 0;
  Py_DECREF(__pyx_kp_UNIVERSE_SIZE); __pyx_kp_UNIVERSE_SIZE = 0;
  Py_DECREF(__pyx_kp_APPNUM); __pyx_kp_APPNUM = 0;
  Py_DECREF(__pyx_kp_LASTUSEDCODE); __pyx_kp_LASTUSEDCODE = 0;
  Py_DECREF(__pyx_kp_WIN_BASE); __pyx_kp_WIN_BASE = 0;
  Py_DECREF(__pyx_kp_WIN_SIZE); __pyx_kp_WIN_SIZE = 0;
  Py_DECREF(__pyx_kp_WIN_DISP_UNIT); __pyx_kp_WIN_DISP_UNIT = 0;
  Py_DECREF(__pyx_kp_THREAD_SINGLE); __pyx_kp_THREAD_SINGLE = 0;
  Py_DECREF(__pyx_kp_THREAD_FUNNELED); __pyx_kp_THREAD_FUNNELED = 0;
  Py_DECREF(__pyx_kp_THREAD_SERIALIZED); __pyx_kp_THREAD_SERIALIZED = 0;
  Py_DECREF(__pyx_kp_THREAD_MULTIPLE); __pyx_kp_THREAD_MULTIPLE = 0;
  Py_DECREF(__pyx_kp_VERSION); __pyx_kp_VERSION = 0;
  Py_DECREF(__pyx_kp_SUBVERSION); __pyx_kp_SUBVERSION = 0;
  Py_DECREF(__pyx_kp_MAX_PROCESSOR_NAME); __pyx_kp_MAX_PROCESSOR_NAME = 0;
  Py_DECREF(__pyx_kp_MAX_ERROR_STRING); __pyx_kp_MAX_ERROR_STRING = 0;
  Py_DECREF(__pyx_kp_MAX_PORT_NAME); __pyx_kp_MAX_PORT_NAME = 0;
  Py_DECREF(__pyx_kp_MAX_INFO_KEY); __pyx_kp_MAX_INFO_KEY = 0;
  Py_DECREF(__pyx_kp_MAX_INFO_VAL); __pyx_kp_MAX_INFO_VAL = 0;
  Py_DECREF(__pyx_kp_MAX_OBJECT_NAME); __pyx_kp_MAX_OBJECT_NAME = 0;
  Py_DECREF(__pyx_kp_MAX_DATAREP_STRING); __pyx_kp_MAX_DATAREP_STRING = 0;
  Py_DECREF(__pyx_kp_warnings); __pyx_kp_warnings = 0;
  Py_DECREF(__pyx_kp_warn); __pyx_kp_warn = 0;
  Py_DECREF(__pyx_kp_93); __pyx_kp_93 = 0;
  Py_DECREF(__pyx_kp_rc); __pyx_kp_rc = 0;
  Py_DECREF(__pyx_kp_94); __pyx_kp_94 = 0;
  Py_DECREF(__pyx_kp_initialize); __pyx_kp_initialize = 0;
  Py_DECREF(__pyx_kp_threaded); __pyx_kp_threaded = 0;
  Py_DECREF(__pyx_kp_thread_level); __pyx_kp_thread_level = 0;
  Py_DECREF(__pyx_kp_finalize); __pyx_kp_finalize = 0;
  Py_DECREF(__pyx_kp_95); __pyx_kp_95 = 0;
  Py_DECREF(__pyx_kp_96); __pyx_kp_96 = 0;
  Py_DECREF(__pyx_kp_97); __pyx_kp_97 = 0;
  Py_DECREF(__pyx_kp_98); __pyx_kp_98 = 0;
  Py_DECREF(__pyx_kp_99); __pyx_kp_99 = 0;
  Py_DECREF(__pyx_kp_100); __pyx_kp_100 = 0;
  Py_DECREF(__pyx_kp_101); __pyx_kp_101 = 0;
  Py_DECREF(__pyx_kp_102); __pyx_kp_102 = 0;
  Py_DECREF(__pyx_kp_103); __pyx_kp_103 = 0;
  Py_DECREF(__pyx_kp_104); __pyx_kp_104 = 0;
  Py_DECREF(__pyx_kp_105); __pyx_kp_105 = 0;
  Py_DECREF(__pyx_kp_106); __pyx_kp_106 = 0;
  Py_DECREF(__pyx_kp_107); __pyx_kp_107 = 0;
  Py_DECREF(__pyx_kp_108); __pyx_kp_108 = 0;
  Py_DECREF(__pyx_kp_MemoryError); __pyx_kp_MemoryError = 0;
  Py_DECREF(__pyx_kp_max); __pyx_kp_max = 0;
  Py_DECREF(__pyx_kp_min); __pyx_kp_min = 0;
  Py_DECREF(__pyx_kp_TypeError); __pyx_kp_TypeError = 0;
  Py_DECREF(__pyx_kp_ValueError); __pyx_kp_ValueError = 0;
  Py_DECREF(__pyx_kp_zip); __pyx_kp_zip = 0;
  Py_DECREF(__pyx_kp_range); __pyx_kp_range = 0;
  Py_DECREF(__pyx_kp_pop); __pyx_kp_pop = 0;
  Py_DECREF(__pyx_kp_insert); __pyx_kp_insert = 0;
  Py_DECREF(__pyx_kp_join); __pyx_kp_join = 0;
  Py_DECREF(__pyx_kp_ob_mpi); __pyx_kp_ob_mpi = 0;
  Py_DECREF(__pyx_kp_NotImplemented); __pyx_kp_NotImplemented = 0;
  Py_DECREF(__pyx_kp_KeyError); __pyx_kp_KeyError = 0;
  Py_DECREF(__pyx_kp_137); __pyx_kp_137 = 0;
  Py_DECREF(__pyx_kp_NotImplementedError); __pyx_kp_NotImplementedError = 0;
  Py_DECREF((PyObject *)__pyx_k_63); __pyx_k_63 = 0;
  Py_DECREF((PyObject *)__pyx_k_64); __pyx_k_64 = 0;
  Py_DECREF((PyObject *)__pyx_k_65); __pyx_k_65 = 0;
  Py_DECREF((PyObject *)__pyx_k_66); __pyx_k_66 = 0;
  Py_DECREF(__pyx_k_67); __pyx_k_67 = 0;
  Py_DECREF(__pyx_k_68); __pyx_k_68 = 0;
  Py_DECREF((PyObject *)__pyx_k_69); __pyx_k_69 = 0;
  Py_DECREF((PyObject *)__pyx_k_70); __pyx_k_70 = 0;
  Py_DECREF(__pyx_k_71); __pyx_k_71 = 0;
  Py_DECREF(__pyx_k_72); __pyx_k_72 = 0;
  Py_DECREF((PyObject *)__pyx_k_73); __pyx_k_73 = 0;
  Py_DECREF((PyObject *)__pyx_k_74); __pyx_k_74 = 0;
  Py_DECREF((PyObject *)__pyx_k_75); __pyx_k_75 = 0;
  Py_DECREF((PyObject *)__pyx_k_76); __pyx_k_76 = 0;
  Py_DECREF((PyObject *)__pyx_k_77); __pyx_k_77 = 0;
  Py_DECREF((PyObject *)__pyx_k_78); __pyx_k_78 = 0;
  Py_DECREF((PyObject *)__pyx_k_79); __pyx_k_79 = 0;
  Py_DECREF((PyObject *)__pyx_k_80); __pyx_k_80 = 0;
  Py_DECREF((PyObject *)__pyx_k_81); __pyx_k_81 = 0;
  Py_DECREF((PyObject *)__pyx_k_85); __pyx_k_85 = 0;
  Py_DECREF((PyObject *)__pyx_k_86); __pyx_k_86 = 0;
  Py_DECREF((PyObject *)__pyx_k_87); __pyx_k_87 = 0;
  Py_DECREF((PyObject *)__pyx_k_90); __pyx_k_90 = 0;
  Py_INCREF(Py_None); return Py_None;
}

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

/* Runtime support code */

static void __pyx_init_filenames(void) {
  __pyx_f = __pyx_filenames;
}


static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
    if (!type) {
        PyErr_Format(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (obj == Py_None || PyObject_TypeCheck(obj, type))
        return 1;
    PyErr_Format(PyExc_TypeError, "Cannot convert %s to %s",
        Py_TYPE(obj)->tp_name, type->tp_name);
    return 0;
}


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 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 *number, *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";
    }
    number = (num_expected == 1) ? "" : "s";
    PyErr_Format(PyExc_TypeError,
        #if PY_VERSION_HEX < 0x02050000
            "%s() takes %s %d positional argument%s (%d given)",
        #else
            "%s() takes %s %zd positional argument%s (%zd given)",
        #endif
        func_name, more_or_less, num_expected, number, num_found);
}

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 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 INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyThreadState *tstate = PyThreadState_GET();

#if PY_MAJOR_VERSION >= 3
    /* Note: this is a temporary work-around to prevent crashes in Python 3.0 */
    if ((tstate->exc_type != NULL) & (tstate->exc_type != Py_None)) {
        tmp_type = tstate->exc_type;
        tmp_value = tstate->exc_value;
        tmp_tb = tstate->exc_traceback;
        PyErr_NormalizeException(&type, &value, &tb);
        PyErr_NormalizeException(&tmp_type, &tmp_value, &tmp_tb);
        tstate->exc_type = 0;
        tstate->exc_value = 0;
        tstate->exc_traceback = 0;
        PyException_SetContext(value, tmp_value);
        Py_DECREF(tmp_type);
        Py_XDECREF(tmp_tb);
    }
#endif

    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 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;
}


static 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 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 PyObject *__Pyx_Import(PyObject *name, PyObject *from_list) {
    PyObject *__import__ = 0;
    PyObject *empty_list = 0;
    PyObject *module = 0;
    PyObject *global_dict = 0;
    PyObject *empty_dict = 0;
    PyObject *list;
    __import__ = __Pyx_GetAttrString(__pyx_b, "__import__");
    if (!__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;
    module = PyObject_CallFunctionObjArgs(__import__,
        name, global_dict, empty_dict, list, NULL);
bad:
    Py_XDECREF(empty_list);
    Py_XDECREF(__import__);
    Py_XDECREF(empty_dict);
    return module;
}

static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
    PyObject *result;
    result = PyObject_GetAttr(dict, name);
    if (!result)
        PyErr_SetObject(PyExc_NameError, name);
    return result;
}

static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyThreadState *tstate = PyThreadState_GET();
    __Pyx_ErrFetch(type, value, tb);
    PyErr_NormalizeException(type, value, tb);
    if (PyErr_Occurred())
        goto bad;
    Py_INCREF(*type);
    Py_INCREF(*value);
    Py_INCREF(*tb);
    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;
    /* 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:
    Py_XDECREF(*type);
    Py_XDECREF(*value);
    Py_XDECREF(*tb);
    return -1;
}


static PyObject *__Pyx_CreateClass(
    PyObject *bases, PyObject *dict, PyObject *name, const char *modname)
{
    PyObject *py_modname;
    PyObject *result = 0;

    #if PY_MAJOR_VERSION < 3
    py_modname = PyString_FromString(modname);
    #else
    py_modname = PyUnicode_FromString(modname);
    #endif
    if (!py_modname)
        goto bad;
    if (PyDict_SetItemString(dict, "__module__", py_modname) < 0)
        goto bad;
    #if PY_MAJOR_VERSION < 3
    result = PyClass_New(bases, dict, name);
    #else
    result = PyObject_CallFunctionObjArgs((PyObject *)&PyType_Type, name, bases, dict, NULL);
    #endif
bad:
    Py_XDECREF(py_modname);
    return result;
}

static PyObject* __Pyx_Method_ClassMethod(PyObject *method) {
    /* It appears that PyMethodDescr_Type is not anywhere exposed in the Python/C API */
    /* if (!PyObject_TypeCheck(method, &PyMethodDescr_Type)) { */ 
    if (__Pyx_StrEq(Py_TYPE(method)->tp_name, "method_descriptor")) { /* cdef classes */
        PyMethodDescrObject *descr = (PyMethodDescrObject *)method;
        return PyDescr_NewClassMethod(descr->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);
    }
    PyErr_Format(PyExc_TypeError, "Class-level classmethod() can only be called on a method_descriptor or instance method.");
    return NULL;
}

static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb) {
    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;
}

static PyObject *__Pyx_UnpackItem(PyObject *iter, Py_ssize_t index) {
    PyObject *item;
    if (!(item = PyIter_Next(iter))) {
        if (!PyErr_Occurred()) {
            PyErr_Format(PyExc_ValueError,
                #if PY_VERSION_HEX < 0x02050000
                    "need more than %d values to unpack", (int)index);
                #else
                    "need more than %zd values to unpack", index);
                #endif
        }
    }
    return item;
}

static int __Pyx_EndUnpack(PyObject *iter) {
    PyObject *item;
    if ((item = PyIter_Next(iter))) {
        Py_DECREF(item);
        PyErr_SetString(PyExc_ValueError, "too many values to unpack");
        return -1;
    }
    else if (!PyErr_Occurred())
        return 0;
    else
        return -1;
}

static INLINE int __Pyx_StrEq(const char *s1, const char *s2) {
     while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
     return *s1 == *s2;
}

static void __Pyx_WriteUnraisable(const char *name) {
    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 int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
#if PY_VERSION_HEX < 0x02050000
    char *api = (char *)"__pyx_capi__";
#else
    const char *api = "__pyx_capi__";
#endif
    PyObject *d = 0;
    PyObject *cobj = 0;
    union {
        void (*fp)(void);
        void *p;
    } tmp;


    d = PyObject_GetAttrString(__pyx_m, api);
    if (!d) {
        PyErr_Clear();
        d = PyDict_New();
        if (!d)
            goto bad;
        Py_INCREF(d);
        if (PyModule_AddObject(__pyx_m, api, d) < 0)
            goto bad;
    }
    tmp.fp = f;
    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
    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) {
    PyObject *pycobj = 0;
    int result;
    
    pycobj = PyCObject_FromVoidPtr(vtable, 0);
    if (!pycobj)
        goto bad;
    if (PyDict_SetItemString(dict, "__pyx_vtable__", pycobj) < 0)
        goto bad;
    result = 0;
    goto done;

bad:
    result = -1;
done:
    Py_XDECREF(pycobj);
    return result;
}

#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) {
    PyObject *py_srcfile = 0;
    PyObject *py_funcname = 0;
    PyObject *py_globals = 0;
    PyObject *empty_string = 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;
    #if PY_MAJOR_VERSION < 3
    empty_string = PyString_FromStringAndSize("", 0);
    #else
    empty_string = PyBytes_FromStringAndSize("", 0);
    #endif
    if (!empty_string) 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,*/
        empty_string, /*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,*/
        empty_string  /*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(empty_string);
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}

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 int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION < 3
        if (t->is_unicode && (!t->is_identifier)) {
            *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_identifier || (t->is_unicode && t->intern)) {
            *t->p = PyUnicode_InternFromString(t->s);
        } else if (t->is_unicode) {
            *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 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 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 INLINE size_t __pyx_PyInt_AsSize_t(PyObject* b) {
   unsigned PY_LONG_LONG val = __pyx_PyInt_AsUnsignedLongLong(b);
   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 val;
}

static INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   if (x == Py_True) return 1;
   else if ((x == Py_False) | (x == Py_None)) return 0;
   else return PyObject_IsTrue(x);
}

static INLINE PY_LONG_LONG __pyx_PyInt_AsLongLong(PyObject* x) {
#if PY_VERSION_HEX < 0x03000000
    if (PyInt_CheckExact(x)) {
        return PyInt_AS_LONG(x);
    }
    else
#endif
    if (PyLong_CheckExact(x)) {
        return PyLong_AsLongLong(x);
    }
    else {
        PY_LONG_LONG val;
#if PY_VERSION_HEX < 0x03000000
        PyObject* tmp = PyNumber_Int(x);  if (!tmp) return (PY_LONG_LONG)-1;
        val = __pyx_PyInt_AsLongLong(tmp);
#else
        PyObject* tmp = PyNumber_Long(x); if (!tmp) return (PY_LONG_LONG)-1;
        val = PyLong_AsLongLong(tmp);
#endif
        Py_DECREF(tmp);
        return val;
    }
}

static INLINE unsigned PY_LONG_LONG __pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
#if PY_VERSION_HEX < 0x03000000
    if (PyInt_CheckExact(x)) {
        long val = PyInt_AS_LONG(x);
        if (unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError, "can't convert negative value to unsigned long long");
            return (unsigned PY_LONG_LONG)-1;
        }
        return val;
    }
    else
#endif
    if (PyLong_CheckExact(x)) {
        return PyLong_AsUnsignedLongLong(x);
    }
    else {
        unsigned PY_LONG_LONG val;
#if PY_VERSION_HEX < 0x03000000
        PyObject* tmp = PyNumber_Int(x);  if (!tmp) return (PY_LONG_LONG)-1;
        val = __pyx_PyInt_AsUnsignedLongLong(tmp);
#else
        PyObject* tmp = PyNumber_Long(x); if (!tmp) return (PY_LONG_LONG)-1;
        val = PyLong_AsUnsignedLongLong(tmp);
#endif
        Py_DECREF(tmp);
        return val;
    }
}


static INLINE unsigned char __pyx_PyInt_unsigned_char(PyObject* x) {
    if (sizeof(unsigned char) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        unsigned char val = (unsigned char)long_val;
        if (unlikely((val != long_val)  || (long_val < 0))) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to unsigned char");
            return (unsigned char)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE unsigned short __pyx_PyInt_unsigned_short(PyObject* x) {
    if (sizeof(unsigned short) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        unsigned short val = (unsigned short)long_val;
        if (unlikely((val != long_val)  || (long_val < 0))) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to unsigned short");
            return (unsigned short)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE char __pyx_PyInt_char(PyObject* x) {
    if (sizeof(char) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        char val = (char)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to char");
            return (char)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE short __pyx_PyInt_short(PyObject* x) {
    if (sizeof(short) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        short val = (short)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to short");
            return (short)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE int __pyx_PyInt_int(PyObject* x) {
    if (sizeof(int) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        int val = (int)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to int");
            return (int)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE long __pyx_PyInt_long(PyObject* x) {
    if (sizeof(long) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        long val = (long)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to long");
            return (long)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE signed char __pyx_PyInt_signed_char(PyObject* x) {
    if (sizeof(signed char) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        signed char val = (signed char)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to signed char");
            return (signed char)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE signed short __pyx_PyInt_signed_short(PyObject* x) {
    if (sizeof(signed short) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        signed short val = (signed short)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to signed short");
            return (signed short)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE signed int __pyx_PyInt_signed_int(PyObject* x) {
    if (sizeof(signed int) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        signed int val = (signed int)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to signed int");
            return (signed int)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE signed long __pyx_PyInt_signed_long(PyObject* x) {
    if (sizeof(signed long) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        signed long val = (signed long)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to signed long");
            return (signed long)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

static INLINE long double __pyx_PyInt_long_double(PyObject* x) {
    if (sizeof(long double) < sizeof(long)) {
        long long_val = __pyx_PyInt_AsLong(x);
        long double val = (long double)long_val;
        if (unlikely((val != long_val) )) {
            PyErr_SetString(PyExc_OverflowError, "value too large to convert to long double");
            return (long double)-1;
        }
        return val;
    }
    else {
        return __pyx_PyInt_AsLong(x);
    }
}

