1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
# --------------------------------------------------------------------
# Datatype
cdef api object PyMPIDatatype_New(MPI_Datatype arg):
cdef Datatype obj = Datatype()
obj.ob_mpi = arg
return obj
cdef api MPI_Datatype* PyMPIDatatype_Get(object arg) except NULL:
return &(<Datatype?>arg).ob_mpi
# --------------------------------------------------------------------
# Status
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):
obj.ob_mpi = arg[0]
else: pass # XXX should fail ?
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
# --------------------------------------------------------------------
# Request
cdef api object PyMPIRequest_New(MPI_Request arg):
cdef Request obj = Request()
obj.ob_mpi = arg
return obj
cdef api MPI_Request* PyMPIRequest_Get(object arg) except NULL:
return &(<Request?>arg).ob_mpi
# --------------------------------------------------------------------
# Op
cdef api object PyMPIOp_New(MPI_Op arg):
cdef Op obj = Op()
obj.ob_mpi = arg
return obj
cdef api MPI_Op* PyMPIOp_Get(object arg) except NULL:
return &(<Op?>arg).ob_mpi
# --------------------------------------------------------------------
# Info
cdef api object PyMPIInfo_New(MPI_Info arg):
cdef Info obj = Info()
obj.ob_mpi = arg
return obj
cdef api MPI_Info* PyMPIInfo_Get(object arg) except NULL:
return &(<Info?>arg).ob_mpi
# --------------------------------------------------------------------
# Group
cdef api object PyMPIGroup_New(MPI_Group arg):
cdef Group obj = Group()
obj.ob_mpi = arg
return obj
cdef api MPI_Group* PyMPIGroup_Get(object arg) except NULL:
return &(<Group?>arg).ob_mpi
# --------------------------------------------------------------------
# Comm
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:
CHKERR( MPI_Comm_test_inter(arg, &inter) )
if inter:
cls = Intercomm
else:
CHKERR( MPI_Topo_test(arg, &topo) )
if topo == <int>MPI_UNDEFINED:
cls = Intracomm
elif topo == <int>MPI_CART:
cls = Cartcomm
elif topo == <int>MPI_GRAPH:
cls = Graphcomm
cdef Comm obj = cls()
obj.ob_mpi = arg
return obj
cdef api MPI_Comm* PyMPIComm_Get(object arg) except NULL:
return &(<Comm?>arg).ob_mpi
# --------------------------------------------------------------------
# Win
cdef api object PyMPIWin_New(MPI_Win arg):
cdef Win obj = Win()
obj.ob_mpi = arg
return obj
cdef api MPI_Win* PyMPIWin_Get(object arg) except NULL:
return &(<Win?>arg).ob_mpi
# --------------------------------------------------------------------
# File
cdef api object PyMPIFile_New(MPI_File arg):
cdef File obj = File()
obj.ob_mpi = arg
return obj
cdef api MPI_File* PyMPIFile_Get(object arg) except NULL:
return &(<File?>arg).ob_mpi
# --------------------------------------------------------------------
# Errhandler
cdef api object PyMPIErrhandler_New(MPI_Errhandler arg):
cdef Errhandler obj = Errhandler()
obj.ob_mpi = arg
return obj
cdef api MPI_Errhandler* PyMPIErrhandler_Get(object arg) except NULL:
return &(<Errhandler?>arg).ob_mpi
# --------------------------------------------------------------------
|