1! Copyright (C) by Argonne National Laboratory
2!     See COPYRIGHT in top-level directory
3        MODULE MPI_CONSTANTS
4        IMPLICIT NONE
5        INCLUDE 'mpifnoext.h'
6        TYPE :: MPI_Status
7           SEQUENCE
8           INTEGER :: count_lo
9           INTEGER :: count_hi_and_cancelled
10           INTEGER :: MPI_SOURCE, MPI_TAG, MPI_ERROR
11        END TYPE MPI_Status
12       TYPE :: MPI_Info
13          SEQUENCE
14          INTEGER :: MPI_VAL
15       END TYPE MPI_Info
16       TYPE :: MPI_Request
17          SEQUENCE
18          INTEGER :: MPI_VAL
19       END TYPE MPI_Request
20       TYPE :: MPI_Comm
21          SEQUENCE
22          INTEGER :: MPI_VAL
23       END TYPE MPI_Comm
24       TYPE :: MPI_Win
25          SEQUENCE
26          INTEGER :: MPI_VAL
27       END TYPE MPI_Win
28       TYPE :: MPI_File
29          SEQUENCE
30          INTEGER :: MPI_VAL
31       END TYPE MPI_File
32       TYPE :: MPI_Message
33          SEQUENCE
34          INTEGER :: MPI_VAL
35       END TYPE MPI_Message
36       TYPE :: MPI_Errhandler
37          SEQUENCE
38          INTEGER :: MPI_VAL
39       END TYPE MPI_Errhandler
40       TYPE :: MPI_Group
41          SEQUENCE
42          INTEGER :: MPI_VAL
43       END TYPE MPI_Group
44       TYPE :: MPI_Datatype
45          SEQUENCE
46          INTEGER :: MPI_VAL
47       END TYPE MPI_Datatype
48       TYPE :: MPI_Op
49          SEQUENCE
50          INTEGER :: MPI_VAL
51       END TYPE MPI_Op
52        INTERFACE OPERATOR(.EQ.)
53            MODULE PROCEDURE infoeq
54            MODULE PROCEDURE requesteq
55            MODULE PROCEDURE commeq
56            MODULE PROCEDURE wineq
57            MODULE PROCEDURE fileeq
58            MODULE PROCEDURE messageeq
59            MODULE PROCEDURE errhandlereq
60            MODULE PROCEDURE groupeq
61            MODULE PROCEDURE datatypeeq
62            MODULE PROCEDURE opeq
63        END INTERFACE
64        INTERFACE OPERATOR(.NE.)
65            MODULE PROCEDURE infoneq
66            MODULE PROCEDURE requestneq
67            MODULE PROCEDURE commneq
68            MODULE PROCEDURE winneq
69            MODULE PROCEDURE fileneq
70            MODULE PROCEDURE messageneq
71            MODULE PROCEDURE errhandlerneq
72            MODULE PROCEDURE groupneq
73            MODULE PROCEDURE datatypeneq
74            MODULE PROCEDURE opneq
75        END INTERFACE
76        CONTAINS
77            LOGICAL FUNCTION infoeq(lhs,rhs)
78            TYPE(MPI_Info), INTENT(IN) :: lhs, rhs
79            infoeq = lhs%MPI_VAL .EQ. rhs%MPI_VAL
80            END FUNCTION infoeq
81            LOGICAL FUNCTION infoneq(lhs,rhs)
82            TYPE(MPI_Info), INTENT(IN) :: lhs, rhs
83            infoneq = lhs%MPI_VAL .NE. rhs%MPI_VAL
84            END FUNCTION infoneq
85            LOGICAL FUNCTION requesteq(lhs,rhs)
86            TYPE(MPI_Request), INTENT(IN) :: lhs, rhs
87            requesteq = lhs%MPI_VAL .EQ. rhs%MPI_VAL
88            END FUNCTION requesteq
89            LOGICAL FUNCTION requestneq(lhs,rhs)
90            TYPE(MPI_Request), INTENT(IN) :: lhs, rhs
91            requestneq = lhs%MPI_VAL .NE. rhs%MPI_VAL
92            END FUNCTION requestneq
93            LOGICAL FUNCTION commeq(lhs,rhs)
94            TYPE(MPI_Comm), INTENT(IN) :: lhs, rhs
95            commeq = lhs%MPI_VAL .EQ. rhs%MPI_VAL
96            END FUNCTION commeq
97            LOGICAL FUNCTION commneq(lhs,rhs)
98            TYPE(MPI_Comm), INTENT(IN) :: lhs, rhs
99            commneq = lhs%MPI_VAL .NE. rhs%MPI_VAL
100            END FUNCTION commneq
101            LOGICAL FUNCTION wineq(lhs,rhs)
102            TYPE(MPI_Win), INTENT(IN) :: lhs, rhs
103            wineq = lhs%MPI_VAL .EQ. rhs%MPI_VAL
104            END FUNCTION wineq
105            LOGICAL FUNCTION winneq(lhs,rhs)
106            TYPE(MPI_Win), INTENT(IN) :: lhs, rhs
107            winneq = lhs%MPI_VAL .NE. rhs%MPI_VAL
108            END FUNCTION winneq
109            LOGICAL FUNCTION fileeq(lhs,rhs)
110            TYPE(MPI_File), INTENT(IN) :: lhs, rhs
111            fileeq = lhs%MPI_VAL .EQ. rhs%MPI_VAL
112            END FUNCTION fileeq
113            LOGICAL FUNCTION fileneq(lhs,rhs)
114            TYPE(MPI_File), INTENT(IN) :: lhs, rhs
115            fileneq = lhs%MPI_VAL .NE. rhs%MPI_VAL
116            END FUNCTION fileneq
117            LOGICAL FUNCTION messageeq(lhs,rhs)
118            TYPE(MPI_Message), INTENT(IN) :: lhs, rhs
119            messageeq = lhs%MPI_VAL .EQ. rhs%MPI_VAL
120            END FUNCTION messageeq
121            LOGICAL FUNCTION messageneq(lhs,rhs)
122            TYPE(MPI_Message), INTENT(IN) :: lhs, rhs
123            messageneq = lhs%MPI_VAL .NE. rhs%MPI_VAL
124            END FUNCTION messageneq
125            LOGICAL FUNCTION errhandlereq(lhs,rhs)
126            TYPE(MPI_Errhandler), INTENT(IN) :: lhs, rhs
127            errhandlereq = lhs%MPI_VAL .EQ. rhs%MPI_VAL
128            END FUNCTION errhandlereq
129            LOGICAL FUNCTION errhandlerneq(lhs,rhs)
130            TYPE(MPI_Errhandler), INTENT(IN) :: lhs, rhs
131            errhandlerneq = lhs%MPI_VAL .NE. rhs%MPI_VAL
132            END FUNCTION errhandlerneq
133            LOGICAL FUNCTION groupeq(lhs,rhs)
134            TYPE(MPI_Group), INTENT(IN) :: lhs, rhs
135            groupeq = lhs%MPI_VAL .EQ. rhs%MPI_VAL
136            END FUNCTION groupeq
137            LOGICAL FUNCTION groupneq(lhs,rhs)
138            TYPE(MPI_Group), INTENT(IN) :: lhs, rhs
139            groupneq = lhs%MPI_VAL .NE. rhs%MPI_VAL
140            END FUNCTION groupneq
141            LOGICAL FUNCTION datatypeeq(lhs,rhs)
142            TYPE(MPI_Datatype), INTENT(IN) :: lhs, rhs
143            datatypeeq = lhs%MPI_VAL .EQ. rhs%MPI_VAL
144            END FUNCTION datatypeeq
145            LOGICAL FUNCTION datatypeneq(lhs,rhs)
146            TYPE(MPI_Datatype), INTENT(IN) :: lhs, rhs
147            datatypeneq = lhs%MPI_VAL .NE. rhs%MPI_VAL
148            END FUNCTION datatypeneq
149            LOGICAL FUNCTION opeq(lhs,rhs)
150            TYPE(MPI_Op), INTENT(IN) :: lhs, rhs
151            opeq = lhs%MPI_VAL .EQ. rhs%MPI_VAL
152            END FUNCTION opeq
153            LOGICAL FUNCTION opneq(lhs,rhs)
154            TYPE(MPI_Op), INTENT(IN) :: lhs, rhs
155            opneq = lhs%MPI_VAL .NE. rhs%MPI_VAL
156            END FUNCTION opneq
157        END MODULE MPI_CONSTANTS
158