\hypertarget{datarep_8h}{\section{ompi/mpi/f77/datarep.h File Reference}
\label{datarep_8h}\index{ompi/mpi/f77/datarep.\+h@{ompi/mpi/f77/datarep.\+h}}
}


This file does two things\+:  


{\ttfamily \#include \char`\"{}ompi\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}mpi.\+h\char`\"{}}\\*
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{datarep_8h_a405be540548d698dee0944e6af3e69dd}{O\+M\+P\+I\+\_\+\+D\+A\+T\+A\+R\+E\+P\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+D\+E\+C\+L\+A\+R\+E}(lower\+\_\+name, upper\+\_\+name, args)
\begin{DoxyCompactList}\small\item\em Macro for declaring each of the 5 back-\/end Fortran functions for M\+P\+I\+\_\+\+C\+O\+N\+V\+E\+R\+S\+I\+O\+N\+\_\+\+F\+N\+\_\+\+N\+U\+L\+L. \end{DoxyCompactList}\item 
\#define \hyperlink{datarep_8h_aa8d1059c19593b98fc0fb2e33f097d01}{O\+M\+P\+I\+\_\+\+I\+S\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+C\+O\+N\+V\+E\+R\+S\+I\+O\+N\+\_\+\+F\+N\+\_\+\+N\+U\+L\+L}(addr)~(mpi\+\_\+conversion\+\_\+fn\+\_\+null\+\_\+\+\_\+ == addr)
\begin{DoxyCompactList}\small\item\em Declare the test macro in all of its forms. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{datarep_8h_a73034c86e1ffa3cadef0f791a0537e59}{typedef void( \hyperlink{datarep_8h_a73034c86e1ffa3cadef0f791a0537e59}{ompi\+\_\+mpi2\+\_\+fortran\+\_\+datarep\+\_\+extent\+\_\+fn\+\_\+t} )(M\+P\+I\+\_\+\+Fint $\ast$datatype, M\+P\+I\+\_\+\+Aint $\ast$extent, M\+P\+I\+\_\+\+Aint $\ast$extra\+\_\+state, M\+P\+I\+\_\+\+Fint $\ast$ierr)}\label{datarep_8h_a73034c86e1ffa3cadef0f791a0537e59}

\begin{DoxyCompactList}\small\item\em \hyperlink{structFunction}{Function} typedef for the extent function pointer in M\+P\+I\+\_\+\+R\+E\+G\+I\+S\+T\+E\+R\+\_\+\+D\+A\+T\+A\+R\+E\+P. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{datarep_8h_abdd46256621c6007f9bf51e28a46c97c}{B\+E\+G\+I\+N\+\_\+\+C\+\_\+\+D\+E\+C\+L\+S typedef void() \hyperlink{datarep_8h_abdd46256621c6007f9bf51e28a46c97c}{ompi\+\_\+mpi2\+\_\+fortran\+\_\+datarep\+\_\+conversion\+\_\+fn\+\_\+t} (char $\ast$userbuf, M\+P\+I\+\_\+\+Fint $\ast$datatype, M\+P\+I\+\_\+\+Fint $\ast$count, char $\ast$filebuf, M\+P\+I\+\_\+\+Offset $\ast$position, M\+P\+I\+\_\+\+Aint $\ast$extra\+\_\+state, M\+P\+I\+\_\+\+Fint $\ast$ierr)}\label{datarep_8h_abdd46256621c6007f9bf51e28a46c97c}

\begin{DoxyCompactList}\small\item\em \hyperlink{structFunction}{Function} typedef for the conversion function pointer in M\+P\+I\+\_\+\+R\+E\+G\+I\+S\+T\+E\+R\+\_\+\+D\+A\+T\+A\+R\+E\+P. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
This file does two things\+: 


\begin{DoxyEnumerate}
\item Provides typedef for the Fortran versions of the callbacks registered by M\+P\+I\+\_\+\+R\+E\+G\+I\+S\+T\+E\+R\+\_\+\+D\+A\+T\+A\+R\+E\+P. These typedefs are needed for the Fortran M\+P\+I A\+P\+I.
\item Provides the sentinel value functions/function pointers for Fortran's version of M\+P\+I\+\_\+\+C\+O\+N\+V\+E\+R\+S\+I\+O\+N\+\_\+\+F\+N\+\_\+\+N\+U\+L\+L, and some helpful macros for testing whether an argument passed to a Fortran M\+P\+I A\+P\+I function is that sentinel value or not. 
\end{DoxyEnumerate}

\subsection{Macro Definition Documentation}
\hypertarget{datarep_8h_a405be540548d698dee0944e6af3e69dd}{\index{datarep.\+h@{datarep.\+h}!O\+M\+P\+I\+\_\+\+D\+A\+T\+A\+R\+E\+P\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+D\+E\+C\+L\+A\+R\+E@{O\+M\+P\+I\+\_\+\+D\+A\+T\+A\+R\+E\+P\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+D\+E\+C\+L\+A\+R\+E}}
\index{O\+M\+P\+I\+\_\+\+D\+A\+T\+A\+R\+E\+P\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+D\+E\+C\+L\+A\+R\+E@{O\+M\+P\+I\+\_\+\+D\+A\+T\+A\+R\+E\+P\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+D\+E\+C\+L\+A\+R\+E}!datarep.\+h@{datarep.\+h}}
\subsubsection[{O\+M\+P\+I\+\_\+\+D\+A\+T\+A\+R\+E\+P\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+D\+E\+C\+L\+A\+R\+E}]{\setlength{\rightskip}{0pt plus 5cm}\#define O\+M\+P\+I\+\_\+\+D\+A\+T\+A\+R\+E\+P\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+D\+E\+C\+L\+A\+R\+E(
\begin{DoxyParamCaption}
\item[{}]{lower\+\_\+name, }
\item[{}]{upper\+\_\+name, }
\item[{}]{args}
\end{DoxyParamCaption}
)}}\label{datarep_8h_a405be540548d698dee0944e6af3e69dd}
{\bfseries Value\+:}
\begin{DoxyCode}
OMPI\_DECLSPEC \textcolor{keywordtype}{void} lower\_name##\_f args;    \(\backslash\)
  OMPI\_DECLSPEC \textcolor{keywordtype}{void} lower\_name args;        \(\backslash\)
  OMPI\_DECLSPEC \textcolor{keywordtype}{void} lower\_name##\_ args;     \(\backslash\)
  OMPI\_DECLSPEC \textcolor{keywordtype}{void} lower\_name##\_\_ args;    \(\backslash\)
  OMPI\_DECLSPEC \textcolor{keywordtype}{void} upper\_name args;
\end{DoxyCode}


Macro for declaring each of the 5 back-\/end Fortran functions for M\+P\+I\+\_\+\+C\+O\+N\+V\+E\+R\+S\+I\+O\+N\+\_\+\+F\+N\+\_\+\+N\+U\+L\+L. 

We need the 4 fortran compiler convetions and 1 for the \char`\"{}real\char`\"{} 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 M\+P\+I A\+P\+I bindings and other callback functions). \hypertarget{datarep_8h_aa8d1059c19593b98fc0fb2e33f097d01}{\index{datarep.\+h@{datarep.\+h}!O\+M\+P\+I\+\_\+\+I\+S\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+C\+O\+N\+V\+E\+R\+S\+I\+O\+N\+\_\+\+F\+N\+\_\+\+N\+U\+L\+L@{O\+M\+P\+I\+\_\+\+I\+S\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+C\+O\+N\+V\+E\+R\+S\+I\+O\+N\+\_\+\+F\+N\+\_\+\+N\+U\+L\+L}}
\index{O\+M\+P\+I\+\_\+\+I\+S\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+C\+O\+N\+V\+E\+R\+S\+I\+O\+N\+\_\+\+F\+N\+\_\+\+N\+U\+L\+L@{O\+M\+P\+I\+\_\+\+I\+S\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+C\+O\+N\+V\+E\+R\+S\+I\+O\+N\+\_\+\+F\+N\+\_\+\+N\+U\+L\+L}!datarep.\+h@{datarep.\+h}}
\subsubsection[{O\+M\+P\+I\+\_\+\+I\+S\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+C\+O\+N\+V\+E\+R\+S\+I\+O\+N\+\_\+\+F\+N\+\_\+\+N\+U\+L\+L}]{\setlength{\rightskip}{0pt plus 5cm}\#define O\+M\+P\+I\+\_\+\+I\+S\+\_\+\+F\+O\+R\+T\+R\+A\+N\+\_\+\+C\+O\+N\+V\+E\+R\+S\+I\+O\+N\+\_\+\+F\+N\+\_\+\+N\+U\+L\+L(
\begin{DoxyParamCaption}
\item[{}]{addr}
\end{DoxyParamCaption}
)~(mpi\+\_\+conversion\+\_\+fn\+\_\+null\+\_\+\+\_\+ == addr)}}\label{datarep_8h_aa8d1059c19593b98fc0fb2e33f097d01}


Declare the test macro in all of its forms. 

This macro provides a convenient way to check whether an argument is the sentinel value M\+P\+I\+\_\+\+C\+O\+N\+V\+E\+R\+S\+I\+O\+N\+\_\+\+F\+N\+\_\+\+N\+U\+L\+L. 