/* -*- Mode: C; c-basic-offset:4 ; -*- */
/*  
 *  (C) 2001 by Argonne National Laboratory.
 *      See COPYRIGHT in top-level directory.
 *
 * This file is automatically generated by buildiface 
 * DO NOT EDIT
 */
#include "mpi_fortimpl.h"


/* Begin MPI profiling block */
#if defined(USE_WEAK_SYMBOLS) && !defined(USE_ONLY_MPI_NAMES) 
#if defined(HAVE_MULTIPLE_PRAGMA_WEAK) && defined(F77_NAME_LOWER_2USCORE)
extern FORT_DLL_SPEC void FORT_CALL MPI_REGISTER_DATAREP( char * FORT_MIXED_LEN_DECL, MPI_Datarep_conversion_function*, MPI_Datarep_conversion_function*, MPI_Datarep_extent_function*, void*, MPI_Fint * FORT_END_LEN_DECL );
extern FORT_DLL_SPEC void FORT_CALL mpi_register_datarep__( char * FORT_MIXED_LEN_DECL, MPI_Datarep_conversion_function*, MPI_Datarep_conversion_function*, MPI_Datarep_extent_function*, void*, MPI_Fint * FORT_END_LEN_DECL );
extern FORT_DLL_SPEC void FORT_CALL mpi_register_datarep( char * FORT_MIXED_LEN_DECL, MPI_Datarep_conversion_function*, MPI_Datarep_conversion_function*, MPI_Datarep_extent_function*, void*, MPI_Fint * FORT_END_LEN_DECL );
extern FORT_DLL_SPEC void FORT_CALL mpi_register_datarep_( char * FORT_MIXED_LEN_DECL, MPI_Datarep_conversion_function*, MPI_Datarep_conversion_function*, MPI_Datarep_extent_function*, void*, MPI_Fint * FORT_END_LEN_DECL );
extern FORT_DLL_SPEC void FORT_CALL pmpi_register_datarep_( char * FORT_MIXED_LEN_DECL, MPI_Datarep_conversion_function*, MPI_Datarep_conversion_function*, MPI_Datarep_extent_function*, void*, MPI_Fint * FORT_END_LEN_DECL );

#pragma weak MPI_REGISTER_DATAREP = pmpi_register_datarep__
#pragma weak mpi_register_datarep__ = pmpi_register_datarep__
#pragma weak mpi_register_datarep_ = pmpi_register_datarep__
#pragma weak mpi_register_datarep = pmpi_register_datarep__
#pragma weak pmpi_register_datarep_ = pmpi_register_datarep__


#elif defined(HAVE_PRAGMA_WEAK)

#if defined(F77_NAME_UPPER)
extern FORT_DLL_SPEC void FORT_CALL MPI_REGISTER_DATAREP( char * FORT_MIXED_LEN_DECL, MPI_Datarep_conversion_function*, MPI_Datarep_conversion_function*, MPI_Datarep_extent_function*, void*, MPI_Fint * FORT_END_LEN_DECL );

#pragma weak MPI_REGISTER_DATAREP = PMPI_REGISTER_DATAREP
#elif defined(F77_NAME_LOWER_2USCORE)
extern FORT_DLL_SPEC void FORT_CALL mpi_register_datarep__( char * FORT_MIXED_LEN_DECL, MPI_Datarep_conversion_function*, MPI_Datarep_conversion_function*, MPI_Datarep_extent_function*, void*, MPI_Fint * FORT_END_LEN_DECL );

#pragma weak mpi_register_datarep__ = pmpi_register_datarep__
#elif !defined(F77_NAME_LOWER_USCORE)
extern FORT_DLL_SPEC void FORT_CALL mpi_register_datarep( char * FORT_MIXED_LEN_DECL, MPI_Datarep_conversion_function*, MPI_Datarep_conversion_function*, MPI_Datarep_extent_function*, void*, MPI_Fint * FORT_END_LEN_DECL );

#pragma weak mpi_register_datarep = pmpi_register_datarep
#else
extern FORT_DLL_SPEC void FORT_CALL mpi_register_datarep_( char * FORT_MIXED_LEN_DECL, MPI_Datarep_conversion_function*, MPI_Datarep_conversion_function*, MPI_Datarep_extent_function*, void*, MPI_Fint * FORT_END_LEN_DECL );

#pragma weak mpi_register_datarep_ = pmpi_register_datarep_
#endif

#elif defined(HAVE_PRAGMA_HP_SEC_DEF)
#if defined(F77_NAME_UPPER)
#pragma _HP_SECONDARY_DEF PMPI_REGISTER_DATAREP  MPI_REGISTER_DATAREP
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma _HP_SECONDARY_DEF pmpi_register_datarep__  mpi_register_datarep__
#elif !defined(F77_NAME_LOWER_USCORE)
#pragma _HP_SECONDARY_DEF pmpi_register_datarep  mpi_register_datarep
#else
#pragma _HP_SECONDARY_DEF pmpi_register_datarep_  mpi_register_datarep_
#endif

#elif defined(HAVE_PRAGMA_CRI_DUP)
#if defined(F77_NAME_UPPER)
#pragma _CRI duplicate MPI_REGISTER_DATAREP as PMPI_REGISTER_DATAREP
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma _CRI duplicate mpi_register_datarep__ as pmpi_register_datarep__
#elif !defined(F77_NAME_LOWER_USCORE)
#pragma _CRI duplicate mpi_register_datarep as pmpi_register_datarep
#else
#pragma _CRI duplicate mpi_register_datarep_ as pmpi_register_datarep_
#endif
#endif /* HAVE_PRAGMA_WEAK */
#endif /* USE_WEAK_SYMBOLS */
/* End MPI profiling block */


/* These definitions are used only for generating the Fortran wrappers */
#if defined(USE_WEAK_SYBMOLS) && defined(HAVE_MULTIPLE_PRAGMA_WEAK) && \
    defined(USE_ONLY_MPI_NAMES)
extern FORT_DLL_SPEC void FORT_CALL MPI_REGISTER_DATAREP( char * FORT_MIXED_LEN_DECL, MPI_Datarep_conversion_function*, MPI_Datarep_conversion_function*, MPI_Datarep_extent_function*, void*, MPI_Fint * FORT_END_LEN_DECL );
extern FORT_DLL_SPEC void FORT_CALL mpi_register_datarep__( char * FORT_MIXED_LEN_DECL, MPI_Datarep_conversion_function*, MPI_Datarep_conversion_function*, MPI_Datarep_extent_function*, void*, MPI_Fint * FORT_END_LEN_DECL );
extern FORT_DLL_SPEC void FORT_CALL mpi_register_datarep( char * FORT_MIXED_LEN_DECL, MPI_Datarep_conversion_function*, MPI_Datarep_conversion_function*, MPI_Datarep_extent_function*, void*, MPI_Fint * FORT_END_LEN_DECL );
extern FORT_DLL_SPEC void FORT_CALL mpi_register_datarep_( char * FORT_MIXED_LEN_DECL, MPI_Datarep_conversion_function*, MPI_Datarep_conversion_function*, MPI_Datarep_extent_function*, void*, MPI_Fint * FORT_END_LEN_DECL );

#pragma weak MPI_REGISTER_DATAREP = mpi_register_datarep__
#pragma weak mpi_register_datarep_ = mpi_register_datarep__
#pragma weak mpi_register_datarep = mpi_register_datarep__
#endif

/* Map the name to the correct form */
#ifndef MPICH_MPI_FROM_PMPI
#ifdef F77_NAME_UPPER
#define mpi_register_datarep_ PMPI_REGISTER_DATAREP
#elif defined(F77_NAME_LOWER_2USCORE)
#define mpi_register_datarep_ pmpi_register_datarep__
#elif !defined(F77_NAME_LOWER_USCORE)
#define mpi_register_datarep_ pmpi_register_datarep
#else
#define mpi_register_datarep_ pmpi_register_datarep_
#endif
/* This defines the routine that we call, which must be the PMPI version
   since we're renaming the Fortran entry as the pmpi version.  The MPI name
   must be undefined first to prevent any conflicts with previous renamings,
   such as those put in place by the globus device when it is building on
   top of a vendor MPI. */
#undef MPI_Register_datarep
#define MPI_Register_datarep PMPI_Register_datarep 

#else

#ifdef F77_NAME_UPPER
#define mpi_register_datarep_ MPI_REGISTER_DATAREP
#elif defined(F77_NAME_LOWER_2USCORE)
#define mpi_register_datarep_ mpi_register_datarep__
#elif !defined(F77_NAME_LOWER_USCORE)
#define mpi_register_datarep_ mpi_register_datarep
/* Else leave name alone */
#endif


#endif /* MPICH_MPI_FROM_PMPI */

/* Prototypes for the Fortran interfaces */
#include "fproto.h"

#ifdef F77_NAME_UPPER
#define mpi_conversion_fn_null_ MPI_CONVERSION_FN_NULL
#elif defined(F77_NAME_LOWER_2USCORE)
#define mpi_conversion_fn_null_ mpi_conversion_fn_null__
#elif !defined(F77_NAME_LOWER_USCORE)
#define mpi_conversion_fn_null_ mpi_conversion_fn_null
/* Else leave name alone */
#endif

/* Add the prototype so the routine knows what this is */
extern FORT_DLL_SPEC int FORT_CALL mpi_conversion_fn_null_ ( void*v1, MPI_Fint*v2, MPI_Fint*v3, void*v4, MPI_Offset*v5, MPI_Fint *v6, MPI_Fint*v7, MPI_Fint *ierr );


#ifndef MPICH_MPI_FROM_PMPI
/* This isn't a callable function */
FORT_DLL_SPEC int FORT_CALL mpi_conversion_fn_null_ ( void*v1, MPI_Fint*v2, MPI_Fint*v3, void*v4, MPI_Offset*v5, MPI_Fint *v6, MPI_Fint*v7, MPI_Fint *ierr ) {
    return 0;
}
#endif
FORT_DLL_SPEC void FORT_CALL mpi_register_datarep_ ( char *v1 FORT_MIXED_LEN(d1), MPI_Datarep_conversion_function*v2, MPI_Datarep_conversion_function*v3, MPI_Datarep_extent_function*v4, void*v5, MPI_Fint *ierr FORT_END_LEN(d1) ){
#ifdef MPI_MODE_RDONLY
    char *p1;

    {char *p = v1 + d1 - 1;
     int  li;
        while (*p == ' ' && p > v1) p--;
        p++;
        p1 = (char *)MPIU_Malloc( p-v1 + 1 );
        for (li=0; li<(p-v1); li++) { p1[li] = v1[li]; }
        p1[li] = 0; 
    }

    if (v2 == (MPI_Datarep_conversion_function *)mpi_conversion_fn_null_){
         v2 = 0;
    }

    if (v3 == (MPI_Datarep_conversion_function *)mpi_conversion_fn_null_){
         v3 = 0;
    }
    *ierr = MPI_Register_datarep( p1, v2, v3, v4, v5 );
    MPIU_Free( p1 );
#else
*ierr = MPI_ERR_INTERN;
#endif
}
