1
1
openmpi/ompi/mpi/f90/xml/mpi.h.xml
Rainer Keller ac58e85c83 - Add the missing collective (and other) functions to mpi.f03
- Correct intent(out) to inout for various recvbufs to match
   standards possibility for MPI_IN_PLACE.

This commit was SVN r10868.
2006-07-18 18:12:09 +00:00

11812 строки
301 KiB
XML

<?xml version="1.0"?>
<!--
Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
University Research and Technology
Corporation. All rights reserved.
Copyright (c) 2004-2005 The University of Tennessee and The University
of Tennessee Research Foundation. All rights
reserved.
Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
University of Stuttgart. All rights reserved.
Copyright (c) 2004-2005 The Regents of the University of California.
All rights reserved.
$COPYRIGHT$
Additional copyrights may follow
$HEADER$
-->
<!-- mpi.h.xml : automatically generated XML -->
<!-- Source PDB file : mpi.h.pdb -->
<library lang="cxx" version="3" name="mpi.h">
<!-- include files that the topmost file includes -->
<include filename="ompi_config.h" />
<include filename="/Users/rasmussn/openmpi/ompi/src/mpi/cxx/mpicxx.h" />
<!-- C and C++ routines not contained elsewhere -->
<scope name="CXXGlobal" kind="global">
<!--
- METHOD: int MPI_Abort(MPI_Comm, int) C
-->
<method name="MPI_Abort" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : errorcode -->
<arg name="errorcode" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Accumulate(void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Op, MPI_Win) C
-->
<method name="MPI_Accumulate" kind="final" template="yes">
<!-- ARGUMENT : origin_addr -->
<arg name="origin_addr" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : origin_count -->
<arg name="origin_count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : origin_datatype -->
<arg name="origin_datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : target_rank -->
<arg name="target_rank" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : target_disp -->
<arg name="target_disp" intent="in">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</arg>
<!-- ARGUMENT : target_count -->
<arg name="target_count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : target_datatype -->
<arg name="target_datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : op -->
<arg name="op" intent="in">
<type kind="usertype" usertype="MPI_Op" >
</type>
</arg>
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Add_error_class(int *) C
-->
<method name="MPI_Add_error_class" kind="final">
<!-- ARGUMENT : errorclass -->
<arg name="errorclass" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Add_error_code(int, int *) C
-->
<method name="MPI_Add_error_code" kind="final">
<!-- ARGUMENT : errorclass -->
<arg name="errorclass" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : errorcode -->
<arg name="errorcode" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Add_error_string(int, char *) C
-->
<method name="MPI_Add_error_string" kind="final">
<!-- ARGUMENT : errorcode -->
<arg name="errorcode" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : string -->
<arg name="string" intent="in">
<type kind="ptr" alias="len">
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Address(void *, MPI_Aint *) C
-->
<method name="MPI_Address" kind="final" template="yes">
<!-- ARGUMENT : location -->
<arg name="location" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : address -->
<arg name="address" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="default_integer" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Allgather(void *, int, MPI_Datatype, void *, int, MPI_Datatype, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Allgather" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : sendcount -->
<arg name="sendcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : sendtype -->
<arg name="sendtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="inout">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvcount -->
<arg name="recvcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : recvtype -->
<arg name="recvtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Allgatherv(void *, int, MPI_Datatype, void *, int *, int *, MPI_Datatype, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Allgatherv" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : sendcount -->
<arg name="sendcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : sendtype -->
<arg name="sendtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="inout">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvcounts -->
<arg name="recvcounts" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : displs -->
<arg name="displs" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : recvtype -->
<arg name="recvtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Alloc_mem(MPI_Aint, MPI_Info, void *) C
- WARNING, can't see how this method can work with F90 type checking,
- there is no way to alloc memory in C for Fortran arrays
- see MPI_Free_mem
-->
<method name="MPI_Alloc_mem" kind="final">
<!-- ARGUMENT : size -->
<arg name="size" intent="in">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</arg>
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : baseptr -->
<arg name="baseptr" intent="out">
<type kind="ptr" idl="MPI_Aint">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Allreduce(void *, void *, int, MPI_Datatype, MPI_Op, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Allreduce" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="inout">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : op -->
<arg name="op" intent="in">
<type kind="usertype" usertype="MPI_Op" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Alltoall(void *, int, MPI_Datatype, void *, int, MPI_Datatype, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Alltoall" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : sendcount -->
<arg name="sendcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : sendtype -->
<arg name="sendtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvcount -->
<arg name="recvcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : recvtype -->
<arg name="recvtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Alltoallv(void *, int *, int *, MPI_Datatype, void *, int *, int *, MPI_Datatype, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Alltoallv" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : sendcounts -->
<arg name="sendcounts" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : sdispls -->
<arg name="sdispls" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : sendtype -->
<arg name="sendtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvcounts -->
<arg name="recvcounts" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : rdispls -->
<arg name="rdispls" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : recvtype -->
<arg name="recvtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Alltoallw(void *, int *, int *, MPI_Datatype *, void *, int *, int *, MPI_Datatype *, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Alltoallw" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : sendcounts -->
<arg name="sendcounts" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : sdispls -->
<arg name="sdispls" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : sendtypes -->
<arg name="sendtypes" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Datatype"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvcounts -->
<arg name="recvcounts" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : rdispls -->
<arg name="rdispls" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : recvtypes -->
<arg name="recvtypes" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Datatype"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Attr_delete(MPI_Comm, int) C
-->
<method name="MPI_Attr_delete" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : keyval -->
<arg name="keyval" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Attr_get(MPI_Comm, int, void *, int *) C
-->
<method name="MPI_Attr_get" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : keyval -->
<arg name="keyval" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : attribute_val -->
<arg name="attribute_val" intent="out">
<type kind="ptr" idl="MPI_Fint">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int"/>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Attr_put(MPI_Comm, int, void *) C
-->
<method name="MPI_Attr_put" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : keyval -->
<arg name="keyval" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : attribute_val -->
<arg name="attribute_val" intent="in">
<type kind="ptr" idl="MPI_Fint">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Barrier(MPI_Comm) C
-->
<method name="MPI_Barrier" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Bcast(void *, int, MPI_Datatype, int, MPI_Comm) C
-->
<method name="MPI_Bcast" kind="final" template="yes">
<!-- ARGUMENT : buffer -->
<arg name="buffer" intent="inout">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : root -->
<arg name="root" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Bsend(void *, int, MPI_Datatype, int, int, MPI_Comm) C
-->
<method name="MPI_Bsend" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Bsend_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) C
-->
<method name="MPI_Bsend_init" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Buffer_attach(void *, int) C
-->
<method name="MPI_Buffer_attach" kind="final" template="yes">
<!-- ARGUMENT : buffer -->
<arg name="buffer" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : size -->
<arg name="size" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Buffer_detach(void *, int *) C
-->
<method name="MPI_Buffer_detach" kind="final" template="yes">
<!-- ARGUMENT : buffer -->
<arg name="buffer" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : size -->
<arg name="size" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Cancel(MPI_Request *) C
-->
<method name="MPI_Cancel" kind="final">
<!-- ARGUMENT : request -->
<arg name="request" intent="in">
<type kind="ptr">
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Cart_coords(MPI_Comm, int, int, int *) C
-->
<method name="MPI_Cart_coords" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : rank -->
<arg name="rank" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : maxdims -->
<arg name="maxdims" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : coords -->
<arg name="coords" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Cart_create(MPI_Comm, int, int *, int *, int, MPI_Comm *) C
-->
<method name="MPI_Cart_create" kind="final">
<!-- ARGUMENT : old_comm -->
<arg name="old_comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : ndims -->
<arg name="ndims" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : dims -->
<arg name="dims" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : periods -->
<arg name="periods" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : reorder -->
<arg name="reorder" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm_cart -->
<arg name="comm_cart" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Cart_get(MPI_Comm, int, int *, int *, int *) C
-->
<method name="MPI_Cart_get" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : maxdims -->
<arg name="maxdims" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : dims -->
<arg name="dims" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : periods -->
<arg name="periods" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : coords -->
<arg name="coords" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Cart_map(MPI_Comm, int, int *, int *, int *) C
-->
<method name="MPI_Cart_map" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : ndims -->
<arg name="ndims" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : dims -->
<arg name="dims" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : periods -->
<arg name="periods" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : newrank -->
<arg name="newrank" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Cart_rank(MPI_Comm, int *, int *) C
-->
<method name="MPI_Cart_rank" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : coords -->
<arg name="coords" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : rank -->
<arg name="rank" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Cart_shift(MPI_Comm, int, int, int *, int *) C
-->
<method name="MPI_Cart_shift" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : direction -->
<arg name="direction" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : disp -->
<arg name="disp" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : rank_source -->
<arg name="rank_source" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : rank_dest -->
<arg name="rank_dest" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Cart_sub(MPI_Comm, int *, MPI_Comm *) C
-->
<method name="MPI_Cart_sub" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : remain_dims -->
<arg name="remain_dims" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="bool" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : new_comm -->
<arg name="new_comm" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Cartdim_get(MPI_Comm, int *) C
-->
<method name="MPI_Cartdim_get" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : ndims -->
<arg name="ndims" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Fint MPI_Comm_c2f(MPI_Comm comm) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Comm_call_errhandler(MPI_Comm, int) C
-->
<method name="MPI_Comm_call_errhandler" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : errorcode -->
<arg name="errorcode" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_compare(MPI_Comm, MPI_Comm, int *) C
-->
<method name="MPI_Comm_compare" kind="final">
<!-- ARGUMENT : comm1 -->
<arg name="comm1" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : comm2 -->
<arg name="comm2" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : result -->
<arg name="result" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_create(MPI_Comm, MPI_Group, MPI_Comm *) C
-->
<method name="MPI_Comm_create" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : group -->
<arg name="group" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : newcomm -->
<arg name="newcomm" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_create_errhandler(MPI_Comm_errhandler_fn *, MPI_Errhandler *) C
- NOTE: First parameter is an external function
-->
<method name="MPI_Comm_create_errhandler" kind="final">
<!-- ARGUMENT : function -->
<arg name="function" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm_errhandler_fn" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : errhandler -->
<arg name="errhandler" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Errhandler" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_create_keyval(MPI_Comm_copy_attr_function *, MPI_Comm_delete_attr_function *, int *, void *) C
- NOTE: First two parameters are external functions
-->
<method name="MPI_Comm_create_keyval" kind="final">
<!-- ARGUMENT : comm_copy_attr_fn -->
<arg name="comm_copy_attr_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm_copy_attr_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : comm_delete_attr_fn -->
<arg name="comm_delete_attr_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm_delete_attr_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : comm_keyval -->
<arg name="comm_keyval" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : extra_state -->
<arg name="extra_state" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_delete_attr(MPI_Comm, int) C
-->
<method name="MPI_Comm_delete_attr" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="inout">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : comm_keyval -->
<arg name="comm_keyval" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_dup(MPI_Comm, MPI_Comm *) C
-->
<method name="MPI_Comm_dup" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : newcomm -->
<arg name="newcomm" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Comm MPI_Comm_f2c(MPI_Fint comm) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Comm_free(MPI_Comm *) C
-->
<method name="MPI_Comm_free" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_free_keyval(int *) C
-->
<method name="MPI_Comm_free_keyval" kind="final">
<!-- ARGUMENT : comm_keyval -->
<arg name="comm_keyval" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_get_attr(MPI_Comm, int, void *, int *) C
-->
<method name="MPI_Comm_get_attr" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : comm_keyval -->
<arg name="comm_keyval" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : attribute_val -->
<arg name="attribute_val" intent="out">
<type kind="ptr" idl="MPI_Aint">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_get_errhandler(MPI_Comm, MPI_Errhandler *) C
-->
<method name="MPI_Comm_get_errhandler" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : erhandler -->
<arg name="erhandler" intent="out" alias="errhandler">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Errhandler" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_get_name(MPI_Comm, char *, int *) C
-->
<method name="MPI_Comm_get_name" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : comm_name -->
<arg name="comm_name" intent="out">
<type kind="ptr" alias="name_len">
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : resultlen -->
<arg name="resultlen" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_group(MPI_Comm, MPI_Group *) C
-->
<method name="MPI_Comm_group" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : group -->
<arg name="group" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Group" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_rank(MPI_Comm, int *) C
-->
<method name="MPI_Comm_rank" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : rank -->
<arg name="rank" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_remote_group(MPI_Comm, MPI_Group *) C
-->
<method name="MPI_Comm_remote_group" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : group -->
<arg name="group" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Group" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_remote_size(MPI_Comm, int *) C
-->
<method name="MPI_Comm_remote_size" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : size -->
<arg name="size" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_set_attr(MPI_Comm, int, void *) C
-->
<method name="MPI_Comm_set_attr" kind="final">
<!-- ARGUMENT : comm (officially INOUT in MPI standard) -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : comm_keyval -->
<arg name="comm_keyval" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : attribute_val -->
<arg name="attribute_val" intent="in">
<type kind="ptr" idl="MPI_Aint">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_set_errhandler(MPI_Comm, MPI_Errhandler) C
-->
<method name="MPI_Comm_set_errhandler" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="inout">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : errhandler -->
<arg name="errhandler" intent="in">
<type kind="usertype" usertype="MPI_Errhandler" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_set_name(MPI_Comm, char *) C
-->
<method name="MPI_Comm_set_name" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="inout">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : comm_name -->
<arg name="comm_name" intent="in">
<type kind="ptr" alias="name_len">
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_size(MPI_Comm, int *) C
-->
<method name="MPI_Comm_size" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : size -->
<arg name="size" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_split(MPI_Comm, int, int, MPI_Comm *) C
-->
<method name="MPI_Comm_split" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : color -->
<arg name="color" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : key -->
<arg name="key" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : newcomm -->
<arg name="newcomm" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_test_inter(MPI_Comm, int *) C
-->
<method name="MPI_Comm_test_inter" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="inout">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Dims_create(int, int, int *) C
-->
<method name="MPI_Dims_create" kind="final">
<!-- ARGUMENT : nnodes -->
<arg name="nnodes" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : ndims -->
<arg name="ndims" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : dims -->
<arg name="dims" intent="inout">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Fint MPI_Errhandler_c2f(MPI_Errhandler errhandler) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Errhandler_create(MPI_Handler_function *, MPI_Errhandler *) C
- NOTE: First parameter is an external function
-->
<method name="MPI_Errhandler_create" kind="final">
<!-- ARGUMENT : function -->
<arg name="function" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Handler_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : errhandler -->
<arg name="errhandler" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Errhandler" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Errhandler MPI_Errhandler_f2c(MPI_Fint errhandler) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Errhandler_free(MPI_Errhandler *) C
-->
<method name="MPI_Errhandler_free" kind="final">
<!-- ARGUMENT : errhandler -->
<arg name="errhandler" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Errhandler" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Errhandler_get(MPI_Comm, MPI_Errhandler *) C
-->
<method name="MPI_Errhandler_get" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : errhandler -->
<arg name="errhandler" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Errhandler" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Errhandler_set(MPI_Comm, MPI_Errhandler) C
-->
<method name="MPI_Errhandler_set" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : errhandler -->
<arg name="errhandler" intent="in">
<type kind="usertype" usertype="MPI_Errhandler" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Error_class(int, int *) C
-->
<method name="MPI_Error_class" kind="final">
<!-- ARGUMENT : errorcode -->
<arg name="errorcode" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : errorclass -->
<arg name="errorclass" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Error_string(int, char *, int *) C
-->
<method name="MPI_Error_string" kind="final">
<!-- ARGUMENT : errorcode -->
<arg name="errorcode" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : string -->
<arg name="string" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : resultlen -->
<arg name="resultlen" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Exscan(void *, void *, int, MPI_Datatype, MPI_Op, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Exscan" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : op -->
<arg name="op" intent="in">
<type kind="usertype" usertype="MPI_Op" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Fint MPI_File_c2f(MPI_File file) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_File_call_errhandler(MPI_File, int) C
-->
<method name="MPI_File_call_errhandler" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : errorcode -->
<arg name="errorcode" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_close(MPI_File *) C
-->
<method name="MPI_File_close" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_File" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_create_errhandler(MPI_File_errhandler_fn *, MPI_Errhandler *) C
- NOTE: First parameter is an external function
-->
<method name="MPI_File_create_errhandler" kind="final">
<!-- ARGUMENT : function -->
<arg name="function" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_File_errhandler_fn" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : errhandler -->
<arg name="errhandler" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Errhandler" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_delete(char *, MPI_Info) C
-->
<method name="MPI_File_delete" kind="final">
<!-- ARGUMENT : filename -->
<arg name="filename" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_File MPI_File_f2c(MPI_Fint file) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_File_get_amode(MPI_File, int *) C
-->
<method name="MPI_File_get_amode" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : amode -->
<arg name="amode" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_get_atomicity(MPI_File, int *) C
-->
<method name="MPI_File_get_atomicity" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_get_byte_offset(MPI_File, int64_t, int64_t *) C
-->
<method name="MPI_File_get_byte_offset" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : offset -->
<arg name="offset" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- ARGUMENT : disp -->
<arg name="disp" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="int64_t" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_get_errhandler(MPI_File, MPI_Errhandler *) C
-->
<method name="MPI_File_get_errhandler" kind="final">
<!-- ARGUMENT : file -->
<arg name="file" intent="in" alias="fh">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : errhandler -->
<arg name="errhandler" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Errhandler" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_get_group(MPI_File, MPI_Group *) C
-->
<method name="MPI_File_get_group" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : group -->
<arg name="group" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Group" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_get_info(MPI_File, MPI_Info *) C
-->
<method name="MPI_File_get_info" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : info_used -->
<arg name="info_used" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Info" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_get_position(MPI_File, int64_t *) C
-->
<method name="MPI_File_get_position" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : offset -->
<arg name="offset" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="int64_t" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_get_position_shared(MPI_File, int64_t *) C
-->
<method name="MPI_File_get_position_shared" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : offset -->
<arg name="offset" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="int64_t" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_get_size(MPI_File, int64_t *) C
-->
<method name="MPI_File_get_size" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : size -->
<arg name="size" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="int64_t" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_get_type_extent(MPI_File, MPI_Datatype, MPI_Aint *) C
-->
<method name="MPI_File_get_type_extent" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : extent -->
<arg name="extent" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_get_view(MPI_File, int64_t *, MPI_Datatype *, MPI_Datatype *, char *) C
-->
<method name="MPI_File_get_view" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : disp -->
<arg name="disp" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="int64_t" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : etype -->
<arg name="etype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : filetype -->
<arg name="filetype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : datarep -->
<arg name="datarep" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_iread(MPI_File, void *, int, MPI_Datatype, MPI_Request *) C
-->
<method name="MPI_File_iread" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_iread_at(MPI_File, int64_t, void *, int, MPI_Datatype, MPI_Request *) C
-->
<method name="MPI_File_iread_at" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : offset -->
<arg name="offset" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_iread_shared(MPI_File, void *, int, MPI_Datatype, MPI_Request *) C
-->
<method name="MPI_File_iread_shared" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_iwrite(MPI_File, void *, int, MPI_Datatype, MPI_Request *) C
-->
<method name="MPI_File_iwrite" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_iwrite_at(MPI_File, int64_t, void *, int, MPI_Datatype, MPI_Request *) C
-->
<method name="MPI_File_iwrite_at" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : offset -->
<arg name="offset" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_iwrite_shared(MPI_File, void *, int, MPI_Datatype, MPI_Request *) C
-->
<method name="MPI_File_iwrite_shared" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_open(MPI_Comm, char *, int, MPI_Info, MPI_File *) C
-->
<method name="MPI_File_open" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : filename -->
<arg name="filename" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : amode -->
<arg name="amode" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : fh -->
<arg name="fh" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_File" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_preallocate(MPI_File, int64_t) C
-->
<method name="MPI_File_preallocate" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : size -->
<arg name="size" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_read(MPI_File, void *, int, MPI_Datatype, MPI_Status *) C
-->
<method name="MPI_File_read" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_read_all(MPI_File, void *, int, MPI_Datatype, MPI_Status *) C
-->
<method name="MPI_File_read_all" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_read_all_begin(MPI_File, void *, int, MPI_Datatype) C
-->
<method name="MPI_File_read_all_begin" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_read_all_end(MPI_File, void *, MPI_Status *) C
-->
<method name="MPI_File_read_all_end" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr">
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_read_at(MPI_File, int64_t, void *, int, MPI_Datatype, MPI_Status *) C
-->
<method name="MPI_File_read_at" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : offset -->
<arg name="offset" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_read_at_all(MPI_File, int64_t, void *, int, MPI_Datatype, MPI_Status *) C
-->
<method name="MPI_File_read_at_all" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : offset -->
<arg name="offset" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_read_at_all_begin(MPI_File, int64_t, void *, int, MPI_Datatype) C
-->
<method name="MPI_File_read_at_all_begin" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : offset -->
<arg name="offset" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_read_at_all_end(MPI_File, void *, MPI_Status *) C
-->
<method name="MPI_File_read_at_all_end" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_read_ordered(MPI_File, void *, int, MPI_Datatype, MPI_Status *) C
-->
<method name="MPI_File_read_ordered" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_read_ordered_begin(MPI_File, void *, int, MPI_Datatype) C
- name shortened to keep character count down
-->
<method name="MPI_File_read_ordered_begin" kind="final" template="yes"
alias="MPI_File_read_ord_begin">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_read_ordered_end(MPI_File, void *, MPI_Status *) C
-->
<method name="MPI_File_read_ordered_end" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_read_shared(MPI_File, void *, int, MPI_Datatype, MPI_Status *) C
-->
<method name="MPI_File_read_shared" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_seek(MPI_File, int64_t, int) C
-->
<method name="MPI_File_seek" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : offset -->
<arg name="offset" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- ARGUMENT : whence -->
<arg name="whence" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_seek_shared(MPI_File, int64_t, int) C
-->
<method name="MPI_File_seek_shared" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : offset -->
<arg name="offset" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- ARGUMENT : whence -->
<arg name="whence" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_set_atomicity(MPI_File, int) C
-->
<method name="MPI_File_set_atomicity" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="in">
<type kind="bool" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_set_errhandler(MPI_File, MPI_Errhandler) C
-->
<method name="MPI_File_set_errhandler" kind="final">
<!-- ARGUMENT : file -->
<arg name="file" intent="in" alias="fh">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : errhandler -->
<arg name="errhandler" intent="in">
<type kind="usertype" usertype="MPI_Errhandler" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_set_info(MPI_File, MPI_Info) C
-->
<method name="MPI_File_set_info" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_set_size(MPI_File, int64_t) C
-->
<method name="MPI_File_set_size" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : size -->
<arg name="size" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_set_view(MPI_File, int64_t, MPI_Datatype, MPI_Datatype, char *, MPI_Info) C
-->
<method name="MPI_File_set_view" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="in">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : disp -->
<arg name="disp" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- ARGUMENT : etype -->
<arg name="etype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : filetype -->
<arg name="filetype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : datarep -->
<arg name="datarep" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_sync(MPI_File) C
-->
<method name="MPI_File_sync" kind="final">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_write(MPI_File, void *, int, MPI_Datatype, MPI_Status *) C
-->
<method name="MPI_File_write" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_write_all(MPI_File, void *, int, MPI_Datatype, MPI_Status *) C
-->
<method name="MPI_File_write_all" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_write_all_begin(MPI_File, void *, int, MPI_Datatype) C
-->
<method name="MPI_File_write_all_begin" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_write_all_end(MPI_File, void *, MPI_Status *) C
-->
<method name="MPI_File_write_all_end" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_write_at(MPI_File, int64_t, void *, int, MPI_Datatype, MPI_Status *) C
-->
<method name="MPI_File_write_at" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : offset -->
<arg name="offset" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_write_at_all(MPI_File, int64_t, void *, int, MPI_Datatype, MPI_Status *) C
-->
<method name="MPI_File_write_at_all" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : offset -->
<arg name="offset" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_write_at_all_begin(MPI_File, int64_t, void *, int, MPI_Datatype) C
- name shortened to keep character count down
-->
<method name="MPI_File_write_at_all_begin" kind="final" template="yes"
alias="MPI_File_wr_at_all_begin">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : offset -->
<arg name="offset" intent="in">
<type kind="usertype" usertype="int64_t" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_write_at_all_end(MPI_File, void *, MPI_Status *) C
-->
<method name="MPI_File_write_at_all_end" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_write_ordered(MPI_File, void *, int, MPI_Datatype, MPI_Status *) C
-->
<method name="MPI_File_write_ordered" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_write_ordered_begin(MPI_File, void *, int, MPI_Datatype) C
-->
<method name="MPI_File_write_ordered_begin" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_write_ordered_end(MPI_File, void *, MPI_Status *) C
-->
<method name="MPI_File_write_ordered_end" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_File_write_shared(MPI_File, void *, int, MPI_Datatype, MPI_Status *) C
-->
<method name="MPI_File_write_shared" kind="final" template="yes">
<!-- ARGUMENT : fh -->
<arg name="fh" intent="inout">
<type kind="usertype" usertype="MPI_File" >
</type>
</arg>
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Finalize() C
-->
<method name="MPI_Finalize" kind="final">
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Finalized(int *) C
-->
<method name="MPI_Finalized" kind="final">
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Free_mem(void *) C
-->
<method name="MPI_Free_mem" kind="final" template="yes">
<!-- ARGUMENT : base -->
<arg name="base" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Gather(void *, int, MPI_Datatype, void *, int, MPI_Datatype, int, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Gather" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : sendcount -->
<arg name="sendcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : sendtype -->
<arg name="sendtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="inout">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvcount -->
<arg name="recvcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : recvtype -->
<arg name="recvtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : root -->
<arg name="root" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Gatherv(void *, int, MPI_Datatype, void *, int *, int *, MPI_Datatype, int, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Gatherv" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : sendcount -->
<arg name="sendcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : sendtype -->
<arg name="sendtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="inout">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvcounts -->
<arg name="recvcounts" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : displs -->
<arg name="displs" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : recvtype -->
<arg name="recvtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : root -->
<arg name="root" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Get(void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Win) C
-->
<method name="MPI_Get" kind="final" template="yes">
<!-- ARGUMENT : origin_addr -->
<arg name="origin_addr" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : origin_count -->
<arg name="origin_count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : origin_datatype -->
<arg name="origin_datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : target_rank -->
<arg name="target_rank" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : target_disp -->
<arg name="target_disp" intent="in">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</arg>
<!-- ARGUMENT : target_count -->
<arg name="target_count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : target_datatype -->
<arg name="target_datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Get_address(void *, MPI_Aint *) C
-->
<method name="MPI_Get_address" kind="final" template="yes">
<!-- ARGUMENT : location -->
<arg name="location" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : address -->
<arg name="address" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Get_count(MPI_Status *, MPI_Datatype, int *) C
-->
<method name="MPI_Get_count" kind="final">
<!-- ARGUMENT : status -->
<arg name="status" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Get_elements(MPI_Status *, MPI_Datatype, int *) C
-->
<method name="MPI_Get_elements" kind="final">
<!-- ARGUMENT : status -->
<arg name="status" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Get_processor_name(char *, int *) C
-->
<method name="MPI_Get_processor_name" kind="final">
<!-- ARGUMENT : name -->
<arg name="name" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : resultlen -->
<arg name="resultlen" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Get_version(int *, int *) C
-->
<method name="MPI_Get_version" kind="final">
<!-- ARGUMENT : version -->
<arg name="version" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : subversion -->
<arg name="subversion" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Graph_create(MPI_Comm, int, int *, int *, int, MPI_Comm *) C
-->
<method name="MPI_Graph_create" kind="final">
<!-- ARGUMENT : comm_old -->
<arg name="comm_old" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : nnodes -->
<arg name="nnodes" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : index -->
<arg name="index" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : edges -->
<arg name="edges" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : reorder -->
<arg name="reorder" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm_graph -->
<arg name="comm_graph" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Graph_get(MPI_Comm, int, int, int *, int *) C
-->
<method name="MPI_Graph_get" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : maxindex -->
<arg name="maxindex" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : maxedges -->
<arg name="maxedges" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : index -->
<arg name="index" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : edges -->
<arg name="edges" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Graph_map(MPI_Comm, int, int *, int *, int *) C
-->
<method name="MPI_Graph_map" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : nnodes -->
<arg name="nnodes" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : index -->
<arg name="index" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : edges -->
<arg name="edges" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : newrank -->
<arg name="newrank" intent="out" alias="nrank">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Graph_neighbors(MPI_Comm, int, int, int *) C
-->
<method name="MPI_Graph_neighbors" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : rank -->
<arg name="rank" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : maxneighbors -->
<arg name="maxneighbors" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : neighbors -->
<arg name="neighbors" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Graph_neighbors_count(MPI_Comm, int, int *) C
-->
<method name="MPI_Graph_neighbors_count" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : rank -->
<arg name="rank" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : nneighbors -->
<arg name="nneighbors" intent="out">
<type kind="ptr">
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int"/>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Graphdims_get(MPI_Comm, int *, int *) C
-->
<method name="MPI_Graphdims_get" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : nnodes -->
<arg name="nnodes" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : nedges -->
<arg name="nedges" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Grequest_complete(MPI_Request) C
-->
<method name="MPI_Grequest_complete" kind="final">
<!-- ARGUMENT : request -->
<arg name="request" intent="inout">
<type kind="usertype" usertype="MPI_Request" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Grequest_start(MPI_Grequest_query_function *, MPI_Grequest_free_function *, MPI_Grequest_cancel_function *, void *, MPI_Request *) C
- NOTE: First three parameters are external functions
-->
<method name="MPI_Grequest_start" kind="final">
<!-- ARGUMENT : query_fn -->
<arg name="query_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Grequest_query_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : free_fn -->
<arg name="free_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Grequest_free_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : cancel_fn -->
<arg name="cancel_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Grequest_cancel_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : extra_state -->
<arg name="extra_state" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr">
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Fint MPI_Group_c2f(MPI_Group group) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Group_compare(MPI_Group, MPI_Group, int *) C
-->
<method name="MPI_Group_compare" kind="final">
<!-- ARGUMENT : group1 -->
<arg name="group1" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : group2 -->
<arg name="group2" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : result -->
<arg name="result" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Group_difference(MPI_Group, MPI_Group, MPI_Group *) C
-->
<method name="MPI_Group_difference" kind="final">
<!-- ARGUMENT : group1 -->
<arg name="group1" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : group2 -->
<arg name="group2" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : newgroup -->
<arg name="newgroup" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Group" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Group_excl(MPI_Group, int, int *, MPI_Group *) C
-->
<method name="MPI_Group_excl" kind="final">
<!-- ARGUMENT : group -->
<arg name="group" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : n -->
<arg name="n" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : ranks -->
<arg name="ranks" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : newgroup -->
<arg name="newgroup" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Group" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Group MPI_Group_f2c(MPI_Fint group) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Group_free(MPI_Group *) C
-->
<method name="MPI_Group_free" kind="final">
<!-- ARGUMENT : group -->
<arg name="group" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Group" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Group_incl(MPI_Group, int, int *, MPI_Group *) C
-->
<method name="MPI_Group_incl" kind="final">
<!-- ARGUMENT : group -->
<arg name="group" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : n -->
<arg name="n" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : ranks -->
<arg name="ranks" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : newgroup -->
<arg name="newgroup" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Group" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Group_intersection(MPI_Group, MPI_Group, MPI_Group *) C
-->
<method name="MPI_Group_intersection" kind="final">
<!-- ARGUMENT : group1 -->
<arg name="group1" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : group2 -->
<arg name="group2" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : newgroup -->
<arg name="newgroup" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Group" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Group_range_excl(MPI_Group, int, int (*)[3], MPI_Group *) C
-->
<method name="MPI_Group_range_excl" kind="final">
<!-- ARGUMENT : group -->
<arg name="group" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : n -->
<arg name="n" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : ranges -->
<arg name="ranges" intent="in">
<type kind="array">
<array lang="c" rank="2">
<type kind="int" ikind="int"/>
<dimension extent="3"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : newgroup -->
<arg name="newgroup" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Group" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Group_range_incl(MPI_Group, int, int (*)[3], MPI_Group *) C
-->
<method name="MPI_Group_range_incl" kind="final">
<!-- ARGUMENT : group -->
<arg name="group" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : n -->
<arg name="n" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : ranges -->
<arg name="ranges" intent="in">
<type kind="array">
<array lang="c" rank="2">
<type kind="int" ikind="int"/>
<dimension extent="3"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : newgroup -->
<arg name="newgroup" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Group" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Group_rank(MPI_Group, int *) C
-->
<method name="MPI_Group_rank" kind="final">
<!-- ARGUMENT : group -->
<arg name="group" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : rank -->
<arg name="rank" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Group_size(MPI_Group, int *) C
-->
<method name="MPI_Group_size" kind="final">
<!-- ARGUMENT : group -->
<arg name="group" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : size -->
<arg name="size" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Group_translate_ranks(MPI_Group, int, int *, MPI_Group, int *) C
-->
<method name="MPI_Group_translate_ranks" kind="final">
<!-- ARGUMENT : group1 -->
<arg name="group1" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : n -->
<arg name="n" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : ranks1 -->
<arg name="ranks1" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : group2 -->
<arg name="group2" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : ranks2 -->
<arg name="ranks2" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Group_union(MPI_Group, MPI_Group, MPI_Group *) C
-->
<method name="MPI_Group_union" kind="final">
<!-- ARGUMENT : group1 -->
<arg name="group1" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : group2 -->
<arg name="group2" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : newgroup -->
<arg name="newgroup" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Group" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Ibsend(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) C
-->
<method name="MPI_Ibsend" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Fint MPI_Info_c2f(MPI_Info info) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Info_create(MPI_Info *) C
-->
<method name="MPI_Info_create" kind="final">
<!-- ARGUMENT : info -->
<arg name="info" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Info" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Info_delete(MPI_Info, char *) C
-->
<method name="MPI_Info_delete" kind="final">
<!-- ARGUMENT : info -->
<arg name="info" intent="out">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : key -->
<arg name="key" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Info_dup(MPI_Info, MPI_Info *) C
-->
<method name="MPI_Info_dup" kind="final">
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : newinfo -->
<arg name="newinfo" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Info" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Info MPI_Info_f2c(MPI_Fint info) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Info_free(MPI_Info *) C
-->
<method name="MPI_Info_free" kind="final">
<!-- ARGUMENT : info -->
<arg name="info" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Info" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Info_get(MPI_Info, char *, int, char *, int *) C
-->
<method name="MPI_Info_get" kind="final">
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : key -->
<arg name="key" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : valuelen -->
<arg name="valuelen" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : value -->
<arg name="value" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Info_get_nkeys(MPI_Info, int *) C
-->
<method name="MPI_Info_get_nkeys" kind="final">
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : nkeys -->
<arg name="nkeys" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Info_get_nthkey(MPI_Info, int, char *) C
-->
<method name="MPI_Info_get_nthkey" kind="final">
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : n -->
<arg name="n" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : key -->
<arg name="key" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Info_get_valuelen(MPI_Info, char *, int *, int *) C
-->
<method name="MPI_Info_get_valuelen" kind="final">
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : key -->
<arg name="key" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : valuelen -->
<arg name="valuelen" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Info_set(MPI_Info, char *, char *) C
-->
<method name="MPI_Info_set" kind="final">
<!-- ARGUMENT : info -->
<arg name="info" intent="inout">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : key -->
<arg name="key" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : value -->
<arg name="value" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Init(int *, char ***) C
- NOTE: argc and argv parameters removed for Fortran code generation
-->
<method name="MPI_Init" kind="final">
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int"/>
</return>
</method>
<!--
- METHOD: int MPI_Init_thread(int *, char ***, int, int *) C
- NOTE: argc and argv parameters removed for Fortran code generation
-->
<method name="MPI_Init_thread" kind="final">
<!-- ARGUMENT : required -->
<arg name="required" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : provided -->
<arg name="provided" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Initialized(int *) C
-->
<method name="MPI_Initialized" kind="final">
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Intercomm_create(MPI_Comm, int, MPI_Comm, int, int, MPI_Comm *) C
-->
<method name="MPI_Intercomm_create" kind="final">
<!-- ARGUMENT : local_comm -->
<arg name="local_comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : local_leader -->
<arg name="local_leader" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : bridge_comm -->
<arg name="bridge_comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : remote_leader -->
<arg name="remote_leader" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : newintercomm -->
<arg name="newintercomm" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Intercomm_merge(MPI_Comm, int, MPI_Comm *) C
-->
<method name="MPI_Intercomm_merge" kind="final">
<!-- ARGUMENT : intercomm -->
<arg name="intercomm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : high -->
<arg name="high" intent="in">
<type kind="bool" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : newintercomm -->
<arg name="newintercomm" intent="out" alias="newintracomm">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Iprobe(int, int, MPI_Comm, int *, MPI_Status *) C
-->
<method name="MPI_Iprobe" kind="final">
<!-- ARGUMENT : source -->
<arg name="source" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Irecv(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) C
-->
<method name="MPI_Irecv" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : source -->
<arg name="source" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Irsend(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) C
-->
<method name="MPI_Irsend" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Is_thread_main(int *) C
-->
<method name="MPI_Is_thread_main" kind="final">
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Isend(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) C
-->
<method name="MPI_Isend" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Issend(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) C
-->
<method name="MPI_Issend" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Keyval_create(MPI_Copy_function *, MPI_Delete_function *, int *, void *) C
- NOTE: First two parameters are external functions
-->
<method name="MPI_Keyval_create" kind="final">
<!-- ARGUMENT : copy_fn -->
<arg name="copy_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Copy_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : delete_fn -->
<arg name="delete_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Delete_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : keyval -->
<arg name="keyval" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : extra_state -->
<arg name="extra_state" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Keyval_free(int *) C
-->
<method name="MPI_Keyval_free" kind="final">
<!-- ARGUMENT : keyval -->
<arg name="keyval" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Fint MPI_Op_c2f(MPI_Op op) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Op_create(MPI_User_function *, int, MPI_Op *) C
- NOTE: First parameter is an external function
-->
<method name="MPI_Op_create" kind="final">
<!-- ARGUMENT : function -->
<arg name="function" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_User_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : commute -->
<arg name="commute" intent="in">
<type kind="bool" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : op -->
<arg name="op" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Op" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Op MPI_Op_f2c(MPI_Fint op) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Op_free(MPI_Op *) C
-->
<method name="MPI_Op_free" kind="final">
<!-- ARGUMENT : op -->
<arg name="op" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Op" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Pack(void *, int, MPI_Datatype, void *, int, int *, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Pack" kind="final" template="yes">
<!-- ARGUMENT : inbuf -->
<arg name="inbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : incount -->
<arg name="incount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : outbuf -->
<arg name="outbuf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : outsize -->
<arg name="outsize" intent="out">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : position -->
<arg name="position" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Pack_external(char *, void *, int, MPI_Datatype, void *, MPI_Aint, MPI_Aint *) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Pack_external" kind="final" template="yes">
<!-- ARGUMENT : datarep -->
<arg name="datarep" intent="in">
<type kind="ptr">
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : inbuf -->
<arg name="inbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : incount -->
<arg name="incount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : outbuf -->
<arg name="outbuf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : outsize -->
<arg name="outsize" intent="in">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</arg>
<!-- ARGUMENT : position -->
<arg name="position" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Pack_external_size(char *, int, MPI_Datatype, MPI_Aint *) C
-->
<method name="MPI_Pack_external_size" kind="final">
<!-- ARGUMENT : datarep -->
<arg name="datarep" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : incount -->
<arg name="incount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : size -->
<arg name="size" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Pack_size(int, MPI_Datatype, MPI_Comm, int *) C
-->
<method name="MPI_Pack_size" kind="final">
<!-- ARGUMENT : incount -->
<arg name="incount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : size -->
<arg name="size" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Pcontrol(int, ...) C
- NOTE: variable number of arguments, do not provide Fortran interface
-->
<method name="MPI_Pcontrol" kind="final">
<!-- ARGUMENT : level -->
<arg name="level" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return>
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Probe(int, int, MPI_Comm, MPI_Status *) C
-->
<method name="MPI_Probe" kind="final">
<!-- ARGUMENT : source -->
<arg name="source" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Put(void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype, MPI_Win) C
-->
<method name="MPI_Put" kind="final" template="yes">
<!-- ARGUMENT : origin_addr -->
<arg name="origin_addr" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : origin_count -->
<arg name="origin_count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : origin_datatype -->
<arg name="origin_datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : target_rank -->
<arg name="target_rank" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : target_disp -->
<arg name="target_disp" intent="in">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</arg>
<!-- ARGUMENT : target_count -->
<arg name="target_count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : target_datatype -->
<arg name="target_datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Query_thread(int *) C
-->
<method name="MPI_Query_thread" kind="final">
<!-- ARGUMENT : provided -->
<arg name="provided" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Recv(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *) C
-->
<method name="MPI_Recv" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : source -->
<arg name="source" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Recv_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) C
-->
<method name="MPI_Recv_init" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : source -->
<arg name="source" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Reduce(void *, void *, int, MPI_Datatype, MPI_Op, int, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Reduce" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="inout">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : op -->
<arg name="op" intent="in">
<type kind="usertype" usertype="MPI_Op" >
</type>
</arg>
<!-- ARGUMENT : root -->
<arg name="root" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Reduce_scatter(void *, void *, int *, MPI_Datatype, MPI_Op, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Reduce_scatter" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="inout">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvcounts -->
<arg name="recvcounts" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : op -->
<arg name="op" intent="in">
<type kind="usertype" usertype="MPI_Op" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Register_datarep(char *, MPI_Datarep_conversion_function *, MPI_Datarep_conversion_function *, MPI_Datarep_extent_function *, void *) C
- NOTE: Three parameters are external functions
-->
<method name="MPI_Register_datarep" kind="final">
<!-- ARGUMENT : datarep -->
<arg name="datarep" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : read_conversion_fn -->
<arg name="read_conversion_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datarep_conversion_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : write_conversion_fn -->
<arg name="write_conversion_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datarep_conversion_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : dtype_file_extent_fn -->
<arg name="dtype_file_extent_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datarep_extent_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : extra_state -->
<arg name="extra_state" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Fint MPI_Request_c2f(MPI_Request request) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: MPI_Request MPI_Request_f2c(MPI_Fint request) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Request_free(MPI_Request *) C
-->
<method name="MPI_Request_free" kind="final">
<!-- ARGUMENT : request -->
<arg name="request" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Request_get_status(MPI_Request, int *, MPI_Status *) C
-->
<method name="MPI_Request_get_status" kind="final">
<!-- ARGUMENT : request -->
<arg name="request" intent="in">
<type kind="usertype" usertype="MPI_Request" >
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Rsend(void *, int, MPI_Datatype, int, int, MPI_Comm) C
-->
<method name="MPI_Rsend" kind="final" template="yes">
<!-- ARGUMENT : ibuf -->
<arg name="ibuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Rsend_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) C
-->
<method name="MPI_Rsend_init" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Scan(void *, void *, int, MPI_Datatype, MPI_Op, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Scan" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="inout">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : op -->
<arg name="op" intent="in">
<type kind="usertype" usertype="MPI_Op" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Scatter(void *, int, MPI_Datatype, void *, int, MPI_Datatype, int, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Scatter" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : sendcount -->
<arg name="sendcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : sendtype -->
<arg name="sendtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="inout">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvcount -->
<arg name="recvcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : recvtype -->
<arg name="recvtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : root -->
<arg name="root" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Scatterv(void *, int *, int *, MPI_Datatype, void *, int, MPI_Datatype, int, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Scatterv" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : sendcounts -->
<arg name="sendcounts" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : displs -->
<arg name="displs" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : sendtype -->
<arg name="sendtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvcount -->
<arg name="recvcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : recvtype -->
<arg name="recvtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : root -->
<arg name="root" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Send(void *, int, MPI_Datatype, int, int, MPI_Comm) C
-->
<method name="MPI_Send" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Send_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) C
-->
<method name="MPI_Send_init" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Sendrecv(void *, int, MPI_Datatype, int, int, void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Sendrecv" kind="final" template="yes">
<!-- ARGUMENT : sendbuf -->
<arg name="sendbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : sendcount -->
<arg name="sendcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : sendtype -->
<arg name="sendtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : sendtag -->
<arg name="sendtag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : recvbuf -->
<arg name="recvbuf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : recvcount -->
<arg name="recvcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : recvtype -->
<arg name="recvtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : source -->
<arg name="source" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : recvtag -->
<arg name="recvtag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Sendrecv_replace(void *, int, MPI_Datatype, int, int, int, int, MPI_Comm, MPI_Status *) C
-->
<method name="MPI_Sendrecv_replace" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="inout">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : sendtag -->
<arg name="sendtag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : source -->
<arg name="source" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : recvtag -->
<arg name="recvtag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_SIZEOF(void *, int) C
- NOTE: no C equivalent
-->
<method name="MPI_SIZEOF" kind="final" template="yes">
<!-- ARGUMENT : x is a Fortran variable of numeric intrisic type -->
<arg name="x" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="void"/>
</indirect>
</type>
</arg>
<!-- ARGUMENT : size is the size of the machine representation -->
<arg name="size" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int"/>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int"/>
</return>
</method>
<!--
- METHOD: int MPI_Ssend(void *, int, MPI_Datatype, int, int, MPI_Comm) C
-->
<method name="MPI_Ssend" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Ssend_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *) C
-->
<method name="MPI_Ssend_init" kind="final" template="yes">
<!-- ARGUMENT : buf -->
<arg name="buf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : dest -->
<arg name="dest" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : tag -->
<arg name="tag" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : request -->
<arg name="request" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Start(MPI_Request *) C
-->
<method name="MPI_Start" kind="final">
<!-- ARGUMENT : request -->
<arg name="request" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Startall(int, MPI_Request *) C
-->
<method name="MPI_Startall" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_requests -->
<arg name="array_of_requests" intent="inout">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Request"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Status_c2f(MPI_Status *c_status, MPI_Fint *f_status) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Status_f2c(MPI_Fint *f_status, MPI_Status *c_status) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Status_set_cancelled(MPI_Status *, int) C
-->
<method name="MPI_Status_set_cancelled" kind="final">
<!-- ARGUMENT : status -->
<arg name="status" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="in">
<type kind="bool" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Status_set_elements(MPI_Status *, MPI_Datatype, int) C
-->
<method name="MPI_Status_set_elements" kind="final">
<!-- ARGUMENT : status -->
<arg name="status" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Test(MPI_Request *, int *, MPI_Status *) C
-->
<method name="MPI_Test" kind="final">
<!-- ARGUMENT : request -->
<arg name="request" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Test_cancelled(MPI_Status *, int *) C
-->
<method name="MPI_Test_cancelled" kind="final">
<!-- ARGUMENT : status -->
<arg name="status" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Testall(int, MPI_Request *, int *, MPI_Status *) C
-->
<method name="MPI_Testall" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_requests -->
<arg name="array_of_requests" intent="inout">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Request"/>
<dimension extent="count"/>
</array>
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : array_of_statuses -->
<arg name="array_of_statuses" intent="inout">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="count, MPI_STATUS_SIZE"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Testany(int, MPI_Request *, int *, int *, MPI_Status *) C
-->
<method name="MPI_Testany" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_requests -->
<arg name="array_of_requests" intent="inout">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Request"/>
<dimension extent="count"/>
</array>
</type>
</arg>
<!-- ARGUMENT : index -->
<arg name="index" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Testsome(int, MPI_Request *, int *, int *, MPI_Status *) C
-->
<method name="MPI_Testsome" kind="final">
<!-- ARGUMENT : incount -->
<arg name="incount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_requests -->
<arg name="array_of_requests" intent="inout">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Request"/>
<dimension extent="incount"/>
</array>
</type>
</arg>
<!-- ARGUMENT : outcount -->
<arg name="outcount" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : array_of_indices -->
<arg name="array_of_indices" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_statuses -->
<arg name="array_of_statuses" intent="inout">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="incount, MPI_STATUS_SIZE"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Topo_test(MPI_Comm, int *) C
-->
<method name="MPI_Topo_test" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Fint MPI_Type_c2f(MPI_Type type) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Type_commit(MPI_Datatype *) C
-->
<method name="MPI_Type_commit" kind="final">
<!-- ARGUMENT : type -->
<arg name="type" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_contiguous(int, MPI_Datatype, MPI_Datatype *) C
-->
<method name="MPI_Type_contiguous" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : oldtype -->
<arg name="oldtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_create_darray(int, int, int, int *, int *, int *, int *, int, MPI_Datatype, MPI_Datatype *) C
-->
<method name="MPI_Type_create_darray" kind="final">
<!-- ARGUMENT : size -->
<arg name="size" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : rank -->
<arg name="rank" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : ndims -->
<arg name="ndims" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : gsize_array -->
<arg name="gsize_array" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : distrib_array -->
<arg name="distrib_array" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : darg_array -->
<arg name="darg_array" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : psize_array -->
<arg name="psize_array" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : order -->
<arg name="order" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : oldtype -->
<arg name="oldtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_create_f90_complex(int, int, MPI_Datatype *) C
-->
<method name="MPI_Type_create_f90_complex" kind="final">
<!-- ARGUMENT : p -->
<arg name="p" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : r -->
<arg name="r" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_create_f90_integer(int, MPI_Datatype *) C
-->
<method name="MPI_Type_create_f90_integer" kind="final">
<!-- ARGUMENT : r -->
<arg name="r" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_create_f90_real(int, int, MPI_Datatype *) C
-->
<method name="MPI_Type_create_f90_real" kind="final">
<!-- ARGUMENT : p -->
<arg name="p" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : r -->
<arg name="r" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_create_hindexed(int, int *, MPI_Aint *, MPI_Datatype, MPI_Datatype *) C
-->
<method name="MPI_Type_create_hindexed" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_blocklengths -->
<arg name="array_of_blocklengths" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_displacements -->
<arg name="array_of_displacements" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Aint"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : oldtype -->
<arg name="oldtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_create_hvector(int, int, MPI_Aint, MPI_Datatype, MPI_Datatype *) C
-->
<method name="MPI_Type_create_hvector" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : blocklength -->
<arg name="blocklength" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : stride -->
<arg name="stride" intent="in">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</arg>
<!-- ARGUMENT : oldtype -->
<arg name="oldtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_create_indexed_block(int, int, int *, MPI_Datatype, MPI_Datatype *) C
-->
<method name="MPI_Type_create_indexed_block" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : blocklength -->
<arg name="blocklength" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_displacements -->
<arg name="array_of_displacements" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : oldtype -->
<arg name="oldtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_create_keyval(MPI_Type_copy_attr_function *, MPI_Type_delete_attr_function *, int *, void *) C
- NOTE: Two parameters are external functions
-->
<method name="MPI_Type_create_keyval" kind="final">
<!-- ARGUMENT : type_copy_attr_fn -->
<arg name="type_copy_attr_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Type_copy_attr_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : type_delete_attr_fn -->
<arg name="type_delete_attr_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Type_delete_attr_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : type_keyval -->
<arg name="type_keyval" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : extra_state -->
<arg name="extra_state" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_create_resized(MPI_Datatype, MPI_Aint, MPI_Aint, MPI_Datatype *) C
-->
<method name="MPI_Type_create_resized" kind="final">
<!-- ARGUMENT : oldtype -->
<arg name="oldtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : lb -->
<arg name="lb" intent="in">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</arg>
<!-- ARGUMENT : extent -->
<arg name="extent" intent="in">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_create_struct(int, int *, MPI_Aint *, MPI_Datatype *, MPI_Datatype *) C
-->
<method name="MPI_Type_create_struct" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_block_lengths -->
<arg name="array_of_block_lengths" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_displacements -->
<arg name="array_of_displacements" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Aint"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_types -->
<arg name="array_of_types" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Datatype"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_create_subarray(int, int *, int *, int *, int, MPI_Datatype, MPI_Datatype *) C
-->
<method name="MPI_Type_create_subarray" kind="final">
<!-- ARGUMENT : ndims -->
<arg name="ndims" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : size_array -->
<arg name="size_array" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : subsize_array -->
<arg name="subsize_array" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : start_array -->
<arg name="start_array" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : order -->
<arg name="order" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : oldtype -->
<arg name="oldtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_delete_attr(MPI_Datatype, int) C
-->
<method name="MPI_Type_delete_attr" kind="final">
<!-- ARGUMENT : type -->
<arg name="type" intent="inout">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : type_keyval -->
<arg name="type_keyval" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_dup(MPI_Datatype, MPI_Datatype *) C
-->
<method name="MPI_Type_dup" kind="final">
<!-- ARGUMENT : type -->
<arg name="type" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_extent(MPI_Datatype, MPI_Aint *) C
-->
<method name="MPI_Type_extent" kind="final">
<!-- ARGUMENT : type -->
<arg name="type" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : extent -->
<arg name="extent" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="default_integer" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Type MPI_Type_f2c(MPI_Fint type) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Type_free(MPI_Datatype *) C
-->
<method name="MPI_Type_free" kind="final">
<!-- ARGUMENT : type -->
<arg name="type" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_free_keyval(int *) C
-->
<method name="MPI_Type_free_keyval" kind="final">
<!-- ARGUMENT : type_keyval -->
<arg name="type_keyval" intent="inout">
<type kind="ptr" idl="MPI_Fint">
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_get_attr(MPI_Datatype, int, void *, int *) C
-->
<method name="MPI_Type_get_attr" kind="final">
<!-- ARGUMENT : type -->
<arg name="type" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : type_keyval -->
<arg name="type_keyval" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : attribute_val -->
<arg name="attribute_val" intent="out">
<type kind="ptr" idl="MPI_Aint">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_get_contents(MPI_Datatype, int, int, int, int *, MPI_Aint *, MPI_Datatype *) C
-->
<method name="MPI_Type_get_contents" kind="final">
<!-- ARGUMENT : mtype -->
<arg name="mtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : max_integers -->
<arg name="max_integers" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : max_addresses -->
<arg name="max_addresses" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : max_datatypes -->
<arg name="max_datatypes" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_integers -->
<arg name="array_of_integers" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_addresses -->
<arg name="array_of_addresses" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Aint"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_datatypes -->
<arg name="array_of_datatypes" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Datatype"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_get_envelope(MPI_Datatype, int *, int *, int *, int *) C
-->
<method name="MPI_Type_get_envelope" kind="final">
<!-- ARGUMENT : type -->
<arg name="type" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : num_integers -->
<arg name="num_integers" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : num_addresses -->
<arg name="num_addresses" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : num_datatypes -->
<arg name="num_datatypes" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : combiner -->
<arg name="combiner" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_get_extent(MPI_Datatype, MPI_Aint *, MPI_Aint *) C
-->
<method name="MPI_Type_get_extent" kind="final">
<!-- ARGUMENT : type -->
<arg name="type" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : lb -->
<arg name="lb" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : extent -->
<arg name="extent" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_get_name(MPI_Datatype, char *, int *) C
-->
<method name="MPI_Type_get_name" kind="final">
<!-- ARGUMENT : type -->
<arg name="type" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : type_name -->
<arg name="type_name" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : resultlen -->
<arg name="resultlen" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_get_true_extent(MPI_Datatype, MPI_Aint *, MPI_Aint *) C
-->
<method name="MPI_Type_get_true_extent" kind="final">
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : true_lb -->
<arg name="true_lb" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : true_extent -->
<arg name="true_extent" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_hindexed(int, int *, MPI_Aint *, MPI_Datatype, MPI_Datatype *) C
-->
<method name="MPI_Type_hindexed" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_blocklengths -->
<arg name="array_of_blocklengths" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_displacements -->
<arg name="array_of_displacements" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="default_integer"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : oldtype -->
<arg name="oldtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_hvector(int, int, MPI_Aint, MPI_Datatype, MPI_Datatype *) C
-->
<method name="MPI_Type_hvector" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : blocklength -->
<arg name="blocklength" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : stride -->
<arg name="stride" intent="in">
<type kind="usertype" usertype="default_integer" >
</type>
</arg>
<!-- ARGUMENT : oldtype -->
<arg name="oldtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_indexed(int, int *, int *, MPI_Datatype, MPI_Datatype *) C
-->
<method name="MPI_Type_indexed" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_blocklengths -->
<arg name="array_of_blocklengths" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_displacements -->
<arg name="array_of_displacements" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : oldtype -->
<arg name="oldtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_lb(MPI_Datatype, MPI_Aint *) C
-->
<method name="MPI_Type_lb" kind="final">
<!-- ARGUMENT : type -->
<arg name="type" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : lb -->
<arg name="lb" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="default_integer" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_match_size(int, int, MPI_Datatype *) C
-->
<method name="MPI_Type_match_size" kind="final">
<!-- ARGUMENT : typeclass -->
<arg name="typeclass" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : size -->
<arg name="size" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : type -->
<arg name="type" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_set_attr(MPI_Datatype, int, void *) C
-->
<method name="MPI_Type_set_attr" kind="final">
<!-- ARGUMENT : type (officially INOUT in MPI standard) -->
<arg name="type" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : type_keyval -->
<arg name="type_keyval" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : attr_val -->
<arg name="attr_val" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="void" idl="MPI_Aint">
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_set_name(MPI_Datatype, char *) C
-->
<method name="MPI_Type_set_name" kind="final">
<!-- ARGUMENT : type -->
<arg name="type" intent="inout">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : type_name -->
<arg name="type_name" intent="in">
<type kind="ptr" alias="name_len">
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_size(MPI_Datatype, int *) C
-->
<method name="MPI_Type_size" kind="final">
<!-- ARGUMENT : type -->
<arg name="type" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : size -->
<arg name="size" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_struct(int, int *, MPI_Aint *, MPI_Datatype *, MPI_Datatype *) C
-->
<method name="MPI_Type_struct" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_blocklengths -->
<arg name="array_of_blocklengths" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_displacements -->
<arg name="array_of_displacements" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="default_integer"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_types -->
<arg name="array_of_types" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Datatype"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_ub(MPI_Datatype, MPI_Aint *) C
-->
<method name="MPI_Type_ub" kind="final">
<!-- ARGUMENT : mtype -->
<arg name="mtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : ub -->
<arg name="ub" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="default_integer" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Type_vector(int, int, int, MPI_Datatype, MPI_Datatype *) C
-->
<method name="MPI_Type_vector" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : blocklength -->
<arg name="blocklength" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : stride -->
<arg name="stride" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : oldtype -->
<arg name="oldtype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : newtype -->
<arg name="newtype" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Unpack(void *, int, int *, void *, int, MPI_Datatype, MPI_Comm) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Unpack" kind="final" template="yes">
<!-- ARGUMENT : inbuf -->
<arg name="inbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : insize -->
<arg name="insize" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : position -->
<arg name="position" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : outbuf -->
<arg name="outbuf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : outcount -->
<arg name="outcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Unpack_external(char *, void *, MPI_Aint, MPI_Aint *, void *, int, MPI_Datatype) C
- WARNING, this method has two choice arguments.
-->
<method name="MPI_Unpack_external" kind="final" template="yes">
<!-- ARGUMENT : datarep -->
<arg name="datarep" intent="in">
<type kind="ptr">
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : inbuf -->
<arg name="inbuf" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : insize -->
<arg name="insize" intent="in">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</arg>
<!-- ARGUMENT : position -->
<arg name="position" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : outbuf -->
<arg name="outbuf" intent="out">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : outcount -->
<arg name="outcount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : datatype -->
<arg name="datatype" intent="in">
<type kind="usertype" usertype="MPI_Datatype" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Wait(MPI_Request *, MPI_Status *) C
-->
<method name="MPI_Wait" kind="final">
<!-- ARGUMENT : request -->
<arg name="request" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Request" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Waitall(int, MPI_Request *, MPI_Status *) C
-->
<method name="MPI_Waitall" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_requests -->
<arg name="array_of_requests" intent="inout">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Request"/>
<dimension extent="count"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_statuses NOTE: array of arrays -->
<arg name="array_of_statuses" intent="inout">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="count, MPI_STATUS_SIZE"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Waitany(int, MPI_Request *, int *, MPI_Status *) C
-->
<method name="MPI_Waitany" kind="final">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_requests -->
<arg name="array_of_requests" intent="inout">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Request"/>
<dimension extent="count"/>
</array>
</type>
</arg>
<!-- ARGUMENT : index -->
<arg name="index" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : status -->
<arg name="status" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Status" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Waitsome(int, MPI_Request *, int *, int *, MPI_Status *) C
-->
<method name="MPI_Waitsome" kind="final">
<!-- ARGUMENT : incount -->
<arg name="incount" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_requests -->
<arg name="array_of_requests" intent="inout">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Request"/>
<dimension extent="incount"/>
</array>
</type>
</arg>
<!-- ARGUMENT : outcount -->
<arg name="outcount" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : array_of_indices -->
<arg name="array_of_indices" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_statuses NOTE: array of array -->
<arg name="array_of_statuses" intent="inout">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="incount, MPI_STATUS_SIZE"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Fint MPI_Win_c2f(MPI_Win win) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Win_call_errhandler(MPI_Win, int) C
-->
<method name="MPI_Win_call_errhandler" kind="final">
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- ARGUMENT : errorcode -->
<arg name="errorcode" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_complete(MPI_Win) C
-->
<method name="MPI_Win_complete" kind="final">
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_create(void *, MPI_Aint, int, MPI_Info, MPI_Comm, MPI_Win *) C
-->
<method name="MPI_Win_create" kind="final" template="yes">
<!-- ARGUMENT : base -->
<arg name="base" intent="in">
<type kind="ptr" idl="choice">
<indirect depth="1" kind="pointer">
<type kind="void">
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : size -->
<arg name="size" intent="in">
<type kind="usertype" usertype="MPI_Aint" >
</type>
</arg>
<!-- ARGUMENT : disp_unit -->
<arg name="disp_unit" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Win" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_create_errhandler(MPI_Win_errhandler_fn *, MPI_Errhandler *) C
- NOTE: First parameter is an external function
-->
<method name="MPI_Win_create_errhandler" kind="final">
<!-- ARGUMENT : function -->
<arg name="function" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Win_errhandler_fn" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : errhandler -->
<arg name="errhandler" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Errhandler" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_create_keyval(MPI_Win_copy_attr_function *, MPI_Win_delete_attr_function *, int *, void *) C
- NOTE: Two parameters are external functions
-->
<method name="MPI_Win_create_keyval" kind="final">
<!-- ARGUMENT : win_copy_attr_fn -->
<arg name="win_copy_attr_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Win_copy_attr_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : win_delete_attr_fn -->
<arg name="win_delete_attr_fn" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Win_delete_attr_function" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : win_keyval -->
<arg name="win_keyval" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : extra_state -->
<arg name="extra_state" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_delete_attr(MPI_Win, int) C
-->
<method name="MPI_Win_delete_attr" kind="final">
<!-- ARGUMENT : win -->
<arg name="win" intent="inout">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- ARGUMENT : win_keyval -->
<arg name="win_keyval" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: MPI_Win MPI_Win_f2c(MPI_Fint win) C
- NOTE: no Fortran binding
-->
<!--
- METHOD: int MPI_Win_fence(int, MPI_Win) C
-->
<method name="MPI_Win_fence" kind="final">
<!-- ARGUMENT : assert -->
<arg name="assert" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_free(MPI_Win *) C
-->
<method name="MPI_Win_free" kind="final">
<!-- ARGUMENT : win -->
<arg name="win" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Win" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_free_keyval(int *) C
-->
<method name="MPI_Win_free_keyval" kind="final">
<!-- ARGUMENT : win_keyval -->
<arg name="win_keyval" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_get_attr(MPI_Win, int, void *, int *) C
-->
<method name="MPI_Win_get_attr" kind="final">
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- ARGUMENT : win_keyval -->
<arg name="win_keyval" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : attribute_val -->
<arg name="attribute_val" intent="out">
<type kind="ptr" idl="MPI_Aint">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_get_errhandler(MPI_Win, MPI_Errhandler *) C
-->
<method name="MPI_Win_get_errhandler" kind="final">
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- ARGUMENT : errhandler -->
<arg name="errhandler" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Errhandler" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_get_group(MPI_Win, MPI_Group *) C
-->
<method name="MPI_Win_get_group" kind="final">
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- ARGUMENT : group -->
<arg name="group" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Group" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_get_name(MPI_Win, char *, int *) C
-->
<method name="MPI_Win_get_name" kind="final">
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- ARGUMENT : win_name -->
<arg name="win_name" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : resultlen -->
<arg name="resultlen" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_lock(int, int, int, MPI_Win) C
-->
<method name="MPI_Win_lock" kind="final">
<!-- ARGUMENT : lock_type -->
<arg name="lock_type" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : rank -->
<arg name="rank" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : assert -->
<arg name="assert" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_post(MPI_Group, int, MPI_Win) C
-->
<method name="MPI_Win_post" kind="final">
<!-- ARGUMENT : group -->
<arg name="group" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : assert -->
<arg name="assert" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_set_attr(MPI_Win, int, void *) C
-->
<method name="MPI_Win_set_attr" kind="final">
<!-- ARGUMENT : win (officially INOUT in MPI standard) -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- ARGUMENT : win_keyval -->
<arg name="win_keyval" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : attribute_val -->
<arg name="attribute_val" intent="in">
<type kind="ptr" idl="MPI_Aint">
<indirect depth="1" kind="pointer">
<type kind="void" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_set_errhandler(MPI_Win, MPI_Errhandler) C
-->
<method name="MPI_Win_set_errhandler" kind="final">
<!-- ARGUMENT : win -->
<arg name="win" intent="inout">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- ARGUMENT : errhandler -->
<arg name="errhandler" intent="in">
<type kind="usertype" usertype="MPI_Errhandler" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_set_name(MPI_Win, char *) C
-->
<method name="MPI_Win_set_name" kind="final">
<!-- ARGUMENT : win -->
<arg name="win" intent="inout">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- ARGUMENT : win_name -->
<arg name="win_name" intent="in">
<type kind="ptr" alias="name_len">
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_start(MPI_Group, int, MPI_Win) C
-->
<method name="MPI_Win_start" kind="final">
<!-- ARGUMENT : group -->
<arg name="group" intent="in">
<type kind="usertype" usertype="MPI_Group" >
</type>
</arg>
<!-- ARGUMENT : assert -->
<arg name="assert" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_test(MPI_Win, int *) C
-->
<method name="MPI_Win_test" kind="final">
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- ARGUMENT : flag -->
<arg name="flag" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="bool" ikind="int" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_unlock(int, MPI_Win) C
-->
<method name="MPI_Win_unlock" kind="final">
<!-- ARGUMENT : rank -->
<arg name="rank" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Win_wait(MPI_Win) C
-->
<method name="MPI_Win_wait" kind="final">
<!-- ARGUMENT : win -->
<arg name="win" intent="in">
<type kind="usertype" usertype="MPI_Win" >
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: double MPI_Wtick() C
- NOTE: already defined in mpif-common.h
-->
<!--
- METHOD: double MPI_Wtime() C
- NOTE: already defined in mpif-common.h
-->
<!--
################################################
NOTE: Extra procedures not in IBM documentations (MPI2?)
-->
<!--
- METHOD: int MPI_Close_port(char *) C
-->
<method name="MPI_Close_port" kind="final">
<!-- ARGUMENT : port_name -->
<arg name="port_name" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Lookup_name(char *, MPI_Info, char *) C
-->
<method name="MPI_Lookup_name" kind="final">
<!-- ARGUMENT : service_name -->
<arg name="service_name" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : port_name -->
<arg name="port_name" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Open_port(MPI_Info, char *) C
-->
<method name="MPI_Open_port" kind="final">
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : port_name -->
<arg name="port_name" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Publish_name(char *, MPI_Info, char *) C
-->
<method name="MPI_Publish_name" kind="final">
<!-- ARGUMENT : service_name -->
<arg name="service_name" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : port_name -->
<arg name="port_name" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Unpublish_name(char *, MPI_Info, char *) C
-->
<method name="MPI_Unpublish_name" kind="final">
<!-- ARGUMENT : service_name -->
<arg name="service_name" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : port_name -->
<arg name="port_name" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_disconnect(MPI_Comm *) C
-->
<method name="MPI_Comm_disconnect" kind="final">
<!-- ARGUMENT : comm -->
<arg name="comm" intent="inout">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_get_parent(MPI_Comm *) C
-->
<method name="MPI_Comm_get_parent" kind="final">
<!-- ARGUMENT : parent -->
<arg name="parent" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_join(int, MPI_Comm *) C
-->
<method name="MPI_Comm_join" kind="final">
<!-- ARGUMENT : fd -->
<arg name="fd" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : intercomm -->
<arg name="intercomm" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_accept(char *, MPI_Info, int, MPI_Comm, MPI_Comm *) C
-->
<method name="MPI_Comm_accept" kind="final">
<!-- ARGUMENT : port_name -->
<arg name="port_name" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : root -->
<arg name="root" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : newcomm -->
<arg name="newcomm" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_connect(char *, MPI_Info, int, MPI_Comm, MPI_Comm *) C
-->
<method name="MPI_Comm_connect" kind="final">
<!-- ARGUMENT : port_name -->
<arg name="port_name" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : root -->
<arg name="root" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : newcomm -->
<arg name="newcomm" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_spawn(char *, char **, int, MPI_Info, int, MPI_Comm, MPI_Comm *, int *) C
- NOTE: argv?
-->
<method name="MPI_Comm_spawn" kind="final">
<!-- ARGUMENT : command -->
<arg name="command" intent="in">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : argv -->
<arg name="argv" intent="in">
<type kind="ptr" idl="MPI_ARGV">
<indirect depth="2" kind="pointer">
<type kind="int" ikind="char" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : maxprocs -->
<arg name="maxprocs" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : info -->
<arg name="info" intent="in">
<type kind="usertype" usertype="MPI_Info" >
</type>
</arg>
<!-- ARGUMENT : root -->
<arg name="root" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : intercomm -->
<arg name="intercomm" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : array_of_errcodes -->
<arg name="array_of_errcodes" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_spawn_multiple(int, char **, char ***, int *, MPI_Info *, int, MPI_Comm, MPI_Comm *, int *) C
#
# The SPAWN_MULTIPLE interface has a nice compile-time check to ensure
# that the "count" parameter matches the dimension of the other
# parameters. If the constant MPI_ARGVS_NULL is a character array of
# some kind, there is no guarantee that the count value provided by
# the application will match the dimension of MPI_ARGVS_NULL, which
# could therefore result in a[n erroneous] compile-time error. As
# such, it is simpler to just make MPI_ARGVS_NULL a wholly different
# type (e.g., integer) that matches an entirely different interface
# function.
#
-->
<method name="MPI_Comm_spawn_multipleN" kind="final"
interface="MPI_Comm_spawn_multiple">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_commands -->
<arg name="array_of_commands" intent="in">
<type kind="array" idl="MPI_ARGV">
<array lang="c" rank="2">
<type kind="int" ikind="char"/>
<dimension extent="*"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_argv -->
<arg name="array_of_argv" intent="in">
<type kind="array" idl="MPI_A_ARGV">
<array lang="c" rank="3">
<type kind="int" ikind="char"/>
<dimension extent="*"/>
<dimension extent="count"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_maxprocs -->
<arg name="array_of_maxprocs" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_info -->
<arg name="array_of_info" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Info"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : root -->
<arg name="root" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : intercomm -->
<arg name="intercomm" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : array_of_errcodes -->
<arg name="array_of_errcodes" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
<!--
- METHOD: int MPI_Comm_spawn_multiple(int, char **, char ***, int *, MPI_Info *, int, MPI_Comm, MPI_Comm *, int *) C
#
# Now we do the MPI_ARGVS_NULL variant - note the different type for
# the array_of_argv argument from the previous version
#
-->
<method name="MPI_Comm_spawn_multipleAN" kind="final"
interface="MPI_Comm_spawn_multiple">
<!-- ARGUMENT : count -->
<arg name="count" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : array_of_commands -->
<arg name="array_of_commands" intent="in">
<type kind="array" idl="MPI_ARGV">
<array lang="c" rank="2">
<type kind="int" ikind="char"/>
<dimension extent="*"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_argv -->
<arg name="array_of_argv" intent="in">
<type kind="int" ikind="int">
</type>
</arg>
<!-- ARGUMENT : array_of_maxprocs -->
<arg name="array_of_maxprocs" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : array_of_info -->
<arg name="array_of_info" intent="in">
<type kind="array">
<array lang="c" rank="1">
<type kind="usertype" usertype="MPI_Info"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- ARGUMENT : root -->
<arg name="root" intent="in">
<type kind="int" ikind="int" >
</type>
</arg>
<!-- ARGUMENT : comm -->
<arg name="comm" intent="in">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</arg>
<!-- ARGUMENT : intercomm -->
<arg name="intercomm" intent="out">
<type kind="ptr" >
<indirect depth="1" kind="pointer">
<type kind="usertype" usertype="MPI_Comm" >
</type>
</indirect>
</type>
</arg>
<!-- ARGUMENT : array_of_errcodes -->
<arg name="array_of_errcodes" intent="out">
<type kind="array">
<array lang="c" rank="1">
<type kind="int" ikind="int"/>
<dimension extent="*"/>
</array>
</type>
</arg>
<!-- return type (name=int) -->
<return name="ierr">
<type kind="int" ikind="int" >
</type>
</return>
</method>
</scope>
</library>