Blame src/binding/cxx/mpicxx.h.in

Packit 0848f5
/* -*- Mode: C++; c-basic-offset:4 ; -*- */
Packit 0848f5
/*  
Packit 0848f5
 *  (C) 2001 by Argonne National Laboratory.
Packit 0848f5
 *      See COPYRIGHT in top-level directory.
Packit 0848f5
 *
Packit 0848f5
 * This file is automatically generated by buildiface -nosep -initfile=./cxx.vlist
Packit 0848f5
 * DO NOT EDIT
Packit 0848f5
 */
Packit 0848f5
/* style: c++ header */
Packit 0848f5
Packit 0848f5
#ifdef MPI
Packit 0848f5
#error "You cannot define MPI; that name is reserved for the MPI namespace"
Packit 0848f5
#endif
Packit 0848f5
Packit 0848f5
// Check for incompatible GCC versions
Packit 0848f5
// GCC (specifically) g++ changed the calling convention
Packit 0848f5
// between 3.2.3 and 3.4.3 (!!)  Normally such changes
Packit 0848f5
// should only occur at major releases (e.g., version 3 to 4)
Packit 0848f5
#ifdef __GNUC__ 
Packit Service 0c6f86
# if __GNUC__ >= @GNUCXX_VERSION@ 
Packit 0848f5
#  if __GNUC_MINOR__ > 2 && @GNUCXX_MINORVERSION@ == 2 
Packit 0848f5
#  error 'Please use the same version of GCC and g++ for compiling MPICH and user MPI programs'
Packit 0848f5
#  endif
Packit 0848f5
# endif     
Packit 0848f5
#endif
Packit 0848f5
Packit 0848f5
/* 
Packit 0848f5
 * Because the API is defined, some methods have parameters that are 
Packit 0848f5
 * not used.  The following definition allows us to suppress warnings
Packit 0848f5
 * about unused arguments in methods when -Wall -Wextra are specified.
Packit 0848f5
 * this definition is removed at the end of this file.
Packit 0848f5
 */
Packit 0848f5
#ifdef MPIR_ARGUNUSED
Packit 0848f5
#error MPIR_ARGUNUSED defined
Packit 0848f5
#endif
Packit 0848f5
#if defined(__GNUC__) && __GNUC__ >= 4 
Packit 0848f5
#define MPIR_ARGUNUSED __attribute__((unused))
Packit 0848f5
#else
Packit 0848f5
#define MPIR_ARGUNUSED
Packit 0848f5
#endif
Packit 0848f5
// There is a name conflict between stdio.h and iostream (or iostream.h)
Packit 0848f5
// and the MPI C++ binding with respect to the names SEEK_SET, SEEK_CUR, 
Packit 0848f5
// and SEEK_END.  MPI wants these in the MPI namespace, but stdio.h, 
Packit 0848f5
// iostream, or iostream.h will #define these to integer values.  
Packit 0848f5
// #undef'ing these can cause obscure problems.  
Packit 0848f5
#ifndef MPICH_IGNORE_CXX_SEEK
Packit 0848f5
Packit 0848f5
// MPICH_DONT_INCLUDE_STDIO_H is another escape hatch for us, just like
Packit 0848f5
// MPICH_IGNORE_CXX_SEEK.  If we encounter a wacky environment or user in the
Packit 0848f5
// wild that does not want our workaround and/or the stdio.h header, then we can
Packit 0848f5
// offer them a way out.
Packit 0848f5
#ifndef MPICH_DONT_INCLUDE_STDIO_H
Packit 0848f5
// ensure that we have SEEK_* defined
Packit 0848f5
# include <stdio.h>
Packit 0848f5
#endif
Packit 0848f5
Packit 0848f5
enum MPIR_Dummy_seek_type {
Packit 0848f5
    MPIR_DUMMY_SEEK_COMMA_VAL = -1  // permits cleaner comma logic
Packit 0848f5
#ifdef SEEK_SET
Packit 0848f5
    , MPIR_SEEK_SET = SEEK_SET
Packit 0848f5
#   undef SEEK_SET
Packit 0848f5
    , SEEK_SET = MPIR_SEEK_SET
Packit 0848f5
#endif
Packit 0848f5
#ifdef SEEK_CUR
Packit 0848f5
    , MPIR_SEEK_CUR = SEEK_CUR
Packit 0848f5
#   undef SEEK_CUR
Packit 0848f5
    , SEEK_CUR = MPIR_SEEK_CUR
Packit 0848f5
#endif
Packit 0848f5
#ifdef SEEK_END
Packit 0848f5
    , MPIR_SEEK_END = SEEK_END
Packit 0848f5
#   undef SEEK_END
Packit 0848f5
    , SEEK_END = MPIR_SEEK_END
Packit 0848f5
#endif
Packit 0848f5
#ifdef LOCK_SHARED
Packit 0848f5
    , MPIR_LOCK_SHARED = LOCK_SHARED
Packit 0848f5
#   undef LOCK_SHARED
Packit 0848f5
    , LOCK_SHARED = MPIR_LOCK_SHARED
Packit 0848f5
#endif
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
#endif // MPICH_IGNORE_CXX_SEEK
Packit 0848f5
namespace MPI {
Packit 0848f5
#if @HAVE_CXX_EXCEPTIONS@
Packit 0848f5
#define MPIX_CALLREF( _objptr, fnc ) \
Packit 0848f5
    { int err = fnc; if (err) { (_objptr)->Call_errhandler( err ); }}
Packit 0848f5
#define MPIX_CALLOBJ( _obj, fnc ) \
Packit 0848f5
    { int err = fnc; if (err) { (_obj).Call_errhandler( err ); }}
Packit 0848f5
#define MPIX_CALLWORLD( fnc ) \
Packit 0848f5
    { int err = fnc ; if (err) MPIR_Call_world_errhand( err ); }
Packit 0848f5
extern void MPIR_Call_world_errhand( int );
Packit 0848f5
#else
Packit 0848f5
#define MPIX_CALLREF( _objptr, fnc ) (void)fnc
Packit 0848f5
#define MPIX_CALLOBJ( _obj, fnc ) (void)fnc
Packit 0848f5
#define MPIX_CALLWORLD( fnc ) (void)fnc
Packit 0848f5
#endif
Packit 0848f5
Packit 0848f5
// Typedefs for basic int types
Packit 0848f5
typedef MPI_Offset Offset;
Packit 0848f5
typedef MPI_Aint   Aint;
Packit 0848f5
typedef MPI_Fint   Fint;
Packit 0848f5
Packit 0848f5
// Special internal routine
Packit 0848f5
void MPIR_CXX_InitDatatypeNames( void );
Packit 0848f5
Packit 0848f5
// Forward class declarations
Packit 0848f5
class Comm;
Packit 0848f5
class Nullcomm;
Packit 0848f5
class Intercomm;
Packit 0848f5
class Intracomm;
Packit 0848f5
class Cartcomm;
Packit 0848f5
class Graphcomm;
Packit 0848f5
class File;
Packit 0848f5
Packit 0848f5
// base (classless) routines
Packit 0848f5
extern     int Detach_buffer( void *&v1 ) ;
Packit 0848f5
extern     bool Is_initialized( void ) ;
Packit 0848f5
extern     void Get_processor_name( char * v1, int &v2 ) ;
Packit 0848f5
extern     void Get_error_string( int v1, char * v2, int &v3 ) ;
Packit 0848f5
extern     void Compute_dims( int v1, int v2, int v3[] ) ;
Packit 0848f5
extern     void Get_version( int &v1, int &v2 ) ;
Packit 0848f5
extern     void Finalize( void ) ;
Packit 0848f5
extern     void Pcontrol( const int v1, ... ) ;
Packit 0848f5
extern     void Attach_buffer( void * v1, int v2 ) ;
Packit 0848f5
extern     int Get_error_class( int v1 ) ;
Packit 0848f5
extern     Intracomm COMM_WORLD;
Packit 0848f5
extern     File FILE_NULL;
Packit 0848f5
Packit 0848f5
class Exception  {
Packit 0848f5
Packit 0848f5
  protected:
Packit 0848f5
    int the_real_exception;
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Exception(int obj) : the_real_exception(obj) {}
Packit 0848f5
    inline Exception(void) : the_real_exception(0) {}
Packit 0848f5
Packit 0848f5
    virtual ~Exception() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Exception(const Exception &obj) : the_real_exception(obj.the_real_exception){}
Packit 0848f5
Packit 0848f5
    Exception& operator=(const Exception &obj) {
Packit 0848f5
      the_real_exception = obj.the_real_exception; return *this; }
Packit 0848f5
Packit 0848f5
    // logical
Packit 0848f5
    bool operator== (const Exception &obj) {
Packit 0848f5
      return (the_real_exception == obj.the_real_exception); }
Packit 0848f5
    bool operator!= (const Exception &obj) {
Packit 0848f5
      return (the_real_exception != obj.the_real_exception); }
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator int*() { return &the_real_exception; }
Packit 0848f5
    inline operator int() const { return the_real_exception; }
Packit 0848f5
    Exception& operator=(const int& obj) {
Packit 0848f5
      the_real_exception = obj; return *this; }
Packit 0848f5
Packit 0848f5
  protected:
Packit 0848f5
    char the_error_message[MPI_MAX_ERROR_STRING];
Packit 0848f5
  public:
Packit 0848f5
    int Get_error_code(void) { return the_real_exception; } 
Packit 0848f5
    int Get_error_class(void) { return MPI::Get_error_class(the_real_exception); } 
Packit 0848f5
    const char *Get_error_string(void)
Packit 0848f5
    {
Packit 0848f5
	int len;
Packit 0848f5
	MPI_Error_string(the_real_exception, the_error_message, &len;;
Packit 0848f5
	return the_error_message;
Packit 0848f5
    }
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Datatype  {
Packit 0848f5
    friend class Comm;
Packit 0848f5
    friend class Status;
Packit 0848f5
    friend class Intracomm;
Packit 0848f5
    friend class Intercomm;
Packit 0848f5
    friend class Win;
Packit 0848f5
    friend class File;
Packit 0848f5
    friend class Op;
Packit 0848f5
Packit 0848f5
  protected:
Packit 0848f5
    MPI_Datatype the_real_datatype;
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Datatype(MPI_Datatype obj) : the_real_datatype(obj) {}
Packit 0848f5
    inline Datatype(void) : the_real_datatype(MPI_DATATYPE_NULL) {}
Packit 0848f5
Packit 0848f5
    virtual ~Datatype() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Datatype(const Datatype &obj) : the_real_datatype(obj.the_real_datatype){}
Packit 0848f5
Packit 0848f5
    Datatype& operator=(const Datatype &obj) {
Packit 0848f5
      the_real_datatype = obj.the_real_datatype; return *this; }
Packit 0848f5
Packit 0848f5
    // logical
Packit 0848f5
    bool operator== (const Datatype &obj) {
Packit 0848f5
      return (the_real_datatype == obj.the_real_datatype); }
Packit 0848f5
    bool operator!= (const Datatype &obj) {
Packit 0848f5
      return (the_real_datatype != obj.the_real_datatype); }
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Datatype*() { return &the_real_datatype; }
Packit 0848f5
    inline operator MPI_Datatype() const { return the_real_datatype; }
Packit 0848f5
    Datatype& operator=(const MPI_Datatype& obj) {
Packit 0848f5
      the_real_datatype = obj; return *this; }
Packit 0848f5
    virtual void Commit( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_commit( (MPI_Datatype *) &the_real_datatype ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Free( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_free( (MPI_Datatype *) &the_real_datatype ));
Packit 0848f5
    }
Packit 0848f5
    virtual Datatype Create_indexed( int v1, const int * v2, const int * v3 ) const
Packit 0848f5
    {
Packit 0848f5
        Datatype v5;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_indexed( v1, (const int *)v2, (const int *)v3, (MPI_Datatype) the_real_datatype, &(v5.the_real_datatype) ));
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    virtual Datatype Create_contiguous( int v1 ) const
Packit 0848f5
    {
Packit 0848f5
        Datatype v3;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_contiguous( v1, (MPI_Datatype) the_real_datatype, &(v3.the_real_datatype) ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual Datatype Create_vector( int v1, int v2, int v3 ) const
Packit 0848f5
    {
Packit 0848f5
        Datatype v5;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_vector( v1, v2, v3, (MPI_Datatype) the_real_datatype, &(v5.the_real_datatype) ));
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    static Datatype Create_struct( int v1, int v2[], Aint v3[],  const Datatype v4[] ) 
Packit 0848f5
    {
Packit 0848f5
        Datatype v5;
Packit 0848f5
        MPI_Datatype *l4 = new MPI_Datatype[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i4; 
Packit 0848f5
            for (i4=0;i4
Packit 0848f5
                l4[i4] = v4[i4].the_real_datatype;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_create_struct( v1, (const int  *)v2, (const MPI_Aint  *)v3, l4, &(v5.the_real_datatype) ));
Packit 0848f5
                    delete[] l4;
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    virtual int Pack_size( int v1, const Comm &v3 ) const;
Packit 0848f5
    virtual void Pack( const void * v1, int v2, void * v4, int v5, int &v6, const Comm &v7 ) const;
Packit 0848f5
    virtual int Get_size( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_size( (MPI_Datatype) the_real_datatype, &v2 ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual void Get_envelope( int &v2, int &v3, int &v4, int &v5 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_get_envelope( (MPI_Datatype) the_real_datatype, &v2, &v3, &v4, &v5 ));
Packit 0848f5
    }
Packit 0848f5
    virtual Datatype Create_hvector( int v1, int v2, Aint v3 ) const
Packit 0848f5
    {
Packit 0848f5
        Datatype v5;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_create_hvector( v1, v2, v3, (MPI_Datatype) the_real_datatype, &(v5.the_real_datatype) ));
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    static Datatype Match_size( int v1, int v2 ) 
Packit 0848f5
    {
Packit 0848f5
        Datatype v3;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_match_size( v1, v2, &(v3.the_real_datatype) ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual Datatype Create_resized( const Aint v2, const Aint v3 ) const
Packit 0848f5
    {
Packit 0848f5
        Datatype v4;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_create_resized( (MPI_Datatype) the_real_datatype, (MPI_Aint)v2, (MPI_Aint)v3, &(v4.the_real_datatype) ));
Packit 0848f5
        return v4;
Packit 0848f5
    }
Packit 0848f5
    virtual Datatype Create_indexed_block( int v1, int v2, const int v3[] ) const
Packit 0848f5
    {
Packit 0848f5
        Datatype v5;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_create_indexed_block( v1, v2, (const int  *)v3, (MPI_Datatype) the_real_datatype, &(v5.the_real_datatype) ));
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    virtual Aint Pack_external_size( const char v1[], int v2 ) const
Packit 0848f5
    {
Packit 0848f5
        MPI_Aint v4;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Pack_external_size( v1, v2, (MPI_Datatype) the_real_datatype, &v4 ));
Packit 0848f5
        return v4;
Packit 0848f5
    }
Packit 0848f5
    Datatype Dup( void ) const
Packit 0848f5
    {
Packit 0848f5
        Datatype v2;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_dup( (MPI_Datatype) the_real_datatype, &(v2.the_real_datatype) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual Datatype Create_hindexed( int v1, const int v2[], const Aint v3[] ) const
Packit 0848f5
    {
Packit 0848f5
        Datatype v5;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_create_hindexed( v1, (const int  *)v2, (const MPI_Aint  *)v3, (MPI_Datatype) the_real_datatype, &(v5.the_real_datatype) ));
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    virtual bool Get_attr( int v2, void * v3 ) const
Packit 0848f5
    {
Packit 0848f5
        int v4;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_get_attr( (MPI_Datatype) the_real_datatype, v2, v3, &v4 ));
Packit 0848f5
        return v4!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual void Get_true_extent( Aint & v2, Aint & v3 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_get_true_extent( (MPI_Datatype) the_real_datatype, &v2, &v3 ));
Packit 0848f5
    }
Packit 0848f5
    virtual Datatype Create_darray( int v1, int v2, int v3, const int v4[], const int v5[], const int v6[], const int v7[], int v8 ) const
Packit 0848f5
    {
Packit 0848f5
        Datatype v10;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_create_darray( v1, v2, v3, (const int  *)v4, (const int  *)v5, (const int  *)v6, (const int  *)v7, v8, (MPI_Datatype) the_real_datatype, &(v10.the_real_datatype) ));
Packit 0848f5
        return v10;
Packit 0848f5
    }
Packit 0848f5
    static Datatype Create_f90_real( int v1, int v2 ) 
Packit 0848f5
    {
Packit 0848f5
        Datatype v3;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_create_f90_real( v1, v2, &(v3.the_real_datatype) ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual void Get_contents( int v2, int v3, int v4, int v5[], Aint v6[], Datatype v7[] ) const
Packit 0848f5
    {
Packit 0848f5
        MPI_Datatype *l7 = new MPI_Datatype[v4];
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_get_contents( (MPI_Datatype) the_real_datatype, v2, v3, v4, v5, v6, l7 ));
Packit 0848f5
        { 
Packit 0848f5
            int i7; 
Packit 0848f5
            for (i7=0;i7
Packit 0848f5
                v7[i7].the_real_datatype = l7[i7];
Packit 0848f5
            }
Packit 0848f5
            delete[] l7;
Packit 0848f5
        }
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_attr( int v2, const void * v3 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_set_attr( (MPI_Datatype) the_real_datatype, v2, (void *)v3 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_name( const char * v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_set_name( (MPI_Datatype) the_real_datatype, (const char *)v2 ));
Packit 0848f5
    }
Packit 0848f5
    static Datatype Create_f90_complex( int v1, int v2 ) 
Packit 0848f5
    {
Packit 0848f5
        Datatype v3;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_create_f90_complex( v1, v2, &(v3.the_real_datatype) ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual Datatype Create_subarray( int v1, const int v2[], const int v3[], const int v4[], const int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        Datatype v7;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_create_subarray( v1, v2, (const int  *)v3, (const int  *)v4, (int)v5, (MPI_Datatype) the_real_datatype, &(v7.the_real_datatype) ));
Packit 0848f5
        return v7;
Packit 0848f5
    }
Packit 0848f5
    virtual void Unpack_external( const char v1[], const void * v2, const Aint v3, Aint & v4, void * v5, int v6 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Unpack_external( v1, (const void *)v2, (MPI_Aint)v3, &v4, v5, v6, (MPI_Datatype) the_real_datatype ));
Packit 0848f5
    }
Packit 0848f5
    static void Free_keyval( int &v1 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_free_keyval( &v1 ));
Packit 0848f5
    }
Packit 0848f5
    static Datatype Create_struct( int v1, const int v2[], const Aint v3[],  const Datatype v4[] ) 
Packit 0848f5
    {
Packit 0848f5
        Datatype v5;
Packit 0848f5
        MPI_Datatype *l4 = new MPI_Datatype[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i4; 
Packit 0848f5
            for (i4=0;i4
Packit 0848f5
                l4[i4] = v4[i4].the_real_datatype;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_create_struct( v1, (const int  *)v2, (const MPI_Aint  *)v3, l4, &(v5.the_real_datatype) ));
Packit 0848f5
                    delete[] l4;
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    static Datatype Create_f90_integer( int v1 ) 
Packit 0848f5
    {
Packit 0848f5
        Datatype v2;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_create_f90_integer( v1, &(v2.the_real_datatype) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual void Pack_external( const char v1[], const void * v2, const int v3, void * v5, Aint v6, Aint & v7 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Pack_external( v1, (const void *)v2, (int)v3, (MPI_Datatype) the_real_datatype, v5, v6, &v7 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Get_extent( Aint & v2, Aint & v3 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_get_extent( (MPI_Datatype) the_real_datatype, &v2, &v3 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Delete_attr( int v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_delete_attr( (MPI_Datatype) the_real_datatype, v2 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Get_name( char * v2, int &v3 ) const
Packit 0848f5
    {
Packit 0848f5
    MPIR_CXX_InitDatatypeNames();
Packit 0848f5
        MPIX_CALLWORLD( MPI_Type_get_name( (MPI_Datatype) the_real_datatype, v2, &v3 ));
Packit 0848f5
    }
Packit 0848f5
Packit 0848f5
    void Unpack( const void *, int, void *, int, int &, const Comm & ) const;
Packit 0848f5
    typedef int Copy_attr_function(const Datatype& oldtype, int type_keyval, void* extra_state, void* attribute_val_in, void* attribute_val_out, bool& flag); 
Packit 0848f5
    typedef int Delete_attr_function(Datatype& type, int type_keyval, void* attribute_val, void* extra_state); 
Packit 0848f5
Packit 0848f5
    static int Create_keyval( Copy_attr_function *, Delete_attr_function *,
Packit 0848f5
                              void * );
Packit 0848f5
    // These functions are *not* part of MPI-2 but are provided
Packit 0848f5
    // because they should have been included
Packit 0848f5
    static int NULL_COPY_FN( const Datatype &oldtype MPIR_ARGUNUSED, 
Packit 0848f5
        int keyval MPIR_ARGUNUSED, void *ex MPIR_ARGUNUSED,
Packit 0848f5
        void *attr_in MPIR_ARGUNUSED, void *attr_out MPIR_ARGUNUSED, 
Packit 0848f5
        bool &flag ) { flag = 1; return 0;}
Packit 0848f5
    static int NULL_DELETE_FN( Datatype &type MPIR_ARGUNUSED, 
Packit 0848f5
        int keyval MPIR_ARGUNUSED, void * attr MPIR_ARGUNUSED, 
Packit 0848f5
        void *ex MPIR_ARGUNUSED ) { return 0; }
Packit 0848f5
    static int DUP_FN( const Datatype &oldtype MPIR_ARGUNUSED, 
Packit 0848f5
        int keyval MPIR_ARGUNUSED, void *ex MPIR_ARGUNUSED,
Packit 0848f5
        void *attr_in, void *attr_out, bool &flag ) { flag = 1; 
Packit 0848f5
            *(void **)attr_out = attr_in; return 0;} 
Packit 0848f5
          
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
    typedef void User_function(const void *, void*, int, const Datatype&); 
Packit 0848f5
Packit 0848f5
class Info  {
Packit 0848f5
    friend class File;
Packit 0848f5
    friend class Win;
Packit 0848f5
    friend class Comm;
Packit 0848f5
    friend class Intracomm;
Packit 0848f5
Packit 0848f5
  protected:
Packit 0848f5
    MPI_Info the_real_info;
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Info(MPI_Info obj) : the_real_info(obj) {}
Packit 0848f5
    inline Info(void) : the_real_info(MPI_INFO_NULL) {}
Packit 0848f5
Packit 0848f5
    virtual ~Info() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Info(const Info &obj) : the_real_info(obj.the_real_info){}
Packit 0848f5
Packit 0848f5
    Info& operator=(const Info &obj) {
Packit 0848f5
      the_real_info = obj.the_real_info; return *this; }
Packit 0848f5
Packit 0848f5
    // logical
Packit 0848f5
    bool operator== (const Info &obj) {
Packit 0848f5
      return (the_real_info == obj.the_real_info); }
Packit 0848f5
    bool operator!= (const Info &obj) {
Packit 0848f5
      return (the_real_info != obj.the_real_info); }
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Info*() { return &the_real_info; }
Packit 0848f5
    inline operator MPI_Info() const { return the_real_info; }
Packit 0848f5
    Info& operator=(const MPI_Info& obj) {
Packit 0848f5
      the_real_info = obj; return *this; }
Packit 0848f5
    virtual void Delete( const char * v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Info_delete( (MPI_Info) the_real_info, (const char *)v2 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Get_nthkey( int v2, char * v3 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Info_get_nthkey( (MPI_Info) the_real_info, v2, v3 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Free( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Info_free( (MPI_Info *) &the_real_info ));
Packit 0848f5
    }
Packit 0848f5
    static Info Create( void ) 
Packit 0848f5
    {
Packit 0848f5
        Info v1;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Info_create( &(v1.the_real_info) ));
Packit 0848f5
        return v1;
Packit 0848f5
    }
Packit 0848f5
    virtual void Set( const char * v2, const char * v3 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Info_set( (MPI_Info) the_real_info, (const char *)v2, (const char *)v3 ));
Packit 0848f5
    }
Packit 0848f5
    Info Dup( void ) const
Packit 0848f5
    {
Packit 0848f5
        Info v2;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Info_dup( (MPI_Info) the_real_info, &(v2.the_real_info) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual bool Get_valuelen( const char * v2, int &v3 ) const
Packit 0848f5
    {
Packit 0848f5
        int v4;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Info_get_valuelen( (MPI_Info) the_real_info, (const char *)v2, &v3, &v4 ));
Packit 0848f5
        return v4!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual bool Get( const char * v2, int v3, char * v4 ) const
Packit 0848f5
    {
Packit 0848f5
        int v5;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Info_get( (MPI_Info) the_real_info, (const char *)v2, v3, v4, &v5 ));
Packit 0848f5
        return v5!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual int Get_nkeys( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Info_get_nkeys( (MPI_Info) the_real_info, &v2 ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Status  {
Packit 0848f5
    friend class Comm;
Packit 0848f5
    friend class File;
Packit 0848f5
    friend class Request;
Packit 0848f5
Packit 0848f5
  protected:
Packit 0848f5
    MPI_Status the_real_status;
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Status(MPI_Status obj) : the_real_status(obj) {}
Packit 0848f5
    inline Status(void) : the_real_status() {}
Packit 0848f5
Packit 0848f5
    virtual ~Status() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Status(const Status &obj) : the_real_status(obj.the_real_status){}
Packit 0848f5
Packit 0848f5
    Status& operator=(const Status &obj) {
Packit 0848f5
      the_real_status = obj.the_real_status; return *this; }
Packit 0848f5
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Status*() { return &the_real_status; }
Packit 0848f5
    inline operator MPI_Status() const { return the_real_status; }
Packit 0848f5
    Status& operator=(const MPI_Status& obj) {
Packit 0848f5
      the_real_status = obj; return *this; }
Packit 0848f5
    virtual bool Is_cancelled( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Test_cancelled( (const MPI_Status *) &the_real_status, &v2 ));
Packit 0848f5
        return v2!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual int Get_elements( const Datatype &v2 ) const
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Get_elements( (const MPI_Status *) &the_real_status, (MPI_Datatype)(v2.the_real_datatype), &v3 ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual int Get_count( const Datatype &v2 ) const
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Get_count( (const MPI_Status *) &the_real_status, (MPI_Datatype)(v2.the_real_datatype), &v3 ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_cancelled( bool v2 ) 
Packit 0848f5
    {
Packit 0848f5
        int l2;
Packit 0848f5
         l2 = (v2 == true) ? 1 : 0;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Status_set_cancelled( (MPI_Status *) &the_real_status, l2 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_elements( const Datatype &v2, int v3 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Status_set_elements( (MPI_Status *) &the_real_status, (MPI_Datatype)(v2.the_real_datatype), v3 ));
Packit 0848f5
    }
Packit 0848f5
Packit 0848f5
    int Get_source(void) const { return the_real_status.MPI_SOURCE; }
Packit 0848f5
    int Get_tag(void) const { return the_real_status.MPI_TAG; }
Packit 0848f5
    int Get_error(void) const { return the_real_status.MPI_ERROR; }
Packit 0848f5
    void Set_source(int source) { the_real_status.MPI_SOURCE = source; }
Packit 0848f5
    void Set_tag(int tag) { the_real_status.MPI_TAG = tag; }
Packit 0848f5
    void Set_error(int error) { the_real_status.MPI_ERROR = error; }
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Group  {
Packit 0848f5
    friend class Comm;
Packit 0848f5
    friend class Intracomm;
Packit 0848f5
    friend class Intercomm;
Packit 0848f5
    friend class Win;
Packit 0848f5
    friend class File;
Packit 0848f5
Packit 0848f5
  protected:
Packit 0848f5
    MPI_Group the_real_group;
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Group(MPI_Group obj) : the_real_group(obj) {}
Packit 0848f5
    inline Group(void) : the_real_group(MPI_GROUP_NULL) {}
Packit 0848f5
Packit 0848f5
    virtual ~Group() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Group(const Group &obj) : the_real_group(obj.the_real_group){}
Packit 0848f5
Packit 0848f5
    Group& operator=(const Group &obj) {
Packit 0848f5
      the_real_group = obj.the_real_group; return *this; }
Packit 0848f5
Packit 0848f5
    // logical
Packit 0848f5
    bool operator== (const Group &obj) {
Packit 0848f5
      return (the_real_group == obj.the_real_group); }
Packit 0848f5
    bool operator!= (const Group &obj) {
Packit 0848f5
      return (the_real_group != obj.the_real_group); }
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Group*() { return &the_real_group; }
Packit 0848f5
    inline operator MPI_Group() const { return the_real_group; }
Packit 0848f5
    Group& operator=(const MPI_Group& obj) {
Packit 0848f5
      the_real_group = obj; return *this; }
Packit 0848f5
    virtual Group Excl( int v2, const int v3[] ) const
Packit 0848f5
    {
Packit 0848f5
        Group v4;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Group_excl( (MPI_Group) the_real_group, v2, (const int  *)v3, &(v4.the_real_group) ));
Packit 0848f5
        return v4;
Packit 0848f5
    }
Packit 0848f5
    virtual int Get_rank( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Group_rank( (MPI_Group) the_real_group, &v2 ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual void Free( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Group_free( (MPI_Group *) &the_real_group ));
Packit 0848f5
    }
Packit 0848f5
    static Group Union( const Group &v1, const Group &v2 ) 
Packit 0848f5
    {
Packit 0848f5
        Group v3;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Group_union( (MPI_Group)(v1.the_real_group), (MPI_Group)(v2.the_real_group), &(v3.the_real_group) ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    static Group Intersect( const Group &v1, const Group &v2 ) 
Packit 0848f5
    {
Packit 0848f5
        Group v3;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Group_intersection( (MPI_Group)(v1.the_real_group), (MPI_Group)(v2.the_real_group), &(v3.the_real_group) ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual Group Range_excl( int v2, const int v3[][3] ) const
Packit 0848f5
    {
Packit 0848f5
        Group v4;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Group_range_excl( (MPI_Group) the_real_group, v2, (int  (*)[3])v3, &(v4.the_real_group) ));
Packit 0848f5
        return v4;
Packit 0848f5
    }
Packit 0848f5
    virtual Group Range_incl( int v2, const int v3[][3] ) const
Packit 0848f5
    {
Packit 0848f5
        Group v4;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Group_range_incl( (MPI_Group) the_real_group, v2, (int  (*)[3])v3, &(v4.the_real_group) ));
Packit 0848f5
        return v4;
Packit 0848f5
    }
Packit 0848f5
    static Group Difference( const Group &v1, const Group &v2 ) 
Packit 0848f5
    {
Packit 0848f5
        Group v3;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Group_difference( (MPI_Group)(v1.the_real_group), (MPI_Group)(v2.the_real_group), &(v3.the_real_group) ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    static void Translate_ranks( const Group &v1, int v2, const int v3[], const Group &v4, int v5[] ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Group_translate_ranks( (MPI_Group)(v1.the_real_group), v2, (const int  *)v3, (MPI_Group)(v4.the_real_group), v5 ));
Packit 0848f5
    }
Packit 0848f5
    virtual Group Incl( int v2, const int v3[] ) const
Packit 0848f5
    {
Packit 0848f5
        Group v4;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Group_incl( (MPI_Group) the_real_group, v2, (const int  *)v3, &(v4.the_real_group) ));
Packit 0848f5
        return v4;
Packit 0848f5
    }
Packit 0848f5
    virtual int Get_size( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Group_size( (MPI_Group) the_real_group, &v2 ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    static int Compare( const Group &v1, const Group &v2 ) 
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Group_compare( (MPI_Group)(v1.the_real_group), (MPI_Group)(v2.the_real_group), &v3 ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Op  {
Packit 0848f5
    friend class Intracomm;
Packit 0848f5
    friend class Intercomm;
Packit 0848f5
    friend class Win;
Packit 0848f5
    friend class Comm;
Packit 0848f5
Packit 0848f5
  protected:
Packit 0848f5
    MPI_Op the_real_op;
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Op(MPI_Op obj) : the_real_op(obj) {}
Packit 0848f5
    inline Op(void) : the_real_op(MPI_OP_NULL) {}
Packit 0848f5
Packit 0848f5
    virtual ~Op() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Op(const Op &obj) : the_real_op(obj.the_real_op){}
Packit 0848f5
Packit 0848f5
    Op& operator=(const Op &obj) {
Packit 0848f5
      the_real_op = obj.the_real_op; return *this; }
Packit 0848f5
Packit 0848f5
    // logical
Packit 0848f5
    bool operator== (const Op &obj) {
Packit 0848f5
      return (the_real_op == obj.the_real_op); }
Packit 0848f5
    bool operator!= (const Op &obj) {
Packit 0848f5
      return (the_real_op != obj.the_real_op); }
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Op*() { return &the_real_op; }
Packit 0848f5
    inline operator MPI_Op() const { return the_real_op; }
Packit 0848f5
    Op& operator=(const MPI_Op& obj) {
Packit 0848f5
      the_real_op = obj; return *this; }
Packit 0848f5
    virtual void Free( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Op_free( (MPI_Op *) &the_real_op ));
Packit 0848f5
    }
Packit 0848f5
    virtual bool Is_commutative( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Op_commutative( (MPI_Op) the_real_op, &v2 ));
Packit 0848f5
        return v2!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual void Reduce_local( const void * v1, void * v2, int v3, const Datatype &v4 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Reduce_local( (const void *)v1, v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Op) the_real_op ));
Packit 0848f5
    }
Packit 0848f5
Packit 0848f5
    void Init( User_function *, bool );
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Errhandler  {
Packit 0848f5
    friend class Comm;
Packit 0848f5
    friend class File;
Packit 0848f5
    friend class Win;
Packit 0848f5
Packit 0848f5
  protected:
Packit 0848f5
    MPI_Errhandler the_real_errhandler;
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Errhandler(MPI_Errhandler obj) : the_real_errhandler(obj) {}
Packit 0848f5
    inline Errhandler(void) : the_real_errhandler(MPI_ERRHANDLER_NULL) {}
Packit 0848f5
Packit 0848f5
    virtual ~Errhandler() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Errhandler(const Errhandler &obj) : the_real_errhandler(obj.the_real_errhandler){}
Packit 0848f5
Packit 0848f5
    Errhandler& operator=(const Errhandler &obj) {
Packit 0848f5
      the_real_errhandler = obj.the_real_errhandler; return *this; }
Packit 0848f5
Packit 0848f5
    // logical
Packit 0848f5
    bool operator== (const Errhandler &obj) {
Packit 0848f5
      return (the_real_errhandler == obj.the_real_errhandler); }
Packit 0848f5
    bool operator!= (const Errhandler &obj) {
Packit 0848f5
      return (the_real_errhandler != obj.the_real_errhandler); }
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Errhandler*() { return &the_real_errhandler; }
Packit 0848f5
    inline operator MPI_Errhandler() const { return the_real_errhandler; }
Packit 0848f5
    Errhandler& operator=(const MPI_Errhandler& obj) {
Packit 0848f5
      the_real_errhandler = obj; return *this; }
Packit 0848f5
    virtual void Free( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Errhandler_free( (MPI_Errhandler *) &the_real_errhandler ));
Packit 0848f5
    }
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Request  {
Packit 0848f5
    friend class Comm;
Packit 0848f5
    friend class File;
Packit 0848f5
    friend class Grequest;
Packit 0848f5
Packit 0848f5
  protected:
Packit 0848f5
    MPI_Request the_real_request;
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Request(MPI_Request obj) : the_real_request(obj) {}
Packit 0848f5
    inline Request(void) : the_real_request(MPI_REQUEST_NULL) {}
Packit 0848f5
Packit 0848f5
    virtual ~Request() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Request(const Request &obj) : the_real_request(obj.the_real_request){}
Packit 0848f5
Packit 0848f5
    Request& operator=(const Request &obj) {
Packit 0848f5
      the_real_request = obj.the_real_request; return *this; }
Packit 0848f5
Packit 0848f5
    // logical
Packit 0848f5
    bool operator== (const Request &obj) {
Packit 0848f5
      return (the_real_request == obj.the_real_request); }
Packit 0848f5
    bool operator!= (const Request &obj) {
Packit 0848f5
      return (the_real_request != obj.the_real_request); }
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Request*() { return &the_real_request; }
Packit 0848f5
    inline operator MPI_Request() const { return the_real_request; }
Packit 0848f5
    Request& operator=(const MPI_Request& obj) {
Packit 0848f5
      the_real_request = obj; return *this; }
Packit 0848f5
    static bool Testany( int v1, Request v2[], int &v3, Status & v5 ) 
Packit 0848f5
    {
Packit 0848f5
        int v4;
Packit 0848f5
        MPI_Request *l2 = new MPI_Request[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                l2[i2] = v2[i2].the_real_request;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Testany( v1, l2, &v3, &v4, (MPI_Status *)&(v5.the_real_status ) ));
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                v2[i2].the_real_request = l2[i2];
Packit 0848f5
            }
Packit 0848f5
            delete[] l2;
Packit 0848f5
        }
Packit 0848f5
        return v4!= 0;
Packit 0848f5
    }
Packit 0848f5
    static bool Testany( int v1, Request v2[], int &v3 ) 
Packit 0848f5
    {
Packit 0848f5
        int v4;
Packit 0848f5
        MPI_Request *l2 = new MPI_Request[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                l2[i2] = v2[i2].the_real_request;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Testany( v1, l2, &v3, &v4, MPI_STATUS_IGNORE ));
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                v2[i2].the_real_request = l2[i2];
Packit 0848f5
            }
Packit 0848f5
            delete[] l2;
Packit 0848f5
        }
Packit 0848f5
        return v4!= 0;
Packit 0848f5
    }
Packit 0848f5
    static int Waitsome( int v1, Request v2[], int v4[], Status v5[] ) 
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPI_Request *l2 = new MPI_Request[v1];
Packit 0848f5
        MPI_Status *l5 = new MPI_Status[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                l2[i2] = v2[i2].the_real_request;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Waitsome( v1, l2, &v3, v4, l5 ));
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                v2[i2].the_real_request = l2[i2];
Packit 0848f5
            }
Packit 0848f5
            delete[] l2;
Packit 0848f5
        }
Packit 0848f5
        { 
Packit 0848f5
            int i5; 
Packit 0848f5
            for (i5=0;i5
Packit 0848f5
                v5[i5].the_real_status = l5[i5];
Packit 0848f5
            }
Packit 0848f5
            delete[] l5;
Packit 0848f5
        }
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    static int Waitsome( int v1, Request v2[], int v4[] ) 
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPI_Request *l2 = new MPI_Request[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                l2[i2] = v2[i2].the_real_request;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Waitsome( v1, l2, &v3, v4, MPI_STATUSES_IGNORE ));
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                v2[i2].the_real_request = l2[i2];
Packit 0848f5
            }
Packit 0848f5
            delete[] l2;
Packit 0848f5
        }
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual void Free( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Request_free( (MPI_Request *) &the_real_request ));
Packit 0848f5
    }
Packit 0848f5
    static bool Testall( int v1, Request v2[], Status v4[] ) 
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPI_Request *l2 = new MPI_Request[v1];
Packit 0848f5
        MPI_Status *l4 = new MPI_Status[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                l2[i2] = v2[i2].the_real_request;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Testall( v1, l2, &v3, l4 ));
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                v2[i2].the_real_request = l2[i2];
Packit 0848f5
            }
Packit 0848f5
            delete[] l2;
Packit 0848f5
        }
Packit 0848f5
        { 
Packit 0848f5
            int i4; 
Packit 0848f5
            for (i4=0;i4
Packit 0848f5
                v4[i4].the_real_status = l4[i4];
Packit 0848f5
            }
Packit 0848f5
            delete[] l4;
Packit 0848f5
        }
Packit 0848f5
        return v3!= 0;
Packit 0848f5
    }
Packit 0848f5
    static bool Testall( int v1, Request v2[] ) 
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPI_Request *l2 = new MPI_Request[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                l2[i2] = v2[i2].the_real_request;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Testall( v1, l2, &v3, MPI_STATUSES_IGNORE ));
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                v2[i2].the_real_request = l2[i2];
Packit 0848f5
            }
Packit 0848f5
            delete[] l2;
Packit 0848f5
        }
Packit 0848f5
        return v3!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual void Wait( Status & v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Wait( (MPI_Request *) &the_real_request, (MPI_Status *)&(v2.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Wait( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Wait( (MPI_Request *) &the_real_request, MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    static int Testsome( int v1, Request v2[], int v4[], Status v5[] ) 
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPI_Request *l2 = new MPI_Request[v1];
Packit 0848f5
        MPI_Status *l5 = new MPI_Status[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                l2[i2] = v2[i2].the_real_request;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Testsome( v1, l2, &v3, v4, l5 ));
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                v2[i2].the_real_request = l2[i2];
Packit 0848f5
            }
Packit 0848f5
            delete[] l2;
Packit 0848f5
        }
Packit 0848f5
        { 
Packit 0848f5
            int i5; 
Packit 0848f5
            for (i5=0;i5
Packit 0848f5
                v5[i5].the_real_status = l5[i5];
Packit 0848f5
            }
Packit 0848f5
            delete[] l5;
Packit 0848f5
        }
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    static int Testsome( int v1, Request v2[], int v4[] ) 
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPI_Request *l2 = new MPI_Request[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                l2[i2] = v2[i2].the_real_request;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Testsome( v1, l2, &v3, v4, MPI_STATUSES_IGNORE ));
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                v2[i2].the_real_request = l2[i2];
Packit 0848f5
            }
Packit 0848f5
            delete[] l2;
Packit 0848f5
        }
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    static void Waitall( int v1, Request v2[], Status v3[] ) 
Packit 0848f5
    {
Packit 0848f5
        MPI_Request *l2 = new MPI_Request[v1];
Packit 0848f5
        MPI_Status *l3 = new MPI_Status[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                l2[i2] = v2[i2].the_real_request;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Waitall( v1, l2, l3 ));
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                v2[i2].the_real_request = l2[i2];
Packit 0848f5
            }
Packit 0848f5
            delete[] l2;
Packit 0848f5
        }
Packit 0848f5
        { 
Packit 0848f5
            int i3; 
Packit 0848f5
            for (i3=0;i3
Packit 0848f5
                v3[i3].the_real_status = l3[i3];
Packit 0848f5
            }
Packit 0848f5
            delete[] l3;
Packit 0848f5
        }
Packit 0848f5
    }
Packit 0848f5
    static void Waitall( int v1, Request v2[] ) 
Packit 0848f5
    {
Packit 0848f5
        MPI_Request *l2 = new MPI_Request[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                l2[i2] = v2[i2].the_real_request;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Waitall( v1, l2, MPI_STATUSES_IGNORE ));
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                v2[i2].the_real_request = l2[i2];
Packit 0848f5
            }
Packit 0848f5
            delete[] l2;
Packit 0848f5
        }
Packit 0848f5
    }
Packit 0848f5
    static int Waitany( int v1, Request v2[], Status & v4 ) 
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPI_Request *l2 = new MPI_Request[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                l2[i2] = v2[i2].the_real_request;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Waitany( v1, l2, &v3, (MPI_Status *)&(v4.the_real_status ) ));
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                v2[i2].the_real_request = l2[i2];
Packit 0848f5
            }
Packit 0848f5
            delete[] l2;
Packit 0848f5
        }
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    static int Waitany( int v1, Request v2[] ) 
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPI_Request *l2 = new MPI_Request[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                l2[i2] = v2[i2].the_real_request;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Waitany( v1, l2, &v3, MPI_STATUS_IGNORE ));
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                v2[i2].the_real_request = l2[i2];
Packit 0848f5
            }
Packit 0848f5
            delete[] l2;
Packit 0848f5
        }
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual bool Test( Status & v3 ) 
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Test( (MPI_Request *) &the_real_request, &v2, (MPI_Status *)&(v3.the_real_status ) ));
Packit 0848f5
        return v2!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual bool Test( void ) 
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Test( (MPI_Request *) &the_real_request, &v2, MPI_STATUS_IGNORE ));
Packit 0848f5
        return v2!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual void Cancel( void ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Cancel( (MPI_Request *) &the_real_request ));
Packit 0848f5
    }
Packit 0848f5
    virtual bool Get_status( Status & v3 ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Request_get_status( (MPI_Request) the_real_request, &v2, (MPI_Status *)&(v3.the_real_status ) ));
Packit 0848f5
        return v2!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual bool Get_status( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Request_get_status( (MPI_Request) the_real_request, &v2, MPI_STATUS_IGNORE ));
Packit 0848f5
        return v2!= 0;
Packit 0848f5
    }
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Prequest : public Request {
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Prequest(MPI_Request obj) : Request(obj) {}
Packit 0848f5
    inline Prequest(void) : Request() {}
Packit 0848f5
Packit 0848f5
    virtual ~Prequest() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Prequest(const Prequest &obj) : Request(obj) {}
Packit 0848f5
Packit 0848f5
    Prequest& operator=(const Prequest &obj) {
Packit 0848f5
      the_real_request = obj.the_real_request; return *this; }
Packit 0848f5
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Request*() { return &the_real_request; }
Packit 0848f5
    inline operator MPI_Request() const { return the_real_request; }
Packit 0848f5
    Prequest& operator=(const MPI_Request& obj) {
Packit 0848f5
      the_real_request = obj; return *this; }
Packit 0848f5
    virtual void Start( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Start( (MPI_Request *) &the_real_request ));
Packit 0848f5
    }
Packit 0848f5
    static void Startall( int v1, Prequest v2[] ) 
Packit 0848f5
    {
Packit 0848f5
        MPI_Request *l2 = new MPI_Request[v1];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                l2[i2] = v2[i2].the_real_request;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLWORLD( MPI_Startall( v1, l2 ));
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2
Packit 0848f5
                v2[i2].the_real_request = l2[i2];
Packit 0848f5
            }
Packit 0848f5
            delete[] l2;
Packit 0848f5
        }
Packit 0848f5
    }
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Comm  {
Packit 0848f5
    friend class Cartcomm;
Packit 0848f5
    friend class Intercomm;
Packit 0848f5
    friend class Intracomm;
Packit 0848f5
    friend class Graphcomm;
Packit 0848f5
    friend class Nullcomm;
Packit 0848f5
    friend class Datatype;
Packit 0848f5
    friend class Win;
Packit 0848f5
    friend class File;
Packit 0848f5
Packit 0848f5
  protected:
Packit 0848f5
    MPI_Comm the_real_comm;
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Comm(MPI_Comm obj) : the_real_comm(obj) {}
Packit 0848f5
    inline Comm(void) : the_real_comm(MPI_COMM_NULL) {}
Packit 0848f5
Packit 0848f5
    virtual ~Comm() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Comm(const Comm &obj) : the_real_comm(obj.the_real_comm){}
Packit 0848f5
Packit 0848f5
    Comm& operator=(const Comm &obj) {
Packit 0848f5
      the_real_comm = obj.the_real_comm; return *this; }
Packit 0848f5
Packit 0848f5
    // logical
Packit 0848f5
    bool operator== (const Comm &obj) {
Packit 0848f5
      return (the_real_comm == obj.the_real_comm); }
Packit 0848f5
    bool operator!= (const Comm &obj) {
Packit 0848f5
      return (the_real_comm != obj.the_real_comm); }
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Comm*() { return &the_real_comm; }
Packit 0848f5
    inline operator MPI_Comm() const { return the_real_comm; }
Packit 0848f5
    Comm& operator=(const MPI_Comm& obj) {
Packit 0848f5
      the_real_comm = obj; return *this; }
Packit 0848f5
    virtual Group Get_group( void ) const
Packit 0848f5
    {
Packit 0848f5
        Group v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_group( (MPI_Comm) the_real_comm, &(v2.the_real_group) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual int Get_rank( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_rank( (MPI_Comm) the_real_comm, &v2 ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual Prequest Bsend_init( const void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        Prequest v7;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Bsend_init( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm, &(v7.the_real_request) ));
Packit 0848f5
        return v7;
Packit 0848f5
    }
Packit 0848f5
    virtual Prequest Ssend_init( const void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        Prequest v7;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Ssend_init( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm, &(v7.the_real_request) ));
Packit 0848f5
        return v7;
Packit 0848f5
    }
Packit 0848f5
    virtual bool Is_inter( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_test_inter( (MPI_Comm) the_real_comm, &v2 ));
Packit 0848f5
        return v2!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual Prequest Rsend_init( const void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        Prequest v7;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Rsend_init( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm, &(v7.the_real_request) ));
Packit 0848f5
        return v7;
Packit 0848f5
    }
Packit 0848f5
    virtual Request Ibsend( const void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        Request v7;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Ibsend( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm, &(v7.the_real_request) ));
Packit 0848f5
        return v7;
Packit 0848f5
    }
Packit 0848f5
    virtual void Abort( int v2 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Abort( (MPI_Comm) the_real_comm, v2 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Free( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_free( (MPI_Comm *) &the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual Prequest Send_init( const void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        Prequest v7;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Send_init( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm, &(v7.the_real_request) ));
Packit 0848f5
        return v7;
Packit 0848f5
    }
Packit 0848f5
    virtual void Recv( void * v1, int v2, const Datatype &v3, int v4, int v5, Status & v7 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Recv( v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm, (MPI_Status *)&(v7.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Recv( void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Recv( v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm, MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Sendrecv( const void * v1, int v2, const Datatype &v3, int v4, int v5, void * v6, int v7, const Datatype &v8, int v9, int v10, Status & v12 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Sendrecv( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, v6, v7, (MPI_Datatype)(v8.the_real_datatype), v9, v10, (MPI_Comm) the_real_comm, (MPI_Status *)&(v12.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Sendrecv( const void * v1, int v2, const Datatype &v3, int v4, int v5, void * v6, int v7, const Datatype &v8, int v9, int v10 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Sendrecv( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, v6, v7, (MPI_Datatype)(v8.the_real_datatype), v9, v10, (MPI_Comm) the_real_comm, MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Sendrecv_replace( void * v1, int v2, const Datatype &v3, int v4, int v5, int v6, int v7, Status & v9 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Sendrecv_replace( v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, v6, v7, (MPI_Comm) the_real_comm, (MPI_Status *)&(v9.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Sendrecv_replace( void * v1, int v2, const Datatype &v3, int v4, int v5, int v6, int v7 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Sendrecv_replace( v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, v6, v7, (MPI_Comm) the_real_comm, MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual int Get_topology( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Topo_test( (MPI_Comm) the_real_comm, &v2 ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual Request Isend( const void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        Request v7;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Isend( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm, &(v7.the_real_request) ));
Packit 0848f5
        return v7;
Packit 0848f5
    }
Packit 0848f5
    virtual void Probe( int v1, int v2, Status & v4 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Probe( v1, v2, (MPI_Comm) the_real_comm, (MPI_Status *)&(v4.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Probe( int v1, int v2 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Probe( v1, v2, (MPI_Comm) the_real_comm, MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    static int Compare( const Comm &v1, const Comm &v2 ) 
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPIX_CALLWORLD( MPI_Comm_compare( (MPI_Comm)(v1.the_real_comm), (MPI_Comm)(v2.the_real_comm), &v3 ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual int Get_size( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_size( (MPI_Comm) the_real_comm, &v2 ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual Request Issend( const void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        Request v7;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Issend( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm, &(v7.the_real_request) ));
Packit 0848f5
        return v7;
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_errhandler( const Errhandler &v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_set_errhandler( (MPI_Comm) the_real_comm, (MPI_Errhandler)(v2.the_real_errhandler) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Send( const void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Send( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual Request Irsend( const void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        Request v7;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Irsend( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm, &(v7.the_real_request) ));
Packit 0848f5
        return v7;
Packit 0848f5
    }
Packit 0848f5
    virtual void Ssend( const void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Ssend( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual Prequest Recv_init( void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        Prequest v7;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Recv_init( v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm, &(v7.the_real_request) ));
Packit 0848f5
        return v7;
Packit 0848f5
    }
Packit 0848f5
    virtual bool Iprobe( int v1, int v2, Status & v5 ) const
Packit 0848f5
    {
Packit 0848f5
        int v4;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Iprobe( v1, v2, (MPI_Comm) the_real_comm, &v4, (MPI_Status *)&(v5.the_real_status ) ));
Packit 0848f5
        return v4!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual bool Iprobe( int v1, int v2 ) const
Packit 0848f5
    {
Packit 0848f5
        int v4;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Iprobe( v1, v2, (MPI_Comm) the_real_comm, &v4, MPI_STATUS_IGNORE ));
Packit 0848f5
        return v4!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual void Bsend( const void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Bsend( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual Request Irecv( void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        Request v7;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Irecv( v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm, &(v7.the_real_request) ));
Packit 0848f5
        return v7;
Packit 0848f5
    }
Packit 0848f5
    virtual Errhandler Get_errhandler( void ) const
Packit 0848f5
    {
Packit 0848f5
        Errhandler v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_get_errhandler( (MPI_Comm) the_real_comm, &(v2.the_real_errhandler) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual void Rsend( const void * v1, int v2, const Datatype &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Rsend( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Gatherv( const void * v1, int v2, const Datatype &v3, void * v4, const int * v5, const int * v6, const Datatype &v7, int v8 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Gatherv( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, (const int *)v5, (const int *)v6, (MPI_Datatype)(v7.the_real_datatype), v8, (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Disconnect( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_disconnect( (MPI_Comm *) &the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Allreduce( const void * v1, void * v2, int v3, const Datatype &v4, const Op &v5 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Allreduce( (const void *)v1, v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Op)(v5.the_real_op), (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Alltoallw( const void * v1, const int v2[], const int v3[],  const Datatype v4[], void * v5, const int v6[], const int v7[],  const Datatype v8[] ) const
Packit 0848f5
    {
Packit 0848f5
        MPI_Datatype *l4 = new MPI_Datatype[Get_size()];
Packit 0848f5
        MPI_Datatype *l8 = new MPI_Datatype[Get_size()];
Packit 0848f5
        { 
Packit 0848f5
            int i4; 
Packit 0848f5
            for (i4=0;i4
Packit 0848f5
                l4[i4] = v4[i4].the_real_datatype;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        { 
Packit 0848f5
            int i8; 
Packit 0848f5
            for (i8=0;i8
Packit 0848f5
                l8[i8] = v8[i8].the_real_datatype;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLREF( this, MPI_Alltoallw( (const void *)v1, (const int  *)v2, (const int  *)v3, l4, v5, (const int  *)v6, (const int  *)v7, l8, (MPI_Comm) the_real_comm ));
Packit 0848f5
                    delete[] l4;
Packit 0848f5
                    delete[] l8;
Packit 0848f5
    }
Packit 0848f5
    static Intercomm Join( const int v1 ) ;
Packit 0848f5
    virtual void Alltoall( const void * v1, int v2, const Datatype &v3, void * v4, int v5, const Datatype &v6 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Alltoall( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Datatype)(v6.the_real_datatype), (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual bool Get_attr( int v2, void * v3 ) const
Packit 0848f5
    {
Packit 0848f5
        int v4;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_get_attr( (MPI_Comm) the_real_comm, v2, v3, &v4 ));
Packit 0848f5
        return v4!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual void Barrier( void ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Barrier( (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Bcast( void * v1, int v2, const Datatype &v3, int v4 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Bcast( v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_attr( int v2, const void * v3 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_set_attr( (MPI_Comm) the_real_comm, v2, (void *)v3 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_name( const char * v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_set_name( (MPI_Comm) the_real_comm, (const char *)v2 ));
Packit 0848f5
    }
Packit 0848f5
    static Intercomm Get_parent( void ) ;
Packit 0848f5
    virtual void Alltoallv( const void * v1, const int * v2, const int * v3, const Datatype &v4, void * v5, const int * v6, const int * v7, const Datatype &v8 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Alltoallv( (const void *)v1, (const int *)v2, (const int *)v3, (MPI_Datatype)(v4.the_real_datatype), v5, (const int *)v6, (const int *)v7, (MPI_Datatype)(v8.the_real_datatype), (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Reduce_scatter( const void * v1, void * v2, const int v3[], const Datatype &v4, const Op &v5 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Reduce_scatter( (const void *)v1, v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Op)(v5.the_real_op), (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Scatter( const void * v1, int v2, const Datatype &v3, void * v4, int v5, const Datatype &v6, int v7 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Scatter( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Datatype)(v6.the_real_datatype), v7, (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Gather( const void * v1, int v2, const Datatype &v3, void * v4, int v5, const Datatype &v6, int v7 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Gather( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Datatype)(v6.the_real_datatype), v7, (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    static void Free_keyval( int &v1 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Comm_free_keyval( &v1 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Reduce( const void * v1, void * v2, int v3, const Datatype &v4, const Op &v5, int v6 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Reduce( (const void *)v1, v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Op)(v5.the_real_op), v6, (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Allgather( const void * v1, int v2, const Datatype &v3, void * v4, int v5, const Datatype &v6 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Allgather( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, (MPI_Datatype)(v6.the_real_datatype), (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Delete_attr( int v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_delete_attr( (MPI_Comm) the_real_comm, v2 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Scatterv( const void * v1, const int * v2, const int * v3, const Datatype &v4, void * v5, int v6, const Datatype &v7, int v8 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Scatterv( (const void *)v1, (const int *)v2, (const int *)v3, (MPI_Datatype)(v4.the_real_datatype), v5, v6, (MPI_Datatype)(v7.the_real_datatype), v8, (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Get_name( char * v2, int &v3 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_get_name( (MPI_Comm) the_real_comm, v2, &v3 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Allgatherv( const void * v1, int v2, const Datatype &v3, void * v4, const int * v5, const int * v6, const Datatype &v7 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Allgatherv( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, (const int *)v5, (const int *)v6, (MPI_Datatype)(v7.the_real_datatype), (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual Comm &Clone(void) const = 0;
Packit 0848f5
    typedef int Copy_attr_function(const Comm& oldcomm, int comm_keyval, void* extra_state, void* attribute_val_in, void* attribute_val_out, bool& flag); 
Packit 0848f5
    typedef int Delete_attr_function(Comm& comm, int comm_keyval, void* attribute_val, void* extra_state); 
Packit 0848f5
    typedef void Errhandler_function(Comm &, int *, ... );
Packit 0848f5
    typedef Errhandler_function Errhandler_fn;
Packit 0848f5
Packit 0848f5
    static int Create_keyval( Copy_attr_function *, Delete_attr_function *,
Packit 0848f5
                              void * );
Packit 0848f5
          
Packit 0848f5
    static int NULL_COPY_FN( const Comm &oldcomm MPIR_ARGUNUSED, 
Packit 0848f5
           int keyval MPIR_ARGUNUSED, void *ex MPIR_ARGUNUSED,
Packit 0848f5
           void *attr_in MPIR_ARGUNUSED, void *attr_out MPIR_ARGUNUSED, 
Packit 0848f5
	   bool &flag ) { flag = 0; return 0;}
Packit 0848f5
    static int NULL_DELETE_FN( Comm &comm MPIR_ARGUNUSED, 
Packit 0848f5
	   int keyval MPIR_ARGUNUSED, void * attr MPIR_ARGUNUSED, 
Packit 0848f5
	   void *ex MPIR_ARGUNUSED ) { return 0; }
Packit 0848f5
    static int DUP_FN( const Comm &oldcomm MPIR_ARGUNUSED, 
Packit 0848f5
           int keyval MPIR_ARGUNUSED, void *ex MPIR_ARGUNUSED,
Packit 0848f5
           void *attr_in, void *attr_out, bool &flag ) { flag = 1; 
Packit 0848f5
                    *(void **)attr_out = attr_in; return 0;} 
Packit 0848f5
    static Errhandler Create_errhandler( Errhandler_function * );
Packit 0848f5
Packit 0848f5
    virtual void Call_errhandler( int v2 ) const;
Packit 0848f5
    virtual void Reduce_scatter_block( const void * v1, void * v2, int v3, const Datatype &v4, const Op &v5 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Reduce_scatter_block( (const void *)v1, v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Op)(v5.the_real_op), (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Nullcomm : public Comm {
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Nullcomm(MPI_Comm obj) : Comm(obj) {}
Packit 0848f5
    inline Nullcomm(void) : Comm() {}
Packit 0848f5
Packit 0848f5
    virtual ~Nullcomm() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Nullcomm(const Nullcomm &obj) : Comm(obj) {}
Packit 0848f5
Packit 0848f5
    Nullcomm& operator=(const Nullcomm &obj) {
Packit 0848f5
      the_real_comm = obj.the_real_comm; return *this; }
Packit 0848f5
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Comm*() { return &the_real_comm; }
Packit 0848f5
    inline operator MPI_Comm() const { return the_real_comm; }
Packit 0848f5
    Nullcomm& operator=(const MPI_Comm& obj) {
Packit 0848f5
      the_real_comm = obj; return *this; }
Packit 0848f5
Packit 0848f5
// If the compiler does not support variable return types, return a 
Packit 0848f5
// reference to Comm.  The user must then cast this to the correct type
Packit 0848f5
// (Standard-conforming C++ compilers support variable return types)
Packit 0848f5
#ifdef HAVE_NO_VARIABLE_RETURN_TYPE_SUPPORT
Packit 0848f5
    virtual Comm & Clone(void) const { 
Packit 0848f5
        Comm *clone = new Nullcomm(MPI_COMM_NULL); 
Packit 0848f5
        return *clone; 
Packit 0848f5
    }
Packit 0848f5
#else
Packit 0848f5
    virtual Nullcomm & Clone(void) const { 
Packit 0848f5
        Nullcomm *clone = new Nullcomm();
Packit 0848f5
        return *clone; 
Packit 0848f5
    }
Packit 0848f5
#endif
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Intercomm : public Comm {
Packit 0848f5
    friend class Intracomm;
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Intercomm(MPI_Comm obj) : Comm(obj) {}
Packit 0848f5
    inline Intercomm(void) : Comm() {}
Packit 0848f5
Packit 0848f5
    virtual ~Intercomm() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Intercomm(const Intercomm &obj) : Comm(obj) {}
Packit 0848f5
Packit 0848f5
    Intercomm& operator=(const Intercomm &obj) {
Packit 0848f5
      the_real_comm = obj.the_real_comm; return *this; }
Packit 0848f5
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Comm*() { return &the_real_comm; }
Packit 0848f5
    inline operator MPI_Comm() const { return the_real_comm; }
Packit 0848f5
    Intercomm& operator=(const MPI_Comm& obj) {
Packit 0848f5
      the_real_comm = obj; return *this; }
Packit 0848f5
    virtual Intracomm Merge( bool v2 ) const;
Packit 0848f5
    virtual Group Get_remote_group( void ) const
Packit 0848f5
    {
Packit 0848f5
        Group v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_remote_group( (MPI_Comm) the_real_comm, &(v2.the_real_group) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual int Get_remote_size( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_remote_size( (MPI_Comm) the_real_comm, &v2 ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    Intercomm Dup( void ) const
Packit 0848f5
    {
Packit 0848f5
        Intercomm v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_dup( (MPI_Comm) the_real_comm, &(v2.the_real_comm) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual Intercomm Split( int v2, int v3 ) const
Packit 0848f5
    {
Packit 0848f5
        Intercomm v4;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_split( (MPI_Comm) the_real_comm, v2, v3, &(v4.the_real_comm) ));
Packit 0848f5
        return v4;
Packit 0848f5
    }
Packit 0848f5
    
Packit 0848f5
// If the compiler does not support variable return types, return a 
Packit 0848f5
// reference to Comm.  The user must then cast this to the correct type
Packit 0848f5
// (Standard-conforming C++ compilers support variable return types)
Packit 0848f5
#ifdef HAVE_NO_VARIABLE_RETURN_TYPE_SUPPORT
Packit 0848f5
    virtual Comm & Clone(void) const { 
Packit 0848f5
        MPI_Comm ncomm;
Packit 0848f5
        MPI_Comm_dup( (MPI_Comm)the_real_comm, &ncomm); 
Packit 0848f5
        Comm *clone = new Intercomm(ncomm); 
Packit 0848f5
        return *clone; 
Packit 0848f5
    }
Packit 0848f5
#else
Packit 0848f5
    virtual Intercomm & Clone(void) const { 
Packit 0848f5
        MPI_Comm ncomm;
Packit 0848f5
        MPI_Comm_dup( (MPI_Comm)the_real_comm, &ncomm); 
Packit 0848f5
        Intercomm *clone = new Intercomm(ncomm); 
Packit 0848f5
        return *clone; 
Packit 0848f5
    }
Packit 0848f5
#endif
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Intracomm : public Comm {
Packit 0848f5
    friend class Cartcomm;
Packit 0848f5
    friend class Graphcomm;
Packit 0848f5
    friend class Datatype;
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Intracomm(MPI_Comm obj) : Comm(obj) {}
Packit 0848f5
    inline Intracomm(void) : Comm() {}
Packit 0848f5
Packit 0848f5
    virtual ~Intracomm() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Intracomm(const Intracomm &obj) : Comm(obj) {}
Packit 0848f5
Packit 0848f5
    Intracomm& operator=(const Intracomm &obj) {
Packit 0848f5
      the_real_comm = obj.the_real_comm; return *this; }
Packit 0848f5
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Comm*() { return &the_real_comm; }
Packit 0848f5
    inline operator MPI_Comm() const { return the_real_comm; }
Packit 0848f5
    Intracomm& operator=(const MPI_Comm& obj) {
Packit 0848f5
      the_real_comm = obj; return *this; }
Packit 0848f5
    virtual Intercomm Create_intercomm( int v2, const Comm &v3, int v4, int v5 ) const
Packit 0848f5
    {
Packit 0848f5
        Intercomm v6;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Intercomm_create( (MPI_Comm) the_real_comm, v2, (MPI_Comm)(v3.the_real_comm), v4, v5, &(v6.the_real_comm) ));
Packit 0848f5
        return v6;
Packit 0848f5
    }
Packit 0848f5
    virtual Intracomm Split( int v2, int v3 ) const
Packit 0848f5
    {
Packit 0848f5
        Intracomm v4;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_split( (MPI_Comm) the_real_comm, v2, v3, &(v4.the_real_comm) ));
Packit 0848f5
        return v4;
Packit 0848f5
    }
Packit 0848f5
    virtual Graphcomm Create_graph( int v2, const int v3[], const int v4[], bool v5 ) const;
Packit 0848f5
    virtual Cartcomm Create_cart( int v2, const int v3[], const bool v4[], bool v5 ) const;
Packit 0848f5
    virtual Intracomm Create( const Group &v2 ) const
Packit 0848f5
    {
Packit 0848f5
        Intracomm v3;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_create( (MPI_Comm) the_real_comm, (MPI_Group)(v2.the_real_group), &(v3.the_real_comm) ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    Intracomm Dup( void ) const
Packit 0848f5
    {
Packit 0848f5
        Intracomm v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_dup( (MPI_Comm) the_real_comm, &(v2.the_real_comm) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual void Scan( const void * v1, void * v2, int v3, const Datatype &v4, const Op &v5 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Scan( (const void *)v1, v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Op)(v5.the_real_op), (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Exscan( const void * v1, void * v2, int v3, const Datatype &v4, const Op &v5 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Exscan( (const void *)v1, v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Op)(v5.the_real_op), (MPI_Comm) the_real_comm ));
Packit 0848f5
    }
Packit 0848f5
    virtual Intercomm Accept( const char * v1, const Info &v2, int v3 ) const
Packit 0848f5
    {
Packit 0848f5
        Intercomm v5;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_accept( (const char *)v1, (MPI_Info)(v2.the_real_info), v3, (MPI_Comm) the_real_comm, &(v5.the_real_comm) ));
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    virtual Intercomm Connect( const char * v1, const Info &v2, int v3 ) const
Packit 0848f5
    {
Packit 0848f5
        Intercomm v5;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_connect( (const char *)v1, (MPI_Info)(v2.the_real_info), v3, (MPI_Comm) the_real_comm, &(v5.the_real_comm) ));
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    
Packit 0848f5
// If the compiler does not support variable return types, return a 
Packit 0848f5
// reference to Comm.  The user must then cast this to the correct type
Packit 0848f5
// (Standard-conforming C++ compilers support variable return types)
Packit 0848f5
#ifdef HAVE_NO_VARIABLE_RETURN_TYPE_SUPPORT
Packit 0848f5
    virtual Comm & Clone(void) const { 
Packit 0848f5
        MPI_Comm ncomm;
Packit 0848f5
        MPI_Comm_dup( (MPI_Comm)the_real_comm, &ncomm); 
Packit 0848f5
        Comm *clone = new Intracomm(ncomm); 
Packit 0848f5
        return *clone; 
Packit 0848f5
    }
Packit 0848f5
#else
Packit 0848f5
    virtual Intracomm & Clone(void) const { 
Packit 0848f5
        MPI_Comm ncomm;
Packit 0848f5
        MPI_Comm_dup( (MPI_Comm)the_real_comm, &ncomm); 
Packit 0848f5
        Intracomm *clone = new Intracomm(ncomm); 
Packit 0848f5
        return *clone; 
Packit 0848f5
    }
Packit 0848f5
#endif
Packit 0848f5
Packit 0848f5
Intercomm Spawn(const char* command, const char* argv[], int maxprocs, const MPI::Info& info, int root) const {
Packit 0848f5
    Intercomm ic;
Packit 0848f5
    MPIX_CALLREF( this, MPI_Comm_spawn( (char *)command, 
Packit 0848f5
                (char **)argv, 
Packit 0848f5
                maxprocs, info.the_real_info, root, the_real_comm, 
Packit 0848f5
                &(ic.the_real_comm), MPI_ERRCODES_IGNORE ) );
Packit 0848f5
    return ic;
Packit 0848f5
}
Packit 0848f5
Intercomm Spawn(const char* command, const char* argv[], int maxprocs, const MPI::Info& info, int root, int array_of_errcodes[]) const {
Packit 0848f5
    Intercomm ic;
Packit 0848f5
    MPIX_CALLREF( this, MPI_Comm_spawn( (char *)command, 
Packit 0848f5
                (char **)argv, 
Packit 0848f5
                maxprocs, info.the_real_info, root, the_real_comm, 
Packit 0848f5
                &(ic.the_real_comm), array_of_errcodes ) );
Packit 0848f5
    return ic;
Packit 0848f5
}
Packit 0848f5
Intercomm Spawn_multiple(int count, const char* array_of_commands[], const char** array_of_argv[], const int array_of_maxprocs[], const MPI::Info array_of_info[], int root) {
Packit 0848f5
    Intercomm ic;
Packit 0848f5
    MPI_Info  *li = new MPI_Info [count];
Packit 0848f5
    int i;
Packit 0848f5
    for (i=0; i
Packit 0848f5
        li[i] = array_of_info[i].the_real_info;
Packit 0848f5
    }
Packit 0848f5
    MPIX_CALLREF( this, MPI_Comm_spawn_multiple( count, 
Packit 0848f5
                   (char **)array_of_commands, 
Packit 0848f5
                   (char ***)array_of_argv, (int *)array_of_maxprocs, 
Packit 0848f5
                   li, root, the_real_comm, &(ic.the_real_comm), 
Packit 0848f5
                   MPI_ERRCODES_IGNORE ) );
Packit 0848f5
    delete [] li;
Packit 0848f5
    return ic;
Packit 0848f5
}
Packit 0848f5
Intercomm Spawn_multiple(int count, const char* array_of_commands[], const char** array_of_argv[], const int array_of_maxprocs[], const MPI::Info array_of_info[], int root, int array_of_errcodes[]) {
Packit 0848f5
    Intercomm ic;
Packit 0848f5
    MPI_Info  *li = new MPI_Info [count];
Packit 0848f5
    int i;
Packit 0848f5
    for (i=0; i
Packit 0848f5
        li[i] = array_of_info[i].the_real_info;
Packit 0848f5
    }
Packit 0848f5
    MPIX_CALLREF( this, MPI_Comm_spawn_multiple( count, 
Packit 0848f5
                   (char **)array_of_commands, 
Packit 0848f5
                   (char ***)array_of_argv, (int *)array_of_maxprocs, 
Packit 0848f5
                   li, root, the_real_comm, &(ic.the_real_comm), 
Packit 0848f5
                   array_of_errcodes ) );
Packit 0848f5
    delete [] li;
Packit 0848f5
    return ic;
Packit 0848f5
}
Packit 0848f5
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Grequest : public Request {
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Grequest(MPI_Request obj) : Request(obj) {}
Packit 0848f5
    inline Grequest(void) : Request() {}
Packit 0848f5
Packit 0848f5
    virtual ~Grequest() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Grequest(const Grequest &obj) : Request(obj) {}
Packit 0848f5
Packit 0848f5
    Grequest& operator=(const Grequest &obj) {
Packit 0848f5
      the_real_request = obj.the_real_request; return *this; }
Packit 0848f5
Packit 0848f5
    // logical
Packit 0848f5
    bool operator== (const Grequest &obj) {
Packit 0848f5
      return (the_real_request == obj.the_real_request); }
Packit 0848f5
    bool operator!= (const Grequest &obj) {
Packit 0848f5
      return (the_real_request != obj.the_real_request); }
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Request*() { return &the_real_request; }
Packit 0848f5
    inline operator MPI_Request() const { return the_real_request; }
Packit 0848f5
    Grequest& operator=(const MPI_Request& obj) {
Packit 0848f5
      the_real_request = obj; return *this; }
Packit 0848f5
    virtual void Complete( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Grequest_complete( (MPI_Request) the_real_request ));
Packit 0848f5
    }
Packit 0848f5
Packit 0848f5
    typedef int Query_function( void *, Status & );
Packit 0848f5
    typedef int Free_function( void * );
Packit 0848f5
    typedef int Cancel_function( void *, bool );
Packit 0848f5
Packit 0848f5
    Grequest Start( Query_function  *query_fn,
Packit 0848f5
                    Free_function   *free_fn,
Packit 0848f5
                    Cancel_function *cancel_fn,
Packit 0848f5
                    void *extra_state );
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Win  {
Packit 0848f5
Packit 0848f5
  protected:
Packit 0848f5
    MPI_Win the_real_win;
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Win(MPI_Win obj) : the_real_win(obj) {}
Packit 0848f5
    inline Win(void) : the_real_win(MPI_WIN_NULL) {}
Packit 0848f5
Packit 0848f5
    virtual ~Win() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Win(const Win &obj) : the_real_win(obj.the_real_win){}
Packit 0848f5
Packit 0848f5
    Win& operator=(const Win &obj) {
Packit 0848f5
      the_real_win = obj.the_real_win; return *this; }
Packit 0848f5
Packit 0848f5
    // logical
Packit 0848f5
    bool operator== (const Win &obj) {
Packit 0848f5
      return (the_real_win == obj.the_real_win); }
Packit 0848f5
    bool operator!= (const Win &obj) {
Packit 0848f5
      return (the_real_win != obj.the_real_win); }
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Win*() { return &the_real_win; }
Packit 0848f5
    inline operator MPI_Win() const { return the_real_win; }
Packit 0848f5
    Win& operator=(const MPI_Win& obj) {
Packit 0848f5
      the_real_win = obj; return *this; }
Packit 0848f5
    virtual Group Get_group( void ) const
Packit 0848f5
    {
Packit 0848f5
        Group v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_get_group( (MPI_Win) the_real_win, &(v2.the_real_group) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual void Fence( int v1 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_fence( v1, (MPI_Win) the_real_win ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Start( const Group &v1, int v2 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_start( (MPI_Group)(v1.the_real_group), v2, (MPI_Win) the_real_win ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Free( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_free( (MPI_Win *) &the_real_win ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Put( const void * v1, int v2, const Datatype &v3, int v4, Aint v5, int v6, const Datatype &v7 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Put( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, v6, (MPI_Datatype)(v7.the_real_datatype), (MPI_Win) the_real_win ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Wait( void ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_wait( (MPI_Win) the_real_win ));
Packit 0848f5
    }
Packit 0848f5
    virtual bool Test( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_test( (MPI_Win) the_real_win, &v2 ));
Packit 0848f5
        return v2!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual void Get( void * v1, int v2, const Datatype &v3, int v4, Aint v5, int v6, const Datatype &v7 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Get( v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, v6, (MPI_Datatype)(v7.the_real_datatype), (MPI_Win) the_real_win ));
Packit 0848f5
    }
Packit 0848f5
    virtual bool Get_attr( int v2, void * v3 ) const
Packit 0848f5
    {
Packit 0848f5
        int v4;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_get_attr( (MPI_Win) the_real_win, v2, v3, &v4 ));
Packit 0848f5
        return v4!= 0;
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_attr( int v2, const void * v3 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_set_attr( (MPI_Win) the_real_win, v2, (void *)v3 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Complete( void ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_complete( (MPI_Win) the_real_win ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_errhandler( const Errhandler &v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_set_errhandler( (MPI_Win) the_real_win, (MPI_Errhandler)(v2.the_real_errhandler) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_name( const char * v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_set_name( (MPI_Win) the_real_win, (const char *)v2 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Accumulate( const void * v1, int v2, const Datatype &v3, int v4, Aint v5, int v6, const Datatype &v7, const Op &v8 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Accumulate( (const void *)v1, v2, (MPI_Datatype)(v3.the_real_datatype), v4, v5, v6, (MPI_Datatype)(v7.the_real_datatype), (MPI_Op)(v8.the_real_op), (MPI_Win) the_real_win ));
Packit 0848f5
    }
Packit 0848f5
    static Win Create( const void * v1, Aint v2, int v3, const Info &v4, const Intracomm &v5 ) 
Packit 0848f5
    {
Packit 0848f5
        Win v6;
Packit 0848f5
        MPIX_CALLOBJ( v5, MPI_Win_create( (void *)v1, v2, v3, (MPI_Info)(v4.the_real_info), (MPI_Comm)(v5.the_real_comm), &(v6.the_real_win) ));
Packit 0848f5
        return v6;
Packit 0848f5
    }
Packit 0848f5
    static void Free_keyval( int &v1 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLWORLD( MPI_Win_free_keyval( &v1 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Post( const Group &v1, int v2 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_post( (MPI_Group)(v1.the_real_group), v2, (MPI_Win) the_real_win ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Unlock( int v1 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_unlock( v1, (MPI_Win) the_real_win ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Delete_attr( int v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_delete_attr( (MPI_Win) the_real_win, v2 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Lock( int v1, int v2, int v3 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_lock( v1, v2, v3, (MPI_Win) the_real_win ));
Packit 0848f5
    }
Packit 0848f5
    virtual Errhandler Get_errhandler( void ) const
Packit 0848f5
    {
Packit 0848f5
        Errhandler v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_get_errhandler( (MPI_Win) the_real_win, &(v2.the_real_errhandler) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual void Get_name( char * v2, int &v3 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Win_get_name( (MPI_Win) the_real_win, v2, &v3 ));
Packit 0848f5
    }
Packit 0848f5
    typedef void Errhandler_function(Win &, int *, ... );
Packit 0848f5
    typedef Errhandler_function Errhandler_fn;
Packit 0848f5
Packit 0848f5
    static Errhandler Create_errhandler( Errhandler_function * );
Packit 0848f5
Packit 0848f5
    typedef int Copy_attr_function(const Win& oldwin, int win_keyval, void* extra_state, void* attribute_val_in, void* attribute_val_out, bool& flag); 
Packit 0848f5
    typedef int Delete_attr_function(Win& win, int win_keyval, void* attribute_val, void* extra_state); 
Packit 0848f5
Packit 0848f5
    static int Create_keyval( Copy_attr_function *, Delete_attr_function *,
Packit 0848f5
                              void * );
Packit 0848f5
    // These functions are *not* part of MPI-2 but are provided
Packit 0848f5
    // because they should have been included
Packit 0848f5
    static int NULL_COPY_FN( const Win &oldwin MPIR_ARGUNUSED, 
Packit 0848f5
        int keyval MPIR_ARGUNUSED, void *ex MPIR_ARGUNUSED,
Packit 0848f5
        void *attr_in MPIR_ARGUNUSED, void *attr_out MPIR_ARGUNUSED, 
Packit 0848f5
        bool &flag ) { flag = 1; return 0;}
Packit 0848f5
    static int NULL_DELETE_FN( Win &win MPIR_ARGUNUSED, 
Packit 0848f5
        int keyval MPIR_ARGUNUSED, void * attr MPIR_ARGUNUSED, 
Packit 0848f5
        void *ex MPIR_ARGUNUSED ) { return 0; }
Packit 0848f5
    static int DUP_FN( const Win &oldwin MPIR_ARGUNUSED, 
Packit 0848f5
	int keyval MPIR_ARGUNUSED, void *ex MPIR_ARGUNUSED,
Packit 0848f5
        void *attr_in, void *attr_out, bool &flag ) { flag = 1; 
Packit 0848f5
            *(void **)attr_out = attr_in; return 0;} 
Packit 0848f5
Packit 0848f5
    virtual void Call_errhandler( int v2 ) const;
Packit 0848f5
};
Packit 0848f5
#ifndef MPI_FILE_NULL
Packit 0848f5
#define MPI_FILE_NULL 0
Packit 0848f5
typedef int MPI_File;
Packit 0848f5
#endif
Packit 0848f5
Packit 0848f5
class File  {
Packit 0848f5
Packit 0848f5
  protected:
Packit 0848f5
    MPI_File the_real_file;
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline File(MPI_File obj) : the_real_file(obj) {}
Packit 0848f5
    inline File(void) : the_real_file(MPI_FILE_NULL) {}
Packit 0848f5
Packit 0848f5
    virtual ~File() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    File(const File &obj) : the_real_file(obj.the_real_file){}
Packit 0848f5
Packit 0848f5
    File& operator=(const File &obj) {
Packit 0848f5
      the_real_file = obj.the_real_file; return *this; }
Packit 0848f5
Packit 0848f5
    // logical
Packit 0848f5
    bool operator== (const File &obj) {
Packit 0848f5
      return (the_real_file == obj.the_real_file); }
Packit 0848f5
    bool operator!= (const File &obj) {
Packit 0848f5
      return (the_real_file != obj.the_real_file); }
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_File*() { return &the_real_file; }
Packit 0848f5
    inline operator MPI_File() const { return the_real_file; }
Packit 0848f5
    File& operator=(const MPI_File& obj) {
Packit 0848f5
      the_real_file = obj; return *this; }
Packit 0848f5
#ifdef MPI_MODE_RDONLY
Packit 0848f5
    virtual Aint Get_type_extent( const Datatype &v2 ) const
Packit 0848f5
    {
Packit 0848f5
        MPI_Aint v3;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_get_type_extent( (MPI_File) the_real_file, (MPI_Datatype)(v2.the_real_datatype), &v3 ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_ordered_end( void * v2, Status & v3 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_ordered_end( (MPI_File) the_real_file, v2, (MPI_Status *)&(v3.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_ordered_end( void * v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_ordered_end( (MPI_File) the_real_file, v2, MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Seek_shared( Offset v2, int v3 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_seek_shared( (MPI_File) the_real_file, v2, v3 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_ordered( void * v2, int v3, const Datatype &v4, Status & v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_ordered( (MPI_File) the_real_file, v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Status *)&(v5.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_ordered( void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_ordered( (MPI_File) the_real_file, v2, v3, (MPI_Datatype)(v4.the_real_datatype), MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual Request Iread_shared( void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        Request v5;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_iread_shared( (MPI_File) the_real_file, v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPIO_Request *)&(v5.the_real_request) ));
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    virtual Info Get_info( void ) const
Packit 0848f5
    {
Packit 0848f5
        Info v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_get_info( (MPI_File) the_real_file, &(v2.the_real_info) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_ordered_begin( const void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_ordered_begin( (MPI_File) the_real_file, (const void *)v2, v3, (MPI_Datatype)(v4.the_real_datatype) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_info( const Info &v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_set_info( (MPI_File) the_real_file, (MPI_Info)(v2.the_real_info) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_ordered( const void * v2, int v3, const Datatype &v4, Status & v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_ordered( (MPI_File) the_real_file, (const void *)v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Status *)&(v5.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_ordered( const void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_ordered( (MPI_File) the_real_file, (const void *)v2, v3, (MPI_Datatype)(v4.the_real_datatype), MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Sync( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_sync( (MPI_File) the_real_file ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read( void * v2, int v3, const Datatype &v4, Status & v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read( (MPI_File) the_real_file, v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Status *)&(v5.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read( void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read( (MPI_File) the_real_file, v2, v3, (MPI_Datatype)(v4.the_real_datatype), MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_all( const void * v2, int v3, const Datatype &v4, Status & v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_all( (MPI_File) the_real_file, (const void *)v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Status *)&(v5.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_all( const void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_all( (MPI_File) the_real_file, (const void *)v2, v3, (MPI_Datatype)(v4.the_real_datatype), MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual Offset Get_size( void ) const
Packit 0848f5
    {
Packit 0848f5
        MPI_Offset v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_get_size( (MPI_File) the_real_file, &v2 ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_all_end( const void * v2, Status & v3 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_all_end( (MPI_File) the_real_file, (const void *)v2, (MPI_Status *)&(v3.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_all_end( const void * v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_all_end( (MPI_File) the_real_file, (const void *)v2, MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    static void Delete( const char * v1, const Info &v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLOBJ( FILE_NULL, MPI_File_delete( (const char *)v1, (MPI_Info)(v2.the_real_info) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_ordered_begin( void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_ordered_begin( (MPI_File) the_real_file, v2, v3, (MPI_Datatype)(v4.the_real_datatype) ));
Packit 0848f5
    }
Packit 0848f5
    virtual Request Iread_at( Offset v2, void * v3, int v4, const Datatype &v5 ) 
Packit 0848f5
    {
Packit 0848f5
        Request v6;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_iread_at( (MPI_File) the_real_file, v2, v3, v4, (MPI_Datatype)(v5.the_real_datatype), (MPIO_Request *)&(v6.the_real_request) ));
Packit 0848f5
        return v6;
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_at_all_end( const void * v2, Status & v3 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_at_all_end( (MPI_File) the_real_file, (const void *)v2, (MPI_Status *)&(v3.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_at_all_end( const void * v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_at_all_end( (MPI_File) the_real_file, (const void *)v2, MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual Offset Get_position_shared( void ) const
Packit 0848f5
    {
Packit 0848f5
        MPI_Offset v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_get_position_shared( (MPI_File) the_real_file, &v2 ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_shared( const void * v2, int v3, const Datatype &v4, Status & v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_shared( (MPI_File) the_real_file, (const void *)v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Status *)&(v5.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_shared( const void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_shared( (MPI_File) the_real_file, (const void *)v2, v3, (MPI_Datatype)(v4.the_real_datatype), MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual Request Iwrite_at( Offset v2, const void * v3, int v4, const Datatype &v5 ) 
Packit 0848f5
    {
Packit 0848f5
        Request v6;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_iwrite_at( (MPI_File) the_real_file, (MPI_Offset)v2, (const void *)v3, v4, (MPI_Datatype)(v5.the_real_datatype), (MPIO_Request *)&(v6.the_real_request) ));
Packit 0848f5
        return v6;
Packit 0848f5
    }
Packit 0848f5
    virtual void Get_view( Offset & v2, Datatype &v3, Datatype &v4, char * v5 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_get_view( (MPI_File) the_real_file, &v2, (MPI_Datatype *)&(v3.the_real_datatype), (MPI_Datatype *)&(v4.the_real_datatype), v5 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_all_begin( const void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_all_begin( (MPI_File) the_real_file, (const void *)v2, v3, (MPI_Datatype)(v4.the_real_datatype) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_all_end( void * v2, Status & v3 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_all_end( (MPI_File) the_real_file, v2, (MPI_Status *)&(v3.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_all_end( void * v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_all_end( (MPI_File) the_real_file, v2, MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual Offset Get_byte_offset( const Offset v2 ) const
Packit 0848f5
    {
Packit 0848f5
        MPI_Offset v3;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_get_byte_offset( (MPI_File) the_real_file, (MPI_Offset)v2, &v3 ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual Request Iread( void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        Request v5;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_iread( (MPI_File) the_real_file, v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPIO_Request *)&(v5.the_real_request) ));
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_at_all_end( void * v2, Status & v3 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_at_all_end( (MPI_File) the_real_file, v2, (MPI_Status *)&(v3.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_at_all_end( void * v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_at_all_end( (MPI_File) the_real_file, v2, MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_at( Offset v2, const void * v3, int v4, const Datatype &v5, Status & v6 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_at( (MPI_File) the_real_file, v2, (const void *)v3, v4, (MPI_Datatype)(v5.the_real_datatype), (MPI_Status *)&(v6.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_at( Offset v2, const void * v3, int v4, const Datatype &v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_at( (MPI_File) the_real_file, v2, (const void *)v3, v4, (MPI_Datatype)(v5.the_real_datatype), MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_at_all_begin( Offset v2, const void * v3, int v4, const Datatype &v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_at_all_begin( (MPI_File) the_real_file, v2, (const void *)v3, v4, (MPI_Datatype)(v5.the_real_datatype) ));
Packit 0848f5
    }
Packit 0848f5
    virtual Errhandler Get_errhandler( void ) const
Packit 0848f5
    {
Packit 0848f5
        Errhandler v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_get_errhandler( (MPI_File) the_real_file, &(v2.the_real_errhandler) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual int Get_amode( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_get_amode( (MPI_File) the_real_file, &v2 ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_atomicity( bool v2 ) 
Packit 0848f5
    {
Packit 0848f5
        int l2;
Packit 0848f5
         l2 = (v2 == true) ? 1 : 0;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_set_atomicity( (MPI_File) the_real_file, l2 ));
Packit 0848f5
    }
Packit 0848f5
    virtual Group Get_group( void ) const
Packit 0848f5
    {
Packit 0848f5
        Group v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_get_group( (MPI_File) the_real_file, &(v2.the_real_group) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual Offset Get_position( void ) const
Packit 0848f5
    {
Packit 0848f5
        MPI_Offset v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_get_position( (MPI_File) the_real_file, &v2 ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    static File Open( const Intracomm &v1, const char * v2, int v3, const Info &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        File v5;
Packit 0848f5
        MPIX_CALLOBJ( FILE_NULL, MPI_File_open( (MPI_Comm)(v1.the_real_comm), (const char *)v2, v3, (MPI_Info)(v4.the_real_info), &(v5.the_real_file) ));
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    virtual void Seek( Offset v2, int v3 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_seek( (MPI_File) the_real_file, v2, v3 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_all_begin( void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_all_begin( (MPI_File) the_real_file, v2, v3, (MPI_Datatype)(v4.the_real_datatype) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_at_all_begin( Offset v2, void * v3, int v4, const Datatype &v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_at_all_begin( (MPI_File) the_real_file, v2, v3, v4, (MPI_Datatype)(v5.the_real_datatype) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_all( void * v2, int v3, const Datatype &v4, Status & v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_all( (MPI_File) the_real_file, v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Status *)&(v5.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_all( void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_all( (MPI_File) the_real_file, v2, v3, (MPI_Datatype)(v4.the_real_datatype), MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Preallocate( Offset v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_preallocate( (MPI_File) the_real_file, v2 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_at_all( Offset v2, void * v3, int v4, const Datatype &v5, Status & v6 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_at_all( (MPI_File) the_real_file, v2, v3, v4, (MPI_Datatype)(v5.the_real_datatype), (MPI_Status *)&(v6.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_at_all( Offset v2, void * v3, int v4, const Datatype &v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_at_all( (MPI_File) the_real_file, v2, v3, v4, (MPI_Datatype)(v5.the_real_datatype), MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_shared( void * v2, int v3, const Datatype &v4, Status & v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_shared( (MPI_File) the_real_file, v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Status *)&(v5.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_shared( void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_shared( (MPI_File) the_real_file, v2, v3, (MPI_Datatype)(v4.the_real_datatype), MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual Request Iwrite( const void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        Request v5;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_iwrite( (MPI_File) the_real_file, (const void *)v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPIO_Request *)&(v5.the_real_request) ));
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    virtual Request Iwrite_shared( const void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        Request v5;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_iwrite_shared( (MPI_File) the_real_file, (const void *)v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPIO_Request *)&(v5.the_real_request) ));
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_errhandler( const Errhandler &v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_set_errhandler( (MPI_File) the_real_file, (MPI_Errhandler)(v2.the_real_errhandler) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_at_all( Offset v2, const void * v3, int v4, const Datatype &v5, Status & v6 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_at_all( (MPI_File) the_real_file, v2, (const void *)v3, v4, (MPI_Datatype)(v5.the_real_datatype), (MPI_Status *)&(v6.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_at_all( Offset v2, const void * v3, int v4, const Datatype &v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_at_all( (MPI_File) the_real_file, v2, (const void *)v3, v4, (MPI_Datatype)(v5.the_real_datatype), MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_size( Offset v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_set_size( (MPI_File) the_real_file, v2 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Set_view( Offset v2, const Datatype &v3, const Datatype v4, const char * v5, const Info &v6 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_set_view( (MPI_File) the_real_file, v2, (MPI_Datatype)(v3.the_real_datatype), (MPI_Datatype)v4, (const char *)v5, (MPI_Info)(v6.the_real_info) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_at( Offset v2, void * v3, int v4, const Datatype &v5, Status & v6 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_at( (MPI_File) the_real_file, v2, v3, v4, (MPI_Datatype)(v5.the_real_datatype), (MPI_Status *)&(v6.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Read_at( Offset v2, void * v3, int v4, const Datatype &v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_read_at( (MPI_File) the_real_file, v2, v3, v4, (MPI_Datatype)(v5.the_real_datatype), MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Close( void ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_close( (MPI_File *) &the_real_file ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_ordered_end( const void * v2, Status & v3 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_ordered_end( (MPI_File) the_real_file, (const void *)v2, (MPI_Status *)&(v3.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write_ordered_end( const void * v2 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write_ordered_end( (MPI_File) the_real_file, (const void *)v2, MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write( const void * v2, int v3, const Datatype &v4, Status & v5 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write( (MPI_File) the_real_file, (const void *)v2, v3, (MPI_Datatype)(v4.the_real_datatype), (MPI_Status *)&(v5.the_real_status ) ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Write( const void * v2, int v3, const Datatype &v4 ) 
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_write( (MPI_File) the_real_file, (const void *)v2, v3, (MPI_Datatype)(v4.the_real_datatype), MPI_STATUS_IGNORE ));
Packit 0848f5
    }
Packit 0848f5
    virtual bool Get_atomicity( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_File_get_atomicity( (MPI_File) the_real_file, &v2 ));
Packit 0848f5
        return v2!= 0;
Packit 0848f5
    }
Packit 0848f5
    typedef void Errhandler_function(File &, int *, ... );
Packit 0848f5
    typedef Errhandler_function Errhandler_fn;
Packit 0848f5
Packit 0848f5
    static Errhandler Create_errhandler( Errhandler_function * );
Packit 0848f5
Packit 0848f5
    virtual void Call_errhandler( int v2 ) const;
Packit 0848f5
#endif
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Graphcomm : public Intracomm {
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Graphcomm(MPI_Comm obj) : Intracomm(obj) {}
Packit 0848f5
    inline Graphcomm(void) : Intracomm() {}
Packit 0848f5
Packit 0848f5
    virtual ~Graphcomm() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Graphcomm(const Graphcomm &obj) : Intracomm(obj) {}
Packit 0848f5
Packit 0848f5
    Graphcomm& operator=(const Graphcomm &obj) {
Packit 0848f5
      the_real_comm = obj.the_real_comm; return *this; }
Packit 0848f5
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Comm*() { return &the_real_comm; }
Packit 0848f5
    inline operator MPI_Comm() const { return the_real_comm; }
Packit 0848f5
    Graphcomm& operator=(const MPI_Comm& obj) {
Packit 0848f5
      the_real_comm = obj; return *this; }
Packit 0848f5
    virtual void Get_dims( int * v2, int * v3 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Graphdims_get( (MPI_Comm) the_real_comm, v2, v3 ));
Packit 0848f5
    }
Packit 0848f5
    virtual void Get_topo( int v2, int v3, int v4[], int v5[] ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Graph_get( (MPI_Comm) the_real_comm, v2, v3, v4, v5 ));
Packit 0848f5
    }
Packit 0848f5
    virtual int Map( int v2, const int v3[], const int v4[] ) const
Packit 0848f5
    {
Packit 0848f5
        int v5;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Graph_map( (MPI_Comm) the_real_comm, v2, (const int  *)v3, (const int  *)v4, &v5 ));
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    virtual void Get_neighbors( int v2, int v3, int v4[] ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Graph_neighbors( (MPI_Comm) the_real_comm, v2, v3, v4 ));
Packit 0848f5
    }
Packit 0848f5
    virtual int Get_neighbors_count( int v2 ) const
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Graph_neighbors_count( (MPI_Comm) the_real_comm, v2, &v3 ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    Graphcomm Dup( void ) const
Packit 0848f5
    {
Packit 0848f5
        Graphcomm v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_dup( (MPI_Comm) the_real_comm, &(v2.the_real_comm) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    
Packit 0848f5
// If the compiler does not support variable return types, return a 
Packit 0848f5
// reference to Comm.  The user must then cast this to the correct type
Packit 0848f5
// (Standard-conforming C++ compilers support variable return types)
Packit 0848f5
#ifdef HAVE_NO_VARIABLE_RETURN_TYPE_SUPPORT
Packit 0848f5
    virtual Comm & Clone(void) const { 
Packit 0848f5
        MPI_Comm ncomm;
Packit 0848f5
        MPI_Comm_dup( (MPI_Comm)the_real_comm, &ncomm); 
Packit 0848f5
        Comm *clone = new Graphcomm(ncomm); 
Packit 0848f5
        return *clone; 
Packit 0848f5
    }
Packit 0848f5
#else
Packit 0848f5
    virtual Graphcomm & Clone(void) const { 
Packit 0848f5
        MPI_Comm ncomm;
Packit 0848f5
        MPI_Comm_dup( (MPI_Comm)the_real_comm, &ncomm); 
Packit 0848f5
        Graphcomm *clone = new Graphcomm(ncomm); 
Packit 0848f5
        return *clone; 
Packit 0848f5
    }
Packit 0848f5
#endif
Packit 0848f5
};
Packit 0848f5
Packit 0848f5
class Cartcomm : public Intracomm {
Packit 0848f5
Packit 0848f5
  public:
Packit 0848f5
    // new/delete
Packit 0848f5
Packit 0848f5
    inline Cartcomm(MPI_Comm obj) : Intracomm(obj) {}
Packit 0848f5
    inline Cartcomm(void) : Intracomm() {}
Packit 0848f5
Packit 0848f5
    virtual ~Cartcomm() {}
Packit 0848f5
    // copy/assignment
Packit 0848f5
Packit 0848f5
    Cartcomm(const Cartcomm &obj) : Intracomm(obj) {}
Packit 0848f5
Packit 0848f5
    Cartcomm& operator=(const Cartcomm &obj) {
Packit 0848f5
      the_real_comm = obj.the_real_comm; return *this; }
Packit 0848f5
Packit 0848f5
    // C/C++ cast and assignment
Packit 0848f5
    inline operator MPI_Comm*() { return &the_real_comm; }
Packit 0848f5
    inline operator MPI_Comm() const { return the_real_comm; }
Packit 0848f5
    Cartcomm& operator=(const MPI_Comm& obj) {
Packit 0848f5
      the_real_comm = obj; return *this; }
Packit 0848f5
    virtual void Get_coords( int v2, int v3, int v4[] ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Cart_coords( (MPI_Comm) the_real_comm, v2, v3, v4 ));
Packit 0848f5
    }
Packit 0848f5
    virtual int Get_cart_rank( const int v2[] ) const
Packit 0848f5
    {
Packit 0848f5
        int v3;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Cart_rank( (MPI_Comm) the_real_comm, (const int  *)v2, &v3 ));
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual int Get_dim( void ) const
Packit 0848f5
    {
Packit 0848f5
        int v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Cartdim_get( (MPI_Comm) the_real_comm, &v2 ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    Cartcomm Dup( void ) const
Packit 0848f5
    {
Packit 0848f5
        Cartcomm v2;
Packit 0848f5
        MPIX_CALLREF( this, MPI_Comm_dup( (MPI_Comm) the_real_comm, &(v2.the_real_comm) ));
Packit 0848f5
        return v2;
Packit 0848f5
    }
Packit 0848f5
    virtual void Get_topo( int v2, int v3[], bool v4[], int v5[] ) const
Packit 0848f5
    {
Packit 0848f5
        int *l4 = new int[v2];
Packit 0848f5
        MPIX_CALLREF( this, MPI_Cart_get( (MPI_Comm) the_real_comm, v2, v3, l4, v5 ));
Packit 0848f5
        { 
Packit 0848f5
            int i4; 
Packit 0848f5
            for (i4=0;i4
Packit 0848f5
		// Unfortunately, at least one C++ compiler (Microsoft's)
Packit 0848f5
		// generates warning messages when the type size changes
Packit 0848f5
		// even when an explicit cast is used.  To avoid these messages, we 
Packit 0848f5
		// cause the generated code to explicitly compute a
Packit 0848f5
		// boolean value
Packit 0848f5
                v4[i4] = l4[i4] != 0;
Packit 0848f5
            }
Packit 0848f5
            delete[] l4;
Packit 0848f5
        }
Packit 0848f5
    }
Packit 0848f5
    virtual int Map( int v2, const int v3[], const bool v4[] ) const
Packit 0848f5
    {
Packit 0848f5
        int v5;
Packit 0848f5
        int *l4 = new int[v2];
Packit 0848f5
        { 
Packit 0848f5
            int i4; 
Packit 0848f5
            for (i4=0;i4
Packit 0848f5
                l4[i4] = v4[i4] == true ? 1 : 0;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLREF( this, MPI_Cart_map( (MPI_Comm) the_real_comm, v2, (const int  *)v3, l4, &v5 ));
Packit 0848f5
Packit 0848f5
            delete[] l4;
Packit 0848f5
        return v5;
Packit 0848f5
    }
Packit 0848f5
    virtual Cartcomm Sub( const bool v2[] ) const
Packit 0848f5
    {
Packit 0848f5
        Cartcomm v3;
Packit 0848f5
        int *l2 = new int[10];
Packit 0848f5
        { 
Packit 0848f5
            int i2; 
Packit 0848f5
            for (i2=0;i2<10;i2++) {
Packit 0848f5
                l2[i2] = v2[i2] == true ? 1 : 0;
Packit 0848f5
            }
Packit 0848f5
        }
Packit 0848f5
        MPIX_CALLREF( this, MPI_Cart_sub( (MPI_Comm) the_real_comm, l2, &(v3.the_real_comm) ));
Packit 0848f5
Packit 0848f5
            delete[] l2;
Packit 0848f5
        return v3;
Packit 0848f5
    }
Packit 0848f5
    virtual void Shift( int v2, int v3, int &v4, int &v5 ) const
Packit 0848f5
    {
Packit 0848f5
        MPIX_CALLREF( this, MPI_Cart_shift( (MPI_Comm) the_real_comm, v2, v3, &v4, &v5 ));
Packit 0848f5
    }
Packit 0848f5
    
Packit 0848f5
// If the compiler does not support variable return types, return a 
Packit 0848f5
// reference to Comm.  The user must then cast this to the correct type
Packit 0848f5
// (Standard-conforming C++ compilers support variable return types)
Packit 0848f5
#ifdef HAVE_NO_VARIABLE_RETURN_TYPE_SUPPORT
Packit 0848f5
    virtual Comm & Clone(void) const { 
Packit 0848f5
        MPI_Comm ncomm;
Packit 0848f5
        MPI_Comm_dup( (MPI_Comm)the_real_comm, &ncomm); 
Packit 0848f5
        Comm *clone = new Cartcomm(ncomm); 
Packit 0848f5
        return *clone; 
Packit 0848f5
    }
Packit 0848f5
#else
Packit 0848f5
    virtual Cartcomm & Clone(void) const { 
Packit 0848f5
        MPI_Comm ncomm;
Packit 0848f5
        MPI_Comm_dup( (MPI_Comm)the_real_comm, &ncomm); 
Packit 0848f5
        Cartcomm *clone = new Cartcomm(ncomm); 
Packit 0848f5
        return *clone; 
Packit 0848f5
    }
Packit 0848f5
#endif
Packit 0848f5
};
Packit 0848f5
extern     int Add_error_class( void ) ;
Packit 0848f5
extern     void* Alloc_mem( Aint v1, const Info &v2 ) ;
Packit 0848f5
extern     void Lookup_name( const char * v1, const Info &v2, char * v3 ) ;
Packit 0848f5
extern     void Publish_name( const char * v1, const Info &v2, const char * v3 ) ;
Packit 0848f5
extern     void Unpublish_name( const char * v1, const Info &v2, const char * v3 ) ;
Packit 0848f5
extern     Aint Get_address( const void * v1 ) ;
Packit 0848f5
extern     void Add_error_string( int v1, const char * v2 ) ;
Packit 0848f5
extern     int Query_thread( void ) ;
Packit 0848f5
extern     void Close_port( const char * v1 ) ;
Packit 0848f5
extern     int Add_error_code( int v1 ) ;
Packit 0848f5
extern     void Free_mem( void * v1 ) ;
Packit 0848f5
extern     void Open_port( const Info &v1, char * v2 ) ;
Packit 0848f5
extern     bool Is_finalized( void ) ;
Packit 0848f5
extern     bool Is_thread_main( void ) ;
Packit 0848f5
Packit 0848f5
#ifdef MPI_MODE_RDONLY
Packit 0848f5
typedef int Datarep_extent_function( const Datatype&, Aint&, void *);
Packit 0848f5
typedef int Datarep_conversion_function( void *, Datatype &, int, void *,
Packit 0848f5
                Offset, void * );
Packit 0848f5
#endif
Packit 0848f5
Packit 0848f5
Packit 0848f5
extern Datatype CHAR;
Packit 0848f5
extern Datatype UNSIGNED_CHAR;
Packit 0848f5
extern Datatype BYTE;
Packit 0848f5
extern Datatype SHORT;
Packit 0848f5
extern Datatype UNSIGNED_SHORT;
Packit 0848f5
extern Datatype INT;
Packit 0848f5
extern Datatype UNSIGNED;
Packit 0848f5
extern Datatype LONG;
Packit 0848f5
extern Datatype UNSIGNED_LONG;
Packit 0848f5
extern Datatype FLOAT;
Packit 0848f5
extern Datatype DOUBLE;
Packit 0848f5
extern Datatype LONG_DOUBLE;
Packit 0848f5
extern Datatype LONG_LONG_INT;
Packit 0848f5
extern Datatype LONG_LONG;
Packit 0848f5
extern Datatype PACKED;
Packit 0848f5
extern Datatype LB;
Packit 0848f5
extern Datatype UB;
Packit 0848f5
extern Datatype FLOAT_INT;
Packit 0848f5
extern Datatype DOUBLE_INT;
Packit 0848f5
extern Datatype LONG_INT;
Packit 0848f5
extern Datatype SHORT_INT;
Packit 0848f5
extern Datatype LONG_DOUBLE_INT;
Packit 0848f5
extern Datatype REAL4;
Packit 0848f5
extern Datatype REAL8;
Packit 0848f5
extern Datatype REAL16;
Packit 0848f5
extern Datatype COMPLEX8;
Packit 0848f5
extern Datatype COMPLEX16;
Packit 0848f5
extern Datatype COMPLEX32;
Packit 0848f5
extern Datatype INTEGER1;
Packit 0848f5
extern Datatype INTEGER2;
Packit 0848f5
extern Datatype INTEGER4;
Packit 0848f5
extern Datatype INTEGER8;
Packit 0848f5
extern Datatype INTEGER16;
Packit 0848f5
extern Datatype WCHAR;
Packit 0848f5
extern Datatype SIGNED_CHAR;
Packit 0848f5
extern Datatype UNSIGNED_LONG_LONG;
Packit 0848f5
extern Datatype TWOINT;
Packit 0848f5
extern Datatype BOOL;
Packit 0848f5
#define MPIR_CXX_BOOL @MPIR_CXX_BOOL@
Packit 0848f5
extern Datatype COMPLEX;
Packit 0848f5
#define MPIR_CXX_COMPLEX @MPIR_CXX_COMPLEX@
Packit 0848f5
extern Datatype DOUBLE_COMPLEX;
Packit 0848f5
#define MPIR_CXX_DOUBLE_COMPLEX @MPIR_CXX_DOUBLE_COMPLEX@
Packit 0848f5
extern Datatype LONG_DOUBLE_COMPLEX;
Packit 0848f5
#define MPIR_CXX_LONG_DOUBLE_COMPLEX @MPIR_CXX_LONG_DOUBLE_COMPLEX@
Packit 0848f5
extern Datatype DATATYPE_NULL;
Packit 0848f5
Packit 0848f5
#if @FORTRAN_BINDING@
Packit 0848f5
extern Datatype INTEGER;
Packit 0848f5
extern Datatype REAL;
Packit 0848f5
extern Datatype DOUBLE_PRECISION;
Packit 0848f5
extern Datatype F_COMPLEX;
Packit 0848f5
extern Datatype F_DOUBLE_COMPLEX;
Packit 0848f5
extern Datatype LOGICAL;
Packit 0848f5
extern Datatype CHARACTER;
Packit 0848f5
extern Datatype TWOREAL;
Packit 0848f5
extern Datatype TWODOUBLE_PRECISION;
Packit 0848f5
extern Datatype TWOINTEGER;
Packit 0848f5
#endif
Packit 0848f5
extern const Op MAX;
Packit 0848f5
extern const Op MIN;
Packit 0848f5
extern const Op SUM;
Packit 0848f5
extern const Op PROD;
Packit 0848f5
extern const Op LAND;
Packit 0848f5
extern const Op BAND;
Packit 0848f5
extern const Op LOR;
Packit 0848f5
extern const Op BOR;
Packit 0848f5
extern const Op LXOR;
Packit 0848f5
extern const Op BXOR;
Packit 0848f5
extern const Op MINLOC;
Packit 0848f5
extern const Op MAXLOC;
Packit 0848f5
extern const Op REPLACE;
Packit 0848f5
extern const Op OP_NULL;
Packit 0848f5
extern Intracomm COMM_SELF;
Packit 0848f5
extern const Group GROUP_EMPTY;
Packit 0848f5
extern const Nullcomm COMM_NULL;
Packit 0848f5
extern const Group GROUP_NULL;
Packit 0848f5
extern const Request REQUEST_NULL;
Packit 0848f5
extern const Errhandler ERRHANDLER_NULL;
Packit 0848f5
extern const Errhandler ERRORS_RETURN;
Packit 0848f5
extern const Errhandler ERRORS_ARE_FATAL;
Packit 0848f5
extern const Errhandler ERRORS_THROW_EXCEPTIONS;
Packit 0848f5
extern const Info INFO_NULL;
Packit 0848f5
extern const Win WIN_NULL;
Packit 0848f5
extern const int BSEND_OVERHEAD;
Packit 0848f5
extern const int KEYVAL_INVALID;
Packit 0848f5
extern const int CART;
Packit 0848f5
extern const int GRAPH;
Packit 0848f5
extern const int IDENT;
Packit 0848f5
extern const int SIMILAR;
Packit 0848f5
extern const int CONGRUENT;
Packit 0848f5
extern const int UNEQUAL;
Packit 0848f5
extern const int PROC_NULL;
Packit 0848f5
extern const int ANY_TAG;
Packit 0848f5
extern const int ANY_SOURCE;
Packit 0848f5
extern const int ROOT;
Packit 0848f5
extern const int TAG_UB;
Packit 0848f5
extern const int IO;
Packit 0848f5
extern const int HOST;
Packit 0848f5
extern const int WTIME_IS_GLOBAL;
Packit 0848f5
extern const int UNIVERSE_SIZE;
Packit 0848f5
extern const int LASTUSEDCODE;
Packit 0848f5
extern const int APPNUM;
Packit 0848f5
extern const int MAX_PROCESSOR_NAME;
Packit 0848f5
extern const int MAX_ERROR_STRING;
Packit 0848f5
extern const int MAX_PORT_NAME;
Packit 0848f5
extern const int MAX_OBJECT_NAME;
Packit 0848f5
extern const int MAX_INFO_VAL;
Packit 0848f5
extern const int MAX_INFO_KEY;
Packit 0848f5
extern const int UNDEFINED;
Packit 0848f5
extern const int LOCK_EXCLUSIVE;
Packit 0848f5
extern const int LOCK_SHARED;
Packit 0848f5
extern const int WIN_BASE;
Packit 0848f5
extern const int WIN_DISP_UNIT;
Packit 0848f5
extern const int WIN_SIZE;
Packit 0848f5
extern const int SUCCESS;
Packit 0848f5
extern const int ERR_BUFFER;
Packit 0848f5
extern const int ERR_COUNT;
Packit 0848f5
extern const int ERR_TYPE;
Packit 0848f5
extern const int ERR_TAG;
Packit 0848f5
extern const int ERR_COMM;
Packit 0848f5
extern const int ERR_RANK;
Packit 0848f5
extern const int ERR_REQUEST;
Packit 0848f5
extern const int ERR_ROOT;
Packit 0848f5
extern const int ERR_GROUP;
Packit 0848f5
extern const int ERR_OP;
Packit 0848f5
extern const int ERR_TOPOLOGY;
Packit 0848f5
extern const int ERR_DIMS;
Packit 0848f5
extern const int ERR_ARG;
Packit 0848f5
extern const int ERR_UNKNOWN;
Packit 0848f5
extern const int ERR_TRUNCATE;
Packit 0848f5
extern const int ERR_OTHER;
Packit 0848f5
extern const int ERR_INTERN;
Packit 0848f5
extern const int ERR_PENDING;
Packit 0848f5
extern const int ERR_IN_STATUS;
Packit 0848f5
extern const int ERR_LASTCODE;
Packit 0848f5
extern const int ERR_FILE;
Packit 0848f5
extern const int ERR_ACCESS;
Packit 0848f5
extern const int ERR_AMODE;
Packit 0848f5
extern const int ERR_BAD_FILE;
Packit 0848f5
extern const int ERR_FILE_EXISTS;
Packit 0848f5
extern const int ERR_FILE_IN_USE;
Packit 0848f5
extern const int ERR_NO_SPACE;
Packit 0848f5
extern const int ERR_NO_SUCH_FILE;
Packit 0848f5
extern const int ERR_IO;
Packit 0848f5
extern const int ERR_READ_ONLY;
Packit 0848f5
extern const int ERR_CONVERSION;
Packit 0848f5
extern const int ERR_DUP_DATAREP;
Packit 0848f5
extern const int ERR_UNSUPPORTED_DATAREP;
Packit 0848f5
extern const int ERR_INFO;
Packit 0848f5
extern const int ERR_INFO_KEY;
Packit 0848f5
extern const int ERR_INFO_VALUE;
Packit 0848f5
extern const int ERR_INFO_NOKEY;
Packit 0848f5
extern const int ERR_NAME;
Packit 0848f5
extern const int ERR_NO_MEM;
Packit 0848f5
extern const int ERR_NOT_SAME;
Packit 0848f5
extern const int ERR_PORT;
Packit 0848f5
extern const int ERR_QUOTA;
Packit 0848f5
extern const int ERR_SERVICE;
Packit 0848f5
extern const int ERR_SPAWN;
Packit 0848f5
extern const int ERR_UNSUPPORTED_OPERATION;
Packit 0848f5
extern const int ERR_WIN;
Packit 0848f5
extern const int ERR_BASE;
Packit 0848f5
extern const int ERR_LOCKTYPE;
Packit 0848f5
extern const int ERR_KEYVAL;
Packit 0848f5
extern const int ERR_RMA_CONFLICT;
Packit 0848f5
extern const int ERR_RMA_SYNC;
Packit 0848f5
extern const int ERR_SIZE;
Packit 0848f5
extern const int ERR_DISP;
Packit 0848f5
extern const int ERR_ASSERT;
Packit 0848f5
extern const int TYPECLASS_REAL;
Packit 0848f5
extern const int TYPECLASS_INTEGER;
Packit 0848f5
extern const int TYPECLASS_COMPLEX;
Packit 0848f5
#if defined(MPI_SEEK_SET) && !defined(MPICH_IGNORE_CXX_SEEK) && !defined(SEEK_SET)
Packit 0848f5
extern const int SEEK_SET;
Packit 0848f5
extern const int SEEK_END;
Packit 0848f5
extern const int SEEK_CUR;
Packit 0848f5
#endif
Packit 0848f5
extern const int DISTRIBUTE_BLOCK;
Packit 0848f5
extern const int DISTRIBUTE_CYCLIC;
Packit 0848f5
extern const int DISTRIBUTE_DFLT_DARG;
Packit 0848f5
extern const int DISTRIBUTE_NONE;
Packit 0848f5
extern const int ORDER_C;
Packit 0848f5
extern const int ORDER_FORTRAN;
Packit 0848f5
// Include these only if MPI-IO is available
Packit 0848f5
#ifdef MPI_MODE_RDONLY
Packit 0848f5
extern const int MAX_DATAREP_STRING;
Packit 0848f5
extern const MPI_Offset DISPLACEMENT_CURRENT;
Packit 0848f5
extern const int MODE_APPEND;
Packit 0848f5
extern const int MODE_CREATE;
Packit 0848f5
extern const int MODE_DELETE_ON_CLOSE;
Packit 0848f5
extern const int MODE_EXCL;
Packit 0848f5
extern const int MODE_RDONLY;
Packit 0848f5
extern const int MODE_RDWR;
Packit 0848f5
extern const int MODE_SEQUENTIAL;
Packit 0848f5
extern const int MODE_UNIQUE_OPEN;
Packit 0848f5
extern const int MODE_WRONLY;
Packit 0848f5
#endif // IO
Packit 0848f5
extern const int MODE_NOCHECK;
Packit 0848f5
extern const int MODE_NOPRECEDE;
Packit 0848f5
extern const int MODE_NOPUT;
Packit 0848f5
extern const int MODE_NOSTORE;
Packit 0848f5
extern const int MODE_NOSUCCEED;
Packit 0848f5
extern const int COMM_TYPE_SHARED;
Packit 0848f5
extern const int COMBINER_CONTIGUOUS;
Packit 0848f5
extern const int COMBINER_DARRAY;
Packit 0848f5
extern const int COMBINER_DUP;
Packit 0848f5
extern const int COMBINER_F90_COMPLEX;
Packit 0848f5
extern const int COMBINER_F90_INTEGER;
Packit 0848f5
extern const int COMBINER_F90_REAL;
Packit 0848f5
extern const int COMBINER_HINDEXED_INTEGER;
Packit 0848f5
extern const int COMBINER_HINDEXED;
Packit 0848f5
extern const int COMBINER_HVECTOR_INTEGER;
Packit 0848f5
extern const int COMBINER_HVECTOR;
Packit 0848f5
extern const int COMBINER_INDEXED_BLOCK;
Packit 0848f5
extern const int COMBINER_INDEXED;
Packit 0848f5
extern const int COMBINER_NAMED;
Packit 0848f5
extern const int COMBINER_RESIZED;
Packit 0848f5
extern const int COMBINER_STRUCT_INTEGER;
Packit 0848f5
extern const int COMBINER_STRUCT;
Packit 0848f5
extern const int COMBINER_SUBARRAY;
Packit 0848f5
extern const int COMBINER_VECTOR;
Packit 0848f5
extern const int COMBINER_HINDEXED_BLOCK;
Packit 0848f5
extern const int THREAD_FUNNELED;
Packit 0848f5
extern const int THREAD_MULTIPLE;
Packit 0848f5
extern const int THREAD_SERIALIZED;
Packit 0848f5
extern const int THREAD_SINGLE;
Packit 0848f5
extern const char ** const ARGV_NULL;
Packit 0848f5
extern const char *** const ARGVS_NULL;
Packit 0848f5
extern void * const BOTTOM;
Packit 0848f5
extern void * const IN_PLACE;
Packit 0848f5
extern void Init(void);
Packit 0848f5
extern void Init(int &, char **& );
Packit 0848f5
extern int Init_thread(int);
Packit 0848f5
extern int Init_thread(int &, char **&, int );
Packit 0848f5
extern double Wtime(void);
Packit 0848f5
extern double Wtick(void);
Packit 0848f5
} // namespace MPI