# MPI_Register_datarep

Register functions for user-defined data representations

## Synopsis

    int MPI_Register_datarep(ROMIO_CONST char *datarep,
                             MPI_Datarep_conversion_function * read_conversion_fn,
                             MPI_Datarep_conversion_function * write_conversion_fn,
                             MPI_Datarep_extent_function * dtype_file_extent_fn, void *extra_state)

## Input Parameters

datarep
  data representation name (string)
read_conversion_fn
  function invoked to convert from file representation to native representation (function)
write_conversion_fn
  function invoked to convert from native representation to file representation (function)
dtype_file_extent_fn
  function invoked to get the exted of a datatype as represented in the file (function)
extra_state
  pointer to extra state that is passed to each of the three functions

## Notes

This function allows the user to provide routines to convert data from an external representation, used within a file, and the native representation, used within the CPU. There is one predefined data representation, `external32`. Please consult the MPI-2 standard for details on this function.

## Notes for Fortran

All MPI routines in Fortran (except for `MPI_WTIME` and `MPI_WTICK`) have an additional argument `ierr` at the end of the argument list. `ierr` is an integer and has the same meaning as the return value of the routine in C. In Fortran, MPI routines are subroutines, and are invoked with the `call` statement.

All MPI objects (e.g., `MPI_Datatype`, `MPI_Comm`) are of type `INTEGER` in Fortran.