-:    0:Source:/home/MPI/testing/mpich2/mpich2/src/binding/f77/winnewkeyf.c
        -:    0:Graph:winnewkeyf.gcno
        -:    0:Data:winnewkeyf.gcda
        -:    0:Runs:2
        -:    0:Programs:2
        -:    1:/* -*- Mode: C; c-basic-offset:4 ; -*- */
        -:    2:/*  
        -:    3: *  (C) 2001 by Argonne National Laboratory.
        -:    4: *      See COPYRIGHT in top-level directory.
        -:    5: *
        -:    6: * This file is automatically generated by buildiface 
        -:    7: * DO NOT EDIT
        -:    8: */
        -:    9:#include "mpi_fortimpl.h"
        -:   10:
        -:   11:
        -:   12:/* Begin MPI profiling block */
        -:   13:#if defined(USE_WEAK_SYMBOLS) && !defined(USE_ONLY_MPI_NAMES) 
        -:   14:#if defined(HAVE_MULTIPLE_PRAGMA_WEAK)
        -:   15:extern FORT_DLL_SPEC void FORT_CALL MPI_WIN_CREATE_KEYVAL( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:   16:extern FORT_DLL_SPEC void FORT_CALL mpi_win_create_keyval__( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:   17:extern FORT_DLL_SPEC void FORT_CALL mpi_win_create_keyval( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:   18:extern FORT_DLL_SPEC void FORT_CALL mpi_win_create_keyval_( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:   19:
        -:   20:#if defined(F77_NAME_UPPER)
        -:   21:#pragma weak MPI_WIN_CREATE_KEYVAL = PMPI_WIN_CREATE_KEYVAL
        -:   22:#pragma weak mpi_win_create_keyval__ = PMPI_WIN_CREATE_KEYVAL
        -:   23:#pragma weak mpi_win_create_keyval_ = PMPI_WIN_CREATE_KEYVAL
        -:   24:#pragma weak mpi_win_create_keyval = PMPI_WIN_CREATE_KEYVAL
        -:   25:#elif defined(F77_NAME_LOWER_2USCORE)
        -:   26:#pragma weak MPI_WIN_CREATE_KEYVAL = pmpi_win_create_keyval__
        -:   27:#pragma weak mpi_win_create_keyval__ = pmpi_win_create_keyval__
        -:   28:#pragma weak mpi_win_create_keyval_ = pmpi_win_create_keyval__
        -:   29:#pragma weak mpi_win_create_keyval = pmpi_win_create_keyval__
        -:   30:#elif defined(F77_NAME_LOWER_USCORE)
        -:   31:#pragma weak MPI_WIN_CREATE_KEYVAL = pmpi_win_create_keyval_
        -:   32:#pragma weak mpi_win_create_keyval__ = pmpi_win_create_keyval_
        -:   33:#pragma weak mpi_win_create_keyval_ = pmpi_win_create_keyval_
        -:   34:#pragma weak mpi_win_create_keyval = pmpi_win_create_keyval_
        -:   35:#else
        -:   36:#pragma weak MPI_WIN_CREATE_KEYVAL = pmpi_win_create_keyval
        -:   37:#pragma weak mpi_win_create_keyval__ = pmpi_win_create_keyval
        -:   38:#pragma weak mpi_win_create_keyval_ = pmpi_win_create_keyval
        -:   39:#pragma weak mpi_win_create_keyval = pmpi_win_create_keyval
        -:   40:#endif
        -:   41:
        -:   42:
        -:   43:
        -:   44:#elif defined(HAVE_PRAGMA_WEAK)
        -:   45:
        -:   46:#if defined(F77_NAME_UPPER)
        -:   47:extern FORT_DLL_SPEC void FORT_CALL MPI_WIN_CREATE_KEYVAL( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:   48:
        -:   49:#pragma weak MPI_WIN_CREATE_KEYVAL = PMPI_WIN_CREATE_KEYVAL
        -:   50:#elif defined(F77_NAME_LOWER_2USCORE)
        -:   51:extern FORT_DLL_SPEC void FORT_CALL mpi_win_create_keyval__( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:   52:
        -:   53:#pragma weak mpi_win_create_keyval__ = pmpi_win_create_keyval__
        -:   54:#elif !defined(F77_NAME_LOWER_USCORE)
        -:   55:extern FORT_DLL_SPEC void FORT_CALL mpi_win_create_keyval( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:   56:
        -:   57:#pragma weak mpi_win_create_keyval = pmpi_win_create_keyval
        -:   58:#else
        -:   59:extern FORT_DLL_SPEC void FORT_CALL mpi_win_create_keyval_( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:   60:
        -:   61:#pragma weak mpi_win_create_keyval_ = pmpi_win_create_keyval_
        -:   62:#endif
        -:   63:
        -:   64:#elif defined(HAVE_PRAGMA_HP_SEC_DEF)
        -:   65:#if defined(F77_NAME_UPPER)
        -:   66:#pragma _HP_SECONDARY_DEF PMPI_WIN_CREATE_KEYVAL  MPI_WIN_CREATE_KEYVAL
        -:   67:#elif defined(F77_NAME_LOWER_2USCORE)
        -:   68:#pragma _HP_SECONDARY_DEF pmpi_win_create_keyval__  mpi_win_create_keyval__
        -:   69:#elif !defined(F77_NAME_LOWER_USCORE)
        -:   70:#pragma _HP_SECONDARY_DEF pmpi_win_create_keyval  mpi_win_create_keyval
        -:   71:#else
        -:   72:#pragma _HP_SECONDARY_DEF pmpi_win_create_keyval_  mpi_win_create_keyval_
        -:   73:#endif
        -:   74:
        -:   75:#elif defined(HAVE_PRAGMA_CRI_DUP)
        -:   76:#if defined(F77_NAME_UPPER)
        -:   77:#pragma _CRI duplicate MPI_WIN_CREATE_KEYVAL as PMPI_WIN_CREATE_KEYVAL
        -:   78:#elif defined(F77_NAME_LOWER_2USCORE)
        -:   79:#pragma _CRI duplicate mpi_win_create_keyval__ as pmpi_win_create_keyval__
        -:   80:#elif !defined(F77_NAME_LOWER_USCORE)
        -:   81:#pragma _CRI duplicate mpi_win_create_keyval as pmpi_win_create_keyval
        -:   82:#else
        -:   83:#pragma _CRI duplicate mpi_win_create_keyval_ as pmpi_win_create_keyval_
        -:   84:#endif
        -:   85:#endif /* HAVE_PRAGMA_WEAK */
        -:   86:#endif /* USE_WEAK_SYMBOLS */
        -:   87:/* End MPI profiling block */
        -:   88:
        -:   89:
        -:   90:/* These definitions are used only for generating the Fortran wrappers */
        -:   91:#if defined(USE_WEAK_SYMBOLS) && defined(HAVE_MULTIPLE_PRAGMA_WEAK) && \
        -:   92:    defined(USE_ONLY_MPI_NAMES)
        -:   93:extern FORT_DLL_SPEC void FORT_CALL MPI_WIN_CREATE_KEYVAL( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:   94:extern FORT_DLL_SPEC void FORT_CALL mpi_win_create_keyval__( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:   95:extern FORT_DLL_SPEC void FORT_CALL mpi_win_create_keyval( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:   96:extern FORT_DLL_SPEC void FORT_CALL mpi_win_create_keyval_( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:   97:
        -:   98:#if defined(F77_NAME_UPPER)
        -:   99:#pragma weak mpi_win_create_keyval__ = MPI_WIN_CREATE_KEYVAL
        -:  100:#pragma weak mpi_win_create_keyval_ = MPI_WIN_CREATE_KEYVAL
        -:  101:#pragma weak mpi_win_create_keyval = MPI_WIN_CREATE_KEYVAL
        -:  102:#elif defined(F77_NAME_LOWER_2USCORE)
        -:  103:#pragma weak MPI_WIN_CREATE_KEYVAL = mpi_win_create_keyval__
        -:  104:#pragma weak mpi_win_create_keyval_ = mpi_win_create_keyval__
        -:  105:#pragma weak mpi_win_create_keyval = mpi_win_create_keyval__
        -:  106:#elif defined(F77_NAME_LOWER_USCORE)
        -:  107:#pragma weak MPI_WIN_CREATE_KEYVAL = mpi_win_create_keyval_
        -:  108:#pragma weak mpi_win_create_keyval__ = mpi_win_create_keyval_
        -:  109:#pragma weak mpi_win_create_keyval = mpi_win_create_keyval_
        -:  110:#else
        -:  111:#pragma weak MPI_WIN_CREATE_KEYVAL = mpi_win_create_keyval
        -:  112:#pragma weak mpi_win_create_keyval__ = mpi_win_create_keyval
        -:  113:#pragma weak mpi_win_create_keyval_ = mpi_win_create_keyval
        -:  114:#endif
        -:  115:
        -:  116:#endif
        -:  117:
        -:  118:/* Map the name to the correct form */
        -:  119:#ifndef MPICH_MPI_FROM_PMPI
        -:  120:#if defined(USE_WEAK_SYMBOLS) && defined(HAVE_MULTIPLE_PRAGMA_WEAK)
        -:  121:/* Define the weak versions of the PMPI routine*/
        -:  122:#ifndef F77_NAME_UPPER
        -:  123:extern FORT_DLL_SPEC void FORT_CALL PMPI_WIN_CREATE_KEYVAL( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:  124:#endif
        -:  125:#ifndef F77_NAME_LOWER_2USCORE
        -:  126:extern FORT_DLL_SPEC void FORT_CALL pmpi_win_create_keyval__( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:  127:#endif
        -:  128:#ifndef F77_NAME_LOWER_USCORE
        -:  129:extern FORT_DLL_SPEC void FORT_CALL pmpi_win_create_keyval_( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:  130:#endif
        -:  131:#ifndef F77_NAME_LOWER
        -:  132:extern FORT_DLL_SPEC void FORT_CALL pmpi_win_create_keyval( MPI_Win_copy_attr_function*, MPI_Win_delete_attr_function*, MPI_Fint *, void*, MPI_Fint * );
        -:  133:
        -:  134:#endif
        -:  135:
        -:  136:#if defined(F77_NAME_UPPER)
        -:  137:#pragma weak pmpi_win_create_keyval__ = PMPI_WIN_CREATE_KEYVAL
        -:  138:#pragma weak pmpi_win_create_keyval_ = PMPI_WIN_CREATE_KEYVAL
        -:  139:#pragma weak pmpi_win_create_keyval = PMPI_WIN_CREATE_KEYVAL
        -:  140:#elif defined(F77_NAME_LOWER_2USCORE)
        -:  141:#pragma weak PMPI_WIN_CREATE_KEYVAL = pmpi_win_create_keyval__
        -:  142:#pragma weak pmpi_win_create_keyval_ = pmpi_win_create_keyval__
        -:  143:#pragma weak pmpi_win_create_keyval = pmpi_win_create_keyval__
        -:  144:#elif defined(F77_NAME_LOWER_USCORE)
        -:  145:#pragma weak PMPI_WIN_CREATE_KEYVAL = pmpi_win_create_keyval_
        -:  146:#pragma weak pmpi_win_create_keyval__ = pmpi_win_create_keyval_
        -:  147:#pragma weak pmpi_win_create_keyval = pmpi_win_create_keyval_
        -:  148:#else
        -:  149:#pragma weak PMPI_WIN_CREATE_KEYVAL = pmpi_win_create_keyval
        -:  150:#pragma weak pmpi_win_create_keyval__ = pmpi_win_create_keyval
        -:  151:#pragma weak pmpi_win_create_keyval_ = pmpi_win_create_keyval
        -:  152:#endif /* Test on name mapping */
        -:  153:#endif /* Use multiple pragma weak */
        -:  154:
        -:  155:#ifdef F77_NAME_UPPER
        -:  156:#define mpi_win_create_keyval_ PMPI_WIN_CREATE_KEYVAL
        -:  157:#elif defined(F77_NAME_LOWER_2USCORE)
        -:  158:#define mpi_win_create_keyval_ pmpi_win_create_keyval__
        -:  159:#elif !defined(F77_NAME_LOWER_USCORE)
        -:  160:#define mpi_win_create_keyval_ pmpi_win_create_keyval
        -:  161:#else
        -:  162:#define mpi_win_create_keyval_ pmpi_win_create_keyval_
        -:  163:#endif /* Test on name mapping */
        -:  164:
        -:  165:/* This defines the routine that we call, which must be the PMPI version
        -:  166:   since we're renaming the Fortran entry as the pmpi version.  The MPI name
        -:  167:   must be undefined first to prevent any conflicts with previous renamings,
        -:  168:   such as those put in place by the globus device when it is building on
        -:  169:   top of a vendor MPI. */
        -:  170:#undef MPI_Win_create_keyval
        -:  171:#define MPI_Win_create_keyval PMPI_Win_create_keyval 
        -:  172:
        -:  173:#else
        -:  174:
        -:  175:#ifdef F77_NAME_UPPER
        -:  176:#define mpi_win_create_keyval_ MPI_WIN_CREATE_KEYVAL
        -:  177:#elif defined(F77_NAME_LOWER_2USCORE)
        -:  178:#define mpi_win_create_keyval_ mpi_win_create_keyval__
        -:  179:#elif !defined(F77_NAME_LOWER_USCORE)
        -:  180:#define mpi_win_create_keyval_ mpi_win_create_keyval
        -:  181:/* Else leave name alone */
        -:  182:#endif
        -:  183:
        -:  184:
        -:  185:#endif /* MPICH_MPI_FROM_PMPI */
        -:  186:
        -:  187:/* Prototypes for the Fortran interfaces */
        -:  188:#include "fproto.h"
        -:  189:
        -:  190:
        -:  191:/* The F90 attr copy function prototype and calling convention */
        -:  192:typedef void (FORT_CALL F90_CopyFunction) (MPI_Fint *, MPI_Fint *, MPI_Aint *, MPI_Aint *,MPI_Aint *, MPI_Fint *, MPI_Fint *);
        -:  193:
        -:  194:/* Helper proxy function to thunk the attr copy function call into F90 calling convention */
        -:  195:static
        -:  196:int
        -:  197:MPIR_Win_copy_attr_f90_proxy(
        -:  198:    MPI_Win_copy_attr_function* user_function,
        -:  199:    MPI_Win win,
        -:  200:    int keyval,
        -:  201:    void* extra_state,
        -:  202:    MPIR_AttrType value_type,
        -:  203:    void* value,
        -:  204:    void** new_value,
        -:  205:    int* flag
        -:  206:    )
    #####:  207:{
    #####:  208:    MPI_Fint ierr = 0;
    #####:  209:    MPI_Fint fhandle = (MPI_Fint)win;
    #####:  210:    MPI_Fint fkeyval = (MPI_Fint)keyval;
    #####:  211:    MPI_Aint fvalue = MPI_VOID_PTR_CAST_TO_MPI_AINT (value);
    #####:  212:    MPI_Aint* fextra  = (MPI_Aint*)extra_state;
    #####:  213:    MPI_Aint fnew = 0;
    #####:  214:    MPI_Fint fflag = 0;
        -:  215:
    #####:  216:    ((F90_CopyFunction*)user_function)( &fhandle, &fkeyval, fextra, &fvalue, &fnew, &fflag, &ierr );
        -:  217:
    #####:  218:    *flag = fflag;
    #####:  219:    *new_value = MPI_AINT_CAST_TO_VOID_PTR (fnew);
    #####:  220:    return ierr;
        -:  221:}
        -:  222:
        -:  223:
        -:  224:/* The F90 attr delete function prototype and calling convention */
        -:  225:typedef void (FORT_CALL F90_DeleteFunction) (MPI_Fint *, MPI_Fint *, MPI_Aint *, MPI_Aint *, MPI_Fint *);
        -:  226:
        -:  227:/* Helper proxy function to thunk the attr delete function call into F77 calling convention */
        -:  228:static
        -:  229:int
        -:  230:MPIR_Win_delete_attr_f90_proxy(
        -:  231:    MPI_Win_delete_attr_function* user_function,
        -:  232:    MPI_Win win,
        -:  233:    int keyval,
        -:  234:    MPIR_AttrType value_type,
        -:  235:    void* value,
        -:  236:    void* extra_state
        -:  237:    )
        6:  238:{
        6:  239:    MPI_Fint ierr = 0;
        6:  240:    MPI_Fint fhandle = (MPI_Fint)win;
        6:  241:    MPI_Fint fkeyval = (MPI_Fint)keyval;
        6:  242:    MPI_Aint fvalue = MPI_VOID_PTR_CAST_TO_MPI_AINT (value);
        6:  243:    MPI_Aint* fextra  = (MPI_Aint*)extra_state;
        -:  244:
        6:  245:    ((F90_DeleteFunction*)user_function)( &fhandle, &fkeyval, &fvalue, fextra, &ierr );
        6:  246:    return ierr;
        -:  247:}
        2:  248:FORT_DLL_SPEC void FORT_CALL mpi_win_create_keyval_ ( MPI_Win_copy_attr_function*v1, MPI_Win_delete_attr_function*v2, MPI_Fint *v3, void*v4, MPI_Fint *ierr ){
        2:  249:    *ierr = MPI_Win_create_keyval( v1, v2, v3, v4 );
        -:  250:
        2:  251:    if (*ierr == MPI_SUCCESS) {
        2:  252:         MPIR_Keyval_set_proxy( *v3, MPIR_Win_copy_attr_f90_proxy, MPIR_Win_delete_attr_f90_proxy );
        -:  253:    }
        2:  254:}