1!
2! Copyright (C) by Argonne National Laboratory
3!     See COPYRIGHT in top-level directory
4!
5! Module mpi_c_interface_types is a helper module used by the modules
6! specifying c interfaces:
7!
8! mpi_c_interface_cdesc - interfaces for MPI functions with a descriptor argument
9! mpi_c_interface_nobuf - interfaces for MPI functions with no choice argument
10!
11! MPICH C interface uses integer for handles and status type.
12! It is not defined in the spec and not intended for end users.
13!--------------------------------------------------------------
14
15module mpi_c_interface_types
16
17use, intrinsic :: iso_c_binding
18
19implicit none
20
21integer,parameter :: c_Fint       = KIND(0)
22
23integer,parameter :: c_Aint       = @F08_C_AINT@
24integer,parameter :: c_Count      = @F08_C_COUNT@
25integer,parameter :: c_Offset     = @F08_C_OFFSET@
26
27!=============================================================
28! Kinds for handle types in C prototypes; should match  mpi.h
29!=============================================================
30
31integer,parameter :: c_Datatype   = c_int
32integer,parameter :: c_Comm       = c_int
33integer,parameter :: c_Group      = c_int
34integer,parameter :: c_Win        = c_int
35integer,parameter :: c_Op         = c_int
36integer,parameter :: c_Info       = c_int
37integer,parameter :: c_Errhandler = c_int
38integer,parameter :: c_Request    = c_int
39integer,parameter :: c_Message    = c_int
40integer,parameter :: c_File       = c_intptr_t
41
42!================================================
43! C struct for STATUS values; should match  mpi.h
44!================================================
45
46! MPI_Status, with name changed to c_Status for internal disambiguation
47! A.1.2 p 676
48
49type, bind(c) :: c_Status
50   integer(c_int)  :: count_lo
51   integer(c_int)  :: count_hi_and_cancelled
52   integer(c_int)  :: MPI_SOURCE
53   integer(c_int)  :: MPI_TAG
54   integer(c_int)  :: MPI_ERROR
55end type c_Status
56
57end module mpi_c_interface_types
58