SYNTAX
------

C Syntax
^^^^^^^^

.. code-block:: c

    int MPI_Register_datarep(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)

    int MPI_Register_datarep_c(const char* datarep,
        MPI_Datarep_conversion_function_c* read_conversion_fn,
        MPI_Datarep_conversion_function_c* write_conversion_fn,
        MPI_Datarep_extent_function* dtype_file_extent_fn, void*
        extra_state)

Fortran Syntax
^^^^^^^^^^^^^^

.. code-block:: fortran

    USE MPI
    ! or the older form: INCLUDE 'mpif.h'
    MPI_REGISTER_DATAREP(DATAREP, READ_CONVERSION_FN, WRITE_CONVERSION_FN, DTYPE_FILE_EXTENT_FN, EXTRA_STATE, IERROR)
    	CHARACTER*(*) DATAREP
    	EXTERNAL READ_CONVERSION_FN, WRITE_CONVERSION_FN, DTYPE_FILE_EXTENT_FN
    	INTEGER(KIND=MPI_ADDRESS_KIND) EXTRA_STATE
    	INTEGER IERROR

Fortran 2008 Syntax
^^^^^^^^^^^^^^^^^^^

.. code-block:: fortran

    USE mpi_f08
    MPI_Register_datarep(datarep, read_conversion_fn, write_conversion_fn, dtype_file_extent_fn, extra_state, ierror)
    	CHARACTER(LEN=*), INTENT(IN) :: datarep
    	PROCEDURE(MPI_Datarep_conversion_function) :: read_conversion_fn, write_conversion_fn
    	PROCEDURE(MPI_Datarep_extent_function) :: dtype_file_extent_fn
    	INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
    	INTEGER, OPTIONAL, INTENT(OUT) :: ierror

    MPI_Register_datarep_c(datarep, read_conversion_fn, write_conversion_fn, dtype_file_extent_fn, extra_state, ierror)
    	CHARACTER(LEN=*), INTENT(IN) :: datarep
    	PROCEDURE(MPI_Datarep_conversion_function_c) :: read_conversion_fn, write_conversion_fn
    	PROCEDURE(MPI_Datarep_extent_function) :: dtype_file_extent_fn
    	INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
    	INTEGER, OPTIONAL, INTENT(OUT) :: ierror
