@@ -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' ])
762761class 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' )
778799class 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' ])
13851433class 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' ])
21402210class TypeGroup (Type ):
0 commit comments