/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
/*
* (C) 2001 by Argonne National Laboratory.
* See COPYRIGHT in top-level directory.
*
* Portions of this code were written by Microsoft. Those portions are
* Copyright (c) 2007 Microsoft Corporation. Microsoft grants
* permission to use, reproduce, prepare derivative works, and to
* redistribute to others. The code is licensed "as is." The User
* bears the risk of using it. Microsoft gives no express warranties,
* guarantees or conditions. To the extent permitted by law, Microsoft
* excludes the implied warranties of merchantability, fitness for a
* particular purpose and non-infringement.
*/
#ifndef MPI_LANG_H_INCLUDED
#define MPI_LANG_H_INCLUDED
#include "mpi_attr.h"
#if defined(__cplusplus)
extern "C" {
#endif
/*E
Language bindings for MPI
A few operations in MPI need to know how to marshal the callback into the calling
lanuage calling convention. The marshaling code is provided by a thunk layer which
implements the correct behavior. Examples of these callback functions are the
keyval attribute copy and delete functions.
Module:
Attribute-DS
E*/
/*
* Support bindings for Attribute copy/del callbacks
* Consolidate Comm/Type/Win attribute functions together as the handle type is the same
* use MPI_Comm for the prototypes
*/
typedef
int
(MPID_Attr_copy_proxy)(
MPI_Comm_copy_attr_function* user_function,
int handle,
int keyval,
void* extra_state,
MPIR_AttrType attrib_type,
void* attrib,
void** attrib_copy,
int* flag
);
typedef
int
(MPID_Attr_delete_proxy)(
MPI_Comm_delete_attr_function* user_function,
int handle,
int keyval,
MPIR_AttrType attrib_type,
void* attrib,
void* extra_state
);
void
MPIR_Keyval_set_proxy(
int keyval,
MPID_Attr_copy_proxy copy_proxy,
MPID_Attr_delete_proxy delete_proxy
);
#if defined(__cplusplus)
}
#endif
#endif /* MPI_LANG_H_INCLUDED */