\hypertarget{osc__base__obj__convert_8h}{\section{ompi/mca/osc/base/osc\+\_\+base\+\_\+obj\+\_\+convert.h File Reference}
\label{osc__base__obj__convert_8h}\index{ompi/mca/osc/base/osc\+\_\+base\+\_\+obj\+\_\+convert.\+h@{ompi/mca/osc/base/osc\+\_\+base\+\_\+obj\+\_\+convert.\+h}}
}


Utility functions for Open M\+P\+I object manipulation by the One-\/sided code.  


{\ttfamily \#include \char`\"{}ompi\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/datatype/ompi\+\_\+datatype.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/proc/proc.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}ompi/op/op.\+h\char`\"{}}\\*
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static B\+E\+G\+I\+N\+\_\+\+C\+\_\+\+D\+E\+C\+L\+S struct \\*
\hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$ \hyperlink{osc__base__obj__convert_8h_ac09944d85abc07b766ee64bc1fa8877a}{ompi\+\_\+osc\+\_\+base\+\_\+datatype\+\_\+create} (\hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} $\ast$remote\+\_\+proc, void $\ast$$\ast$payload)
\begin{DoxyCompactList}\small\item\em Create datatype based on packed payload. \end{DoxyCompactList}\item 
static \hyperlink{structompi__op__t}{ompi\+\_\+op\+\_\+t} $\ast$ \hyperlink{osc__base__obj__convert_8h_a23888d6b3fdff3de9206d677a68fdfed}{ompi\+\_\+osc\+\_\+base\+\_\+op\+\_\+create} (int op\+\_\+id)
\begin{DoxyCompactList}\small\item\em Create datatype based on Fortran Index. \end{DoxyCompactList}\item 
O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C int \hyperlink{osc__base__obj__convert_8h_aab99b2ba183dc6f840d24a9a7714fef4}{ompi\+\_\+osc\+\_\+base\+\_\+get\+\_\+primitive\+\_\+type\+\_\+info} (\hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$$\ast$prim\+\_\+datatype, uint32\+\_\+t $\ast$prim\+\_\+count)
\begin{DoxyCompactList}\small\item\em Get the primitive datatype information for a legal one-\/sided accumulate datatype. \end{DoxyCompactList}\item 
O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C int \hyperlink{osc__base__obj__convert_8h_aec11b99c46919cddda5a801bedcf63e9}{ompi\+\_\+osc\+\_\+base\+\_\+process\+\_\+op} (void $\ast$outbuf, void $\ast$inbuf, size\+\_\+t inbuflen, struct \hyperlink{structompi__datatype__t}{ompi\+\_\+datatype\+\_\+t} $\ast$datatype, int count, \hyperlink{structompi__op__t}{ompi\+\_\+op\+\_\+t} $\ast$op)
\begin{DoxyCompactList}\small\item\em Apply the operation specified from inbuf to outbut. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Utility functions for Open M\+P\+I object manipulation by the One-\/sided code. 

Utility functions for creating / finding handles for Open M\+P\+I objects, usually based on indexes sent from remote peers. 

\subsection{Function Documentation}
\hypertarget{osc__base__obj__convert_8h_ac09944d85abc07b766ee64bc1fa8877a}{\index{osc\+\_\+base\+\_\+obj\+\_\+convert.\+h@{osc\+\_\+base\+\_\+obj\+\_\+convert.\+h}!ompi\+\_\+osc\+\_\+base\+\_\+datatype\+\_\+create@{ompi\+\_\+osc\+\_\+base\+\_\+datatype\+\_\+create}}
\index{ompi\+\_\+osc\+\_\+base\+\_\+datatype\+\_\+create@{ompi\+\_\+osc\+\_\+base\+\_\+datatype\+\_\+create}!osc\+\_\+base\+\_\+obj\+\_\+convert.\+h@{osc\+\_\+base\+\_\+obj\+\_\+convert.\+h}}
\subsubsection[{ompi\+\_\+osc\+\_\+base\+\_\+datatype\+\_\+create}]{\setlength{\rightskip}{0pt plus 5cm}static B\+E\+G\+I\+N\+\_\+\+C\+\_\+\+D\+E\+C\+L\+S struct {\bf ompi\+\_\+datatype\+\_\+t}$\ast$ ompi\+\_\+osc\+\_\+base\+\_\+datatype\+\_\+create (
\begin{DoxyParamCaption}
\item[{{\bf ompi\+\_\+proc\+\_\+t} $\ast$}]{remote\+\_\+proc, }
\item[{void $\ast$$\ast$}]{payload}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{osc__base__obj__convert_8h_ac09944d85abc07b766ee64bc1fa8877a}


Create datatype based on packed payload. 

Create a useable M\+P\+I datatype based on it's packed description. The datatype is owned by the calling process and must be O\+B\+J\+\_\+\+R\+E\+L\+E\+A\+S\+Ed when no longer in use.


\begin{DoxyParams}{Parameters}
{\em remote\+\_\+proc} & The \hyperlink{structompi__proc__t}{ompi\+\_\+proc\+\_\+t} pointer for the remote process \\
\hline
{\em payload} & A pointer to the pointer to the payload. The pointer to the payload will be moved past the datatype information upon successful return.\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em N\+U\+L\+L} & A failure occrred \\
\hline
{\em non-\/\+N\+U\+L\+L} & A fully operational datatype \\
\hline
\end{DoxyRetVals}


References O\+B\+J\+\_\+\+R\+E\+T\+A\+I\+N.

\hypertarget{osc__base__obj__convert_8h_aab99b2ba183dc6f840d24a9a7714fef4}{\index{osc\+\_\+base\+\_\+obj\+\_\+convert.\+h@{osc\+\_\+base\+\_\+obj\+\_\+convert.\+h}!ompi\+\_\+osc\+\_\+base\+\_\+get\+\_\+primitive\+\_\+type\+\_\+info@{ompi\+\_\+osc\+\_\+base\+\_\+get\+\_\+primitive\+\_\+type\+\_\+info}}
\index{ompi\+\_\+osc\+\_\+base\+\_\+get\+\_\+primitive\+\_\+type\+\_\+info@{ompi\+\_\+osc\+\_\+base\+\_\+get\+\_\+primitive\+\_\+type\+\_\+info}!osc\+\_\+base\+\_\+obj\+\_\+convert.\+h@{osc\+\_\+base\+\_\+obj\+\_\+convert.\+h}}
\subsubsection[{ompi\+\_\+osc\+\_\+base\+\_\+get\+\_\+primitive\+\_\+type\+\_\+info}]{\setlength{\rightskip}{0pt plus 5cm}O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C int ompi\+\_\+osc\+\_\+base\+\_\+get\+\_\+primitive\+\_\+type\+\_\+info (
\begin{DoxyParamCaption}
\item[{{\bf ompi\+\_\+datatype\+\_\+t} $\ast$}]{datatype, }
\item[{{\bf ompi\+\_\+datatype\+\_\+t} $\ast$$\ast$}]{prim\+\_\+datatype, }
\item[{uint32\+\_\+t $\ast$}]{prim\+\_\+count}
\end{DoxyParamCaption}
)}}\label{osc__base__obj__convert_8h_aab99b2ba183dc6f840d24a9a7714fef4}


Get the primitive datatype information for a legal one-\/sided accumulate datatype. 

Get the primitive datatype information for a legal one-\/sided accumulate datatype. This includes the primitive datatype used to build the datatype (there can be only one) and the number of instances of that primitive datatype in the datatype (there can be many).


\begin{DoxyParams}{Parameters}
{\em datatype} & legal one-\/sided datatype \\
\hline
{\em prim\+\_\+datatype} & The primitive datatype used to build datatype \\
\hline
{\em prim\+\_\+count} & Number of instances of prim\+\_\+datattpe in datatype\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S} & Success \\
\hline
\end{DoxyRetVals}
\hypertarget{osc__base__obj__convert_8h_a23888d6b3fdff3de9206d677a68fdfed}{\index{osc\+\_\+base\+\_\+obj\+\_\+convert.\+h@{osc\+\_\+base\+\_\+obj\+\_\+convert.\+h}!ompi\+\_\+osc\+\_\+base\+\_\+op\+\_\+create@{ompi\+\_\+osc\+\_\+base\+\_\+op\+\_\+create}}
\index{ompi\+\_\+osc\+\_\+base\+\_\+op\+\_\+create@{ompi\+\_\+osc\+\_\+base\+\_\+op\+\_\+create}!osc\+\_\+base\+\_\+obj\+\_\+convert.\+h@{osc\+\_\+base\+\_\+obj\+\_\+convert.\+h}}
\subsubsection[{ompi\+\_\+osc\+\_\+base\+\_\+op\+\_\+create}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf ompi\+\_\+op\+\_\+t}$\ast$ ompi\+\_\+osc\+\_\+base\+\_\+op\+\_\+create (
\begin{DoxyParamCaption}
\item[{int}]{op\+\_\+id}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{osc__base__obj__convert_8h_a23888d6b3fdff3de9206d677a68fdfed}


Create datatype based on Fortran Index. 

Create a useable M\+P\+I datatype based on it's Fortran index, which is globally the same for predefined operations. The op handle is owned by the calling process and must be O\+B\+J\+\_\+\+R\+E\+L\+E\+A\+S\+Ed when no longer in use.


\begin{DoxyParams}{Parameters}
{\em op\+\_\+id} & The fortran index for the operaton\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em N\+U\+L\+L} & A failure occrred \\
\hline
{\em non-\/\+N\+U\+L\+L} & An op handle \\
\hline
\end{DoxyRetVals}


References O\+B\+J\+\_\+\+R\+E\+T\+A\+I\+N.

\hypertarget{osc__base__obj__convert_8h_aec11b99c46919cddda5a801bedcf63e9}{\index{osc\+\_\+base\+\_\+obj\+\_\+convert.\+h@{osc\+\_\+base\+\_\+obj\+\_\+convert.\+h}!ompi\+\_\+osc\+\_\+base\+\_\+process\+\_\+op@{ompi\+\_\+osc\+\_\+base\+\_\+process\+\_\+op}}
\index{ompi\+\_\+osc\+\_\+base\+\_\+process\+\_\+op@{ompi\+\_\+osc\+\_\+base\+\_\+process\+\_\+op}!osc\+\_\+base\+\_\+obj\+\_\+convert.\+h@{osc\+\_\+base\+\_\+obj\+\_\+convert.\+h}}
\subsubsection[{ompi\+\_\+osc\+\_\+base\+\_\+process\+\_\+op}]{\setlength{\rightskip}{0pt plus 5cm}O\+M\+P\+I\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C int ompi\+\_\+osc\+\_\+base\+\_\+process\+\_\+op (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{outbuf, }
\item[{void $\ast$}]{inbuf, }
\item[{size\+\_\+t}]{inbuflen, }
\item[{struct {\bf ompi\+\_\+datatype\+\_\+t} $\ast$}]{datatype, }
\item[{int}]{count, }
\item[{{\bf ompi\+\_\+op\+\_\+t} $\ast$}]{op}
\end{DoxyParamCaption}
)}}\label{osc__base__obj__convert_8h_aec11b99c46919cddda5a801bedcf63e9}


Apply the operation specified from inbuf to outbut. 

Apply the specified reduction operation from inbuf to outbuf. inbuf must contain count instances of datatype, in the local process's binary mode.


\begin{DoxyRetVals}{Return values}
{\em O\+M\+P\+I\+\_\+\+S\+U\+C\+C\+E\+S\+S} & Success \\
\hline
{\em O\+M\+P\+I\+\_\+\+E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+R\+T\+E\+D} & Called with op == ompi\+\_\+mpi\+\_\+op\+\_\+replace \\
\hline
\end{DoxyRetVals}


References opal\+\_\+convertor\+\_\+t\+::f\+Advance, opal\+\_\+convertor\+\_\+t\+::master, O\+B\+J\+\_\+\+C\+O\+N\+S\+T\+R\+U\+C\+T, O\+B\+J\+\_\+\+D\+E\+S\+T\+R\+U\+C\+T, ompi\+\_\+mpi\+\_\+op\+\_\+replace, ompi\+\_\+op\+\_\+reduce(), ompi\+\_\+proc\+\_\+local(), and opal\+\_\+convertor\+\_\+master\+\_\+t\+::p\+Functions.

