@@ -507,32 +507,42 @@ def declare(self):
507
507
def declare_cbinding_fortran (self ):
508
508
return f'INTEGER, INTENT(OUT) :: { self .name } '
509
509
510
-
511
510
@FortranType .add ('COMM_INOUT' )
512
511
class CommInOutType (CommType ):
513
512
def declare (self ):
514
513
if self .gen_f90 == False :
515
514
return f'TYPE(MPI_Comm), INTENT(INOUT) :: { self .name } '
516
515
else :
517
516
return f'INTEGER, INTENT(INOUT) :: { self .name } '
518
-
519
517
def declare_cbinding_fortran (self ):
520
518
return f'INTEGER, INTENT(INOUT) :: { self .name } '
521
519
520
+ def argument (self ):
521
+ return f'{ self .name } %MPI_VAL'
522
+
523
+ def use (self ):
524
+ return [('mpi_f08_types' , 'MPI_Comm' )]
525
+
526
+ def c_parameter (self ):
527
+ return f'MPI_Fint *{ self .name } '
528
+
522
529
@FortranType .add ('GROUP' )
523
530
class GroupType (FortranType ):
524
531
def declare (self ):
525
532
if self .gen_f90 == False :
526
533
return f'TYPE(MPI_Group), INTENT(IN) :: { self .name } '
527
534
else :
528
535
return f'INTEGER, INTENT(IN) :: { self .name } '
529
-
536
+
530
537
def declare_cbinding_fortran (self ):
531
538
return f'INTEGER, INTENT(IN) :: { self .name } '
532
539
533
540
def argument (self ):
534
541
return f'{ self .name } %MPI_VAL'
535
542
543
+ def c_parameter (self ):
544
+ return f'MPI_Fint *{ self .name } '
545
+
536
546
def use (self ):
537
547
if self .gen_f90 == False :
538
548
return [('mpi_f08_types' , 'MPI_Group' )]
@@ -647,7 +657,6 @@ def c_parameter(self):
647
657
648
658
@FortranType .add ('STATUS_INOUT' )
649
659
class StatusInOutType (StatusType ):
650
- def declare (self ):
651
660
if self .gen_f90 == False :
652
661
return f'TYPE(MPI_Status), INTENT(INOUT) :: { self .name } '
653
662
else :
@@ -657,8 +666,27 @@ def c_parameter(self):
657
666
# TODO: Is this correct? (I've listed it as TYPE(MPI_Status) in the binding)
658
667
return f'MPI_Fint *{ self .name } '
659
668
669
+
660
670
@FortranType .add ('REQUEST' )
661
671
class RequestType (FortranType ):
672
+ def declare (self ):
673
+ return f'TYPE(MPI_Request), INTENT(IN) :: { self .name } '
674
+
675
+ def declare_cbinding_fortran (self ):
676
+ return f'INTEGER, INTENT(IN) :: { self .name } '
677
+
678
+ def argument (self ):
679
+ return f'{ self .name } %MPI_VAL'
680
+
681
+ def use (self ):
682
+ return [('mpi_f08_types' , 'MPI_Request' )]
683
+
684
+ def c_parameter (self ):
685
+ return f'MPI_Fint *{ self .name } '
686
+
687
+ @FortranType .add ('REQUEST_OUT' )
688
+ class RequestTypeOut (FortranType ):
689
+ > >> >> >> a8ae2dab60 (F08 : refactor templates )
662
690
def declare (self ):
663
691
if self .gen_f90 == False :
664
692
return f'TYPE(MPI_Request), INTENT(IN) :: { self .name } '
@@ -702,6 +730,14 @@ def declare(self):
702
730
def declare_cbinding_fortran (self ):
703
731
return f'INTEGER, INTENT(INOUT) :: { self .name } '
704
732
733
+ @FortranType .add ('REQUEST_INOUT' )
734
+ class RequestTypeInOut (RequestType ):
735
+ def declare (self ):
736
+ return f'TYPE(MPI_Request), INTENT(INOUT) :: { self .name } '
737
+
738
+ def declare_cbinding_fortran (self ):
739
+ return f'INTEGER, INTENT(INOUT) :: { self .name } '
740
+
705
741
706
742
@FortranType .add ('REQUEST_ARRAY' )
707
743
class RequestArrayType (FortranType ):
@@ -1034,6 +1070,9 @@ def declare(self):
1034
1070
def declare_cbinding_fortran (self ):
1035
1071
return f'INTEGER, INTENT(IN) :: { self .name } '
1036
1072
1073
+ def declare_cbinding_fortran (self ):
1074
+ return f'INTEGER, INTENT(IN) :: { self .name } '
1075
+
1037
1076
def use (self ):
1038
1077
if self .gen_f90 == False :
1039
1078
return [('mpi_f08_types' , 'MPI_Op' )]
@@ -1046,6 +1085,9 @@ def argument(self):
1046
1085
else :
1047
1086
return f'{ self .name } '
1048
1087
1088
+ def argument (self ):
1089
+ return f'{ self .name } %MPI_VAL'
1090
+
1049
1091
def c_parameter (self ):
1050
1092
return f'MPI_Fint *{ self .name } '
1051
1093
@@ -1072,6 +1114,9 @@ def declare(self):
1072
1114
def declare_cbinding_fortran (self ):
1073
1115
return f'INTEGER, INTENT(IN) :: { self .name } '
1074
1116
1117
+ def declare_cbinding_fortran (self ):
1118
+ return f'INTEGER, INTENT(IN) :: { self .name } '
1119
+
1075
1120
def use (self ):
1076
1121
if self .gen_f90 == False :
1077
1122
return [('mpi_f08_types' , 'MPI_Win' )]
@@ -1084,6 +1129,9 @@ def argument(self):
1084
1129
else :
1085
1130
return f'{ self .name } '
1086
1131
1132
+ def argument (self ):
1133
+ return f'{ self .name } %MPI_VAL'
1134
+
1087
1135
def c_parameter (self ):
1088
1136
return f'MPI_Fint *{ self .name } '
1089
1137
@@ -1100,6 +1148,16 @@ def declare(self):
1100
1148
def declare_cbinding_fortran (self ):
1101
1149
return f'INTEGER, INTENT(OUT) :: { self .name } '
1102
1150
1151
+ @FortranType .add ('WIN_INOUT' )
1152
+ class WinInOut (Win ):
1153
+ """MPI_Win inout type."""
1154
+
1155
+ def declare (self ):
1156
+ if self .gen_f90 == False :
1157
+ return f'TYPE(MPI_Win), INTENT(INOUT) :: { self .name } '
1158
+ else :
1159
+ return f'INTEGER, INTENT(INOUT) :: { self .name } '
1160
+
1103
1161
@FortranType .add ('WIN_INOUT' )
1104
1162
class WinInOut (Win ):
1105
1163
"""MPI_Win inout type."""
@@ -1418,7 +1476,7 @@ def use(self):
1418
1476
return [('mpi_f08_interfaces_callbacks' , 'MPI_Type_copy_attr_function' ), ('iso_c_binding' , 'c_funloc' ), ('iso_c_binding' , 'c_funptr' )]
1419
1477
else :
1420
1478
return []
1421
-
1479
+
1422
1480
@FortranType .add ('WIN_COPY_ATTR_FN' )
1423
1481
class WinCopyAttrFnType (CommCopyAttrFnType ):
1424
1482
def declare (self ):
0 commit comments