OpenMPI  0.1.1
datarep.h File Reference

This file does two things: More...

#include "ompi_config.h"
#include "mpi.h"

Go to the source code of this file.

Macros

#define OMPI_DATAREP_FORTRAN_DECLARE(lower_name, upper_name, args)
 Macro for declaring each of the 5 back-end Fortran functions for MPI_CONVERSION_FN_NULL. More...
 
#define OMPI_IS_FORTRAN_CONVERSION_FN_NULL(addr)   (mpi_conversion_fn_null__ == addr)
 Declare the test macro in all of its forms. More...
 

Typedefs

typedef void( ompi_mpi2_fortran_datarep_extent_fn_t )(MPI_Fint *datatype, MPI_Aint *extent, MPI_Aint *extra_state, MPI_Fint *ierr)
 Function typedef for the extent function pointer in MPI_REGISTER_DATAREP.
 

Functions

BEGIN_C_DECLS typedef void() ompi_mpi2_fortran_datarep_conversion_fn_t (char *userbuf, MPI_Fint *datatype, MPI_Fint *count, char *filebuf, MPI_Offset *position, MPI_Aint *extra_state, MPI_Fint *ierr)
 Function typedef for the conversion function pointer in MPI_REGISTER_DATAREP.
 

Detailed Description

This file does two things:

  1. Provides typedef for the Fortran versions of the callbacks registered by MPI_REGISTER_DATAREP. These typedefs are needed for the Fortran MPI API.
  2. Provides the sentinel value functions/function pointers for Fortran's version of MPI_CONVERSION_FN_NULL, and some helpful macros for testing whether an argument passed to a Fortran MPI API function is that sentinel value or not.

Macro Definition Documentation

#define OMPI_DATAREP_FORTRAN_DECLARE (   lower_name,
  upper_name,
  args 
)
Value:
OMPI_DECLSPEC void lower_name##_f args; \
OMPI_DECLSPEC void lower_name args; \
OMPI_DECLSPEC void lower_name##_ args; \
OMPI_DECLSPEC void lower_name##__ args; \
OMPI_DECLSPEC void upper_name args;

Macro for declaring each of the 5 back-end Fortran functions for MPI_CONVERSION_FN_NULL.

We need the 4 fortran compiler convetions and 1 for the "real" back-end function (even though these functions are never invoked – they're only used as sentinel values – it's simpler to use the same kind of code structure that we use for the Fortran MPI API bindings and other callback functions).

#define OMPI_IS_FORTRAN_CONVERSION_FN_NULL (   addr)    (mpi_conversion_fn_null__ == addr)

Declare the test macro in all of its forms.

This macro provides a convenient way to check whether an argument is the sentinel value MPI_CONVERSION_FN_NULL.