1
1
openmpi/ompi/mpi/f90/xml/mpi.h.xml
Jeff Squyres d86d15a15c Refs trac:2067: also update the F90 references to *_errhandler_fn (this
XML code in the F90 tree isn't used anymore, but we might as well
update it just so that everything is consistent).

This commit was SVN r22127.

The following Trac tickets were found above:
  Ticket 2067 --> https://svn.open-mpi.org/trac/ompi/ticket/2067
2009-10-22 18:02:48 +00:00

11813 строки
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.
Copyrgiht (c) 2009 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_function *, 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_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: 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_function *, 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_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: 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_function *, 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_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: 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>