\hypertarget{struct__Eina__Future__Cb__Easy__Desc}{}\doxysection{\+\_\+\+Eina\+\_\+\+Future\+\_\+\+Cb\+\_\+\+Easy\+\_\+\+Desc Struct Reference}
\label{struct__Eina__Future__Cb__Easy__Desc}\index{\_Eina\_Future\_Cb\_Easy\_Desc@{\_Eina\_Future\_Cb\_Easy\_Desc}}


A struct with callbacks to be used by \mbox{\hyperlink{group__Eina__Future_ga8efd2e10698d893468026e1eaf9e5948}{eina\+\_\+future\+\_\+cb\+\_\+easy\+\_\+from\+\_\+desc()}} and \mbox{\hyperlink{group__Eina__Future_ga57f56d13f3f3bb13651ea3b81b59e8f1}{eina\+\_\+future\+\_\+cb\+\_\+easy()}}  




{\ttfamily \#include $<$eina\+\_\+promise.\+h$>$}

\doxysubsection*{Data Fields}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Eina__Future__Callbacks_ga9dfebda67e96766ede62d657c1991655}{Eina\+\_\+\+Future\+\_\+\+Success\+\_\+\+Cb}} \mbox{\hyperlink{struct__Eina__Future__Cb__Easy__Desc_a15ec41c953419c10745fb2738fd311d5}{success}}
\begin{DoxyCompactList}\small\item\em Called on success (value.\+type is not {\ttfamily EINA\+\_\+\+VALUE\+\_\+\+TYPE\+\_\+\+ERROR}). \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Future__Callbacks_ga88b867eea465fb367d4974d9cf8d3866}{Eina\+\_\+\+Future\+\_\+\+Error\+\_\+\+Cb}} \mbox{\hyperlink{struct__Eina__Future__Cb__Easy__Desc_af785ac4390997ecbdf13e89aa4840c34}{error}}
\begin{DoxyCompactList}\small\item\em Called on error (value.\+type is {\ttfamily EINA\+\_\+\+VALUE\+\_\+\+TYPE\+\_\+\+ERROR}). \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Future__Callbacks_ga3e4a9200b8e67906bf1b1514bc0d93ff}{Eina\+\_\+\+Future\+\_\+\+Free\+\_\+\+Cb}} \mbox{\hyperlink{struct__Eina__Future__Cb__Easy__Desc_a9ae635f5d45413527f77755a19abb77e}{free}}
\begin{DoxyCompactList}\small\item\em Called on {\bfseries{all}} situations to notify future destruction. \end{DoxyCompactList}\item 
const \mbox{\hyperlink{group__Eina__Value__Group_gaab67ab8bcd0624280c5276044b07e0d2}{Eina\+\_\+\+Value\+\_\+\+Type}} $\ast$ \mbox{\hyperlink{struct__Eina__Future__Cb__Easy__Desc_a5112a2ccff7f8b1c48c242763a948d05}{success\+\_\+type}}
\begin{DoxyCompactList}\small\item\em If provided, then {\ttfamily success} will only be called if the value type matches the given pointer. \end{DoxyCompactList}\item 
const void $\ast$ \mbox{\hyperlink{struct__Eina__Future__Cb__Easy__Desc_a5a7e0f4bd6e32f107bf17a05352da0e5}{data}}
\begin{DoxyCompactList}\small\item\em Context data given to every callback. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
A struct with callbacks to be used by \mbox{\hyperlink{group__Eina__Future_ga8efd2e10698d893468026e1eaf9e5948}{eina\+\_\+future\+\_\+cb\+\_\+easy\+\_\+from\+\_\+desc()}} and \mbox{\hyperlink{group__Eina__Future_ga57f56d13f3f3bb13651ea3b81b59e8f1}{eina\+\_\+future\+\_\+cb\+\_\+easy()}} 

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__Future_ga8efd2e10698d893468026e1eaf9e5948}{eina\+\_\+future\+\_\+cb\+\_\+easy\+\_\+from\+\_\+desc()}} 

\mbox{\hyperlink{group__Eina__Future_ga57f56d13f3f3bb13651ea3b81b59e8f1}{eina\+\_\+future\+\_\+cb\+\_\+easy()}} 
\end{DoxySeeAlso}


\doxysubsection{Field Documentation}
\mbox{\Hypertarget{struct__Eina__Future__Cb__Easy__Desc_a15ec41c953419c10745fb2738fd311d5}\label{struct__Eina__Future__Cb__Easy__Desc_a15ec41c953419c10745fb2738fd311d5}} 
\index{\_Eina\_Future\_Cb\_Easy\_Desc@{\_Eina\_Future\_Cb\_Easy\_Desc}!success@{success}}
\index{success@{success}!\_Eina\_Future\_Cb\_Easy\_Desc@{\_Eina\_Future\_Cb\_Easy\_Desc}}
\doxysubsubsection{\texorpdfstring{success}{success}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Future__Callbacks_ga9dfebda67e96766ede62d657c1991655}{Eina\+\_\+\+Future\+\_\+\+Success\+\_\+\+Cb}} \+\_\+\+Eina\+\_\+\+Future\+\_\+\+Cb\+\_\+\+Easy\+\_\+\+Desc\+::success}



Called on success (value.\+type is not {\ttfamily EINA\+\_\+\+VALUE\+\_\+\+TYPE\+\_\+\+ERROR}). 

if {\ttfamily success\+\_\+type} is not NULL, then the value is guaranteed to be of that type, if it\textquotesingle{}s not, then it will trigger {\ttfamily error} with {\ttfamily EINVAL}.

After this function returns, {\ttfamily free} callback is called if provided. 

Referenced by \mbox{\hyperlink{group__Eina__Future_ga47581dfd989e38d49918aacf77120a1e}{eina\+\_\+future\+\_\+chain\+\_\+easy\+\_\+array()}}.

\mbox{\Hypertarget{struct__Eina__Future__Cb__Easy__Desc_af785ac4390997ecbdf13e89aa4840c34}\label{struct__Eina__Future__Cb__Easy__Desc_af785ac4390997ecbdf13e89aa4840c34}} 
\index{\_Eina\_Future\_Cb\_Easy\_Desc@{\_Eina\_Future\_Cb\_Easy\_Desc}!error@{error}}
\index{error@{error}!\_Eina\_Future\_Cb\_Easy\_Desc@{\_Eina\_Future\_Cb\_Easy\_Desc}}
\doxysubsubsection{\texorpdfstring{error}{error}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Future__Callbacks_ga88b867eea465fb367d4974d9cf8d3866}{Eina\+\_\+\+Future\+\_\+\+Error\+\_\+\+Cb}} \+\_\+\+Eina\+\_\+\+Future\+\_\+\+Cb\+\_\+\+Easy\+\_\+\+Desc\+::error}



Called on error (value.\+type is {\ttfamily EINA\+\_\+\+VALUE\+\_\+\+TYPE\+\_\+\+ERROR}). 

This function can return another error, propagating or converting it. However it may also return a non-\/error, in this case the next future in chain will receive a regular value, which may call its {\ttfamily success}.

If this function is not provided, then it will passthrough the error to the next error handler.

It may be called with {\ttfamily EINVAL} if {\ttfamily success\+\_\+type} is provided and doesn\textquotesingle{}t match the received type.

It may be called with {\ttfamily ECANCELED} if future was canceled.

It may be called with {\ttfamily ENOMEM} if memory allocation failed during callback creation.

After this function returns, {\ttfamily free} callback is called if provided. 

Referenced by \mbox{\hyperlink{group__Eina__Future_ga5d5e20d9d68c676cbdecf4ecf58852da}{eina\+\_\+future\+\_\+cb\+\_\+easy\+\_\+desc\+\_\+flush()}}, and \mbox{\hyperlink{group__Eina__Future_ga47581dfd989e38d49918aacf77120a1e}{eina\+\_\+future\+\_\+chain\+\_\+easy\+\_\+array()}}.

\mbox{\Hypertarget{struct__Eina__Future__Cb__Easy__Desc_a9ae635f5d45413527f77755a19abb77e}\label{struct__Eina__Future__Cb__Easy__Desc_a9ae635f5d45413527f77755a19abb77e}} 
\index{\_Eina\_Future\_Cb\_Easy\_Desc@{\_Eina\_Future\_Cb\_Easy\_Desc}!free@{free}}
\index{free@{free}!\_Eina\_Future\_Cb\_Easy\_Desc@{\_Eina\_Future\_Cb\_Easy\_Desc}}
\doxysubsubsection{\texorpdfstring{free}{free}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Future__Callbacks_ga3e4a9200b8e67906bf1b1514bc0d93ff}{Eina\+\_\+\+Future\+\_\+\+Free\+\_\+\+Cb}} \+\_\+\+Eina\+\_\+\+Future\+\_\+\+Cb\+\_\+\+Easy\+\_\+\+Desc\+::free}



Called on {\bfseries{all}} situations to notify future destruction. 

This is called after {\ttfamily success} or {\ttfamily error}, as well as it\textquotesingle{}s called if none of them are provided. Thus can be used as a \char`\"{}weak ref\char`\"{} mechanism. 

Referenced by \mbox{\hyperlink{group__Eina__Future_ga5d5e20d9d68c676cbdecf4ecf58852da}{eina\+\_\+future\+\_\+cb\+\_\+easy\+\_\+desc\+\_\+flush()}}, and \mbox{\hyperlink{group__Eina__Future_ga47581dfd989e38d49918aacf77120a1e}{eina\+\_\+future\+\_\+chain\+\_\+easy\+\_\+array()}}.

\mbox{\Hypertarget{struct__Eina__Future__Cb__Easy__Desc_a5112a2ccff7f8b1c48c242763a948d05}\label{struct__Eina__Future__Cb__Easy__Desc_a5112a2ccff7f8b1c48c242763a948d05}} 
\index{\_Eina\_Future\_Cb\_Easy\_Desc@{\_Eina\_Future\_Cb\_Easy\_Desc}!success\_type@{success\_type}}
\index{success\_type@{success\_type}!\_Eina\_Future\_Cb\_Easy\_Desc@{\_Eina\_Future\_Cb\_Easy\_Desc}}
\doxysubsubsection{\texorpdfstring{success\_type}{success\_type}}
{\footnotesize\ttfamily const \mbox{\hyperlink{group__Eina__Value__Group_gaab67ab8bcd0624280c5276044b07e0d2}{Eina\+\_\+\+Value\+\_\+\+Type}}$\ast$ \+\_\+\+Eina\+\_\+\+Future\+\_\+\+Cb\+\_\+\+Easy\+\_\+\+Desc\+::success\+\_\+type}



If provided, then {\ttfamily success} will only be called if the value type matches the given pointer. 

If provided and doesn\textquotesingle{}t match, then {\ttfamily error} will be called with {\ttfamily EINVAL}. If no {\ttfamily error}, then it will be propagated to the next future in the chain. 

Referenced by \mbox{\hyperlink{group__Eina__Future_ga47581dfd989e38d49918aacf77120a1e}{eina\+\_\+future\+\_\+chain\+\_\+easy\+\_\+array()}}.

\mbox{\Hypertarget{struct__Eina__Future__Cb__Easy__Desc_a5a7e0f4bd6e32f107bf17a05352da0e5}\label{struct__Eina__Future__Cb__Easy__Desc_a5a7e0f4bd6e32f107bf17a05352da0e5}} 
\index{\_Eina\_Future\_Cb\_Easy\_Desc@{\_Eina\_Future\_Cb\_Easy\_Desc}!data@{data}}
\index{data@{data}!\_Eina\_Future\_Cb\_Easy\_Desc@{\_Eina\_Future\_Cb\_Easy\_Desc}}
\doxysubsubsection{\texorpdfstring{data}{data}}
{\footnotesize\ttfamily const void$\ast$ \+\_\+\+Eina\+\_\+\+Future\+\_\+\+Cb\+\_\+\+Easy\+\_\+\+Desc\+::data}



Context data given to every callback. 

This must be freed {\bfseries{only}} by {\ttfamily free} callback as it\textquotesingle{}s called from every case, otherwise it may lead to memory leaks. 

Referenced by \mbox{\hyperlink{group__Eina__Future_ga5d5e20d9d68c676cbdecf4ecf58852da}{eina\+\_\+future\+\_\+cb\+\_\+easy\+\_\+desc\+\_\+flush()}}.

