Skip to content

Commit 2d92fcd

Browse files
committed
add inouts for op, errhandler, info
Signed-off-by: Howard Pritchard <[email protected]>
1 parent 509b988 commit 2d92fcd

File tree

4 files changed

+74
-4
lines changed

4 files changed

+74
-4
lines changed

ompi/mpi/bindings/ompi_bindings/c_type.py

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -757,7 +757,6 @@ class TypeOpOut(Type):
757757
def type_text(self, enable_count=False):
758758
return 'MPI_Op *'
759759

760-
761760
@Type.add_type('OP_OUT', abi_type=['standard'])
762761
class TypeOpOutStandard(StandardABIType):
763762

@@ -773,6 +772,28 @@ def type_text(self, enable_count=False):
773772
def argument(self):
774773
return f'(MPI_Op *) {self.name}'
775774

775+
@Type.add_type('OP_INOUT', abi_type=['ompi'])
776+
class TypeOpInOut(TypeOpOut):
777+
pass
778+
779+
@Type.add_type('OP_INOUT', abi_type=['standard'])
780+
class TypeOpOutStandard(StandardABIType):
781+
782+
@property
783+
def init_code(self):
784+
return [f'MPI_Op {self.tmpname} = (NULL != {self.name}) ? {ConvertFuncs.OP}(*{self.name}) : MPI_OP_NULL;']
785+
786+
@property
787+
def final_code(self):
788+
return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.OP}((MPI_Op) {self.tmpname});']
789+
790+
def type_text(self, enable_count=False):
791+
type_name = self.mangle_name('MPI_Op')
792+
return f'{type_name} *'
793+
794+
@property
795+
def argument(self):
796+
return f'(MPI_Op *) (NULL != {self.name} ? &{self.tmpname} : NULL)'
776797

777798
@Type.add_type('RANK')
778799
class TypeRank(Type):
@@ -1380,7 +1401,34 @@ def type_text(self, enable_count=False):
13801401
type_name = self.mangle_name('MPI_Info')
13811402
return f'{type_name} *'
13821403

1404+
@Type.add_type('INFO_INOUT', abi_type=['ompi'])
1405+
class TypeInfoInOut(TypeInfoOut):
1406+
pass
1407+
1408+
@Type.add_type('INFO_INOUT', abi_type=['standard'])
1409+
class TypeInfoInOutStandard(StandardABIType):
13831410

1411+
@property
1412+
def init_code(self):
1413+
return [f'MPI_Info {self.tmpname} = (NULL != {self.name}) ? {ConvertFuncs.INFO}(*{self.name}) : MPI_INFO_NULL;']
1414+
1415+
@property
1416+
def final_code(self):
1417+
return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.INFO}((MPI_Info) {self.tmpname});']
1418+
1419+
@property
1420+
def argument(self):
1421+
return f'(MPI_Info *) (NULL != {self.name} ? &{self.tmpname} : NULL)'
1422+
1423+
def type_text(self, enable_count=False):
1424+
type_name = self.mangle_name('MPI_Info')
1425+
return f'{type_name} *'
1426+
1427+
@property
1428+
def argument(self):
1429+
return f'(MPI_Info *) (NULL != {self.name} ? &{self.tmpname} : NULL)'
1430+
1431+
13841432
@Type.add_type('INFO_ARRAY', abi_type=['ompi'])
13851433
class TypeInfoArray(Type):
13861434

@@ -2135,6 +2183,28 @@ def type_text(self, enable_count=False):
21352183
type_name = self.mangle_name('MPI_Errhandler')
21362184
return f'{type_name} *'
21372185

2186+
@Type.add_type('ERRHANDLER_INOUT', abi_type=['ompi'])
2187+
class TypeErrhandlerInOut(TypeErrhandlerOut):
2188+
pass
2189+
2190+
@Type.add_type('ERRHANDLER_INOUT', abi_type=['standard'])
2191+
class TypeErrhandlerInOutStandard(StandardABIType):
2192+
2193+
@property
2194+
def init_code(self):
2195+
return [f'MPI_Errhandler {self.tmpname} = (NULL != {self.name}) ? {ConvertFuncs.ERRHANDLER}(*{self.name}) : MPI_ERRHANDLER_NULL;']
2196+
2197+
@property
2198+
def final_code(self):
2199+
return [f'if (NULL != {self.name}) *{self.name} = {ConvertOMPIToStandard.ERRHANDLER}((MPI_Errhandler) {self.tmpname});']
2200+
2201+
def type_text(self, enable_count=False):
2202+
type_name = self.mangle_name('MPI_Errhandler')
2203+
return f'{type_name} *'
2204+
2205+
@property
2206+
def argument(self):
2207+
return f'(MPI_Errhandler *) (NULL != {self.name} ? &{self.tmpname} : NULL)'
21382208

21392209
@Type.add_type('GROUP', abi_type=['ompi'])
21402210
class TypeGroup(Type):

ompi/mpi/c/errhandler_free.c.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
#include "ompi/communicator/communicator.h"
2828
#include "ompi/errhandler/errhandler.h"
2929

30-
PROTOTYPE ERROR_CLASS errhandler_free(ERRHANDLER_OUT errhandler)
30+
PROTOTYPE ERROR_CLASS errhandler_free(ERRHANDLER_INOUT errhandler)
3131
{
3232
/* Error checking */
3333

ompi/mpi/c/info_free.c.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
*
4141
* Upon successful completion, 'info' will be set to 'MPI_INFO_NULL'.
4242
*/
43-
PROTOTYPE ERROR_CLASS info_free(INFO_OUT info)
43+
PROTOTYPE ERROR_CLASS info_free(INFO_INOUT info)
4444
{
4545
int err;
4646

ompi/mpi/c/op_free.c.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
#include "ompi/errhandler/errhandler.h"
2929
#include "ompi/op/op.h"
3030

31-
PROTOTYPE ERROR_CLASS op_free(OP_OUT op)
31+
PROTOTYPE ERROR_CLASS op_free(OP_INOUT op)
3232
{
3333
/* Error checking */
3434

0 commit comments

Comments
 (0)