\hypertarget{group__Eina__Types__Group}{}\section{Types}
\label{group__Eina__Types__Group}\index{Types@{Types}}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}\label{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}}
\begin{DoxyCompactList}\small\item\em Used to export functions(by changing visibility). \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga71dbf93c8bbb9e8b745879c3c1aecd0e}\label{group__Eina__Types__Group_ga71dbf93c8bbb9e8b745879c3c1aecd0e}} 
\#define {\bfseries E\+W\+A\+PI}~\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} E\+A\+P\+I\+\_\+\+W\+E\+AK
\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga1a53601915c5087ff37780aad3e2ec98}\label{group__Eina__Types__Group_ga1a53601915c5087ff37780aad3e2ec98}} 
\#define {\bfseries E\+X\+P\+O\+R\+T\+A\+PI}
\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}\label{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{E\+I\+N\+A\+\_\+\+U\+N\+U\+S\+ED}}
\begin{DoxyCompactList}\small\item\em Used to warn when an argument of the function is not used. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}\label{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+LT}}
\begin{DoxyCompactList}\small\item\em Used to warn when the returned value of the function is not used. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}(...)
\begin{DoxyCompactList}\small\item\em Used to warn when the specified arguments of the function are {\ttfamily N\+U\+LL}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_gad5b2116495471db12a34bab9a34edfaa}\label{group__Eina__Types__Group_gad5b2116495471db12a34bab9a34edfaa}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_gad5b2116495471db12a34bab9a34edfaa}{E\+I\+N\+A\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+ED}}
\begin{DoxyCompactList}\small\item\em Used to warn when the function is considered as deprecated. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}\label{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+OC}}
\begin{DoxyCompactList}\small\item\em E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+OC is used to tell the compiler that a function may be treated as if any non-\/\+N\+U\+LL pointer it returns cannot alias any other pointer valid when the function returns and that the memory has undefined content. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga4669a55a23089d0f9b70702ef05cea68}\label{group__Eina__Types__Group_ga4669a55a23089d0f9b70702ef05cea68}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga4669a55a23089d0f9b70702ef05cea68}{E\+I\+N\+A\+\_\+\+P\+U\+RE}}
\begin{DoxyCompactList}\small\item\em E\+I\+N\+A\+\_\+\+P\+U\+RE is used to tell the compiler this functions has no effects except the return value and their return value depends only on the parameters and/or global variables. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga50265482f1d9b18e4b98e97cfa2c8d05}{E\+I\+N\+A\+\_\+\+P\+R\+I\+N\+TF}}(fmt,  arg)
\item 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga31d6414e17005143acfe76147af1b809}{E\+I\+N\+A\+\_\+\+S\+C\+A\+NF}}(fmt,  arg)
\item 
\#define \mbox{\hyperlink{group__Eina__Types__Group_gade276891541922d842e1f719ed4e08e0}{E\+I\+N\+A\+\_\+\+F\+O\+R\+M\+AT}}(fmt)
\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga04f4a207fcde054c818bace8af77dcd6}\label{group__Eina__Types__Group_ga04f4a207fcde054c818bace8af77dcd6}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga04f4a207fcde054c818bace8af77dcd6}{E\+I\+N\+A\+\_\+\+C\+O\+N\+ST}}
\begin{DoxyCompactList}\small\item\em Attribute from gcc to prevent the function to read/modify any global memory. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga6eb1a3925291d82fe83a1bf842890d5b}\label{group__Eina__Types__Group_ga6eb1a3925291d82fe83a1bf842890d5b}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga6eb1a3925291d82fe83a1bf842890d5b}{E\+I\+N\+A\+\_\+\+N\+O\+I\+N\+S\+T\+R\+U\+M\+E\+NT}}
\begin{DoxyCompactList}\small\item\em Attribute from gcc to disable instrumentation for a specific function. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga70675a75a5fb3e9a51d5af985a1fd3aa}{E\+I\+N\+A\+\_\+\+U\+N\+L\+I\+K\+E\+LY}}(exp)~exp
\item 
\#define \mbox{\hyperlink{group__Eina__Types__Group_gaa9820797ec4c069e571f57e3c0c12216}{E\+I\+N\+A\+\_\+\+L\+I\+K\+E\+LY}}(exp)~exp
\item 
\#define \mbox{\hyperlink{group__Eina__Types__Group_gab767b5b607b3805cb088cd4ba93e3c3b}{E\+I\+N\+A\+\_\+\+S\+E\+N\+T\+I\+N\+EL}}
\begin{DoxyCompactList}\small\item\em Attribute from gcc to prevent calls without the necessary N\+U\+LL sentinel in certain variadic functions. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga60dc121fe1250fe36f52dd30c1ca1974}{E\+I\+N\+A\+\_\+\+F\+A\+L\+L\+T\+H\+R\+O\+U\+GH}}
\begin{DoxyCompactList}\small\item\em Attribute from gcc to prevent warning and indicate that we expect to actually go to the next switch statement. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga27cc40c638d9afdb2bcd322515ca17a6}{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+CH}}(arg)
\begin{DoxyCompactList}\small\item\em Hints that the pointer  needs to be pre-\/fetched into cache This hints to the compiler to probably issue a prefetch command for the memory address {\ttfamily arg} and ensure it goes into all levels of cache. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga2376f686c9431974be2df4a7083142cf}{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+W\+R\+I\+TE}}(arg)
\begin{DoxyCompactList}\small\item\em Hints that the pointer  needs to be pre-\/fetched into cache This hints to the compiler to probably issue a prefetch command for the memory address {\ttfamily arg} and ensure it goes into all levels of cache. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga160079903763aaeed987cb92c0e1a6d8}{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+N\+O\+C\+A\+C\+HE}}(arg)
\begin{DoxyCompactList}\small\item\em Hints that the pointer  needs to be pre-\/fetched into cache This hints to the compiler to probably issue a prefetch command for the memory address {\ttfamily arg} and ensure it goes into just the closest(l1) cache. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga6fdc711ef937b8bd65b1a90d914bf374}\label{group__Eina__Types__Group_ga6fdc711ef937b8bd65b1a90d914bf374}} 
\#define {\bfseries E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+N\+O\+C\+A\+C\+H\+E\+\_\+\+W\+R\+I\+TE}(arg)
\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}\label{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}}~((\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}})0)
\begin{DoxyCompactList}\small\item\em boolean value F\+A\+L\+SE (numerical value 0) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}\label{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}}~((\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}})1)
\begin{DoxyCompactList}\small\item\em boolean value T\+R\+UE (numerical value 1) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_gac9036655ab41aa7eb047e03acfe2b2ab}\label{group__Eina__Types__Group_gac9036655ab41aa7eb047e03acfe2b2ab}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_gac9036655ab41aa7eb047e03acfe2b2ab}{E\+I\+N\+A\+\_\+\+C\+O\+M\+P\+A\+R\+E\+\_\+\+CB}}(function)~((\mbox{\hyperlink{group__Eina__Types__Group_ga1b31ffcc0d46eed63a2381c5a011b486}{Eina\+\_\+\+Compare\+\_\+\+Cb}})function)
\begin{DoxyCompactList}\small\item\em Macro to cast to Eina\+\_\+\+Compare\+\_\+\+Cb. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga2cdb19a9d8e329afc19d25f4dcc9963c}\label{group__Eina__Types__Group_ga2cdb19a9d8e329afc19d25f4dcc9963c}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga2cdb19a9d8e329afc19d25f4dcc9963c}{E\+I\+N\+A\+\_\+\+R\+A\+N\+D\+O\+M\+\_\+\+CB}}(function)~((\mbox{\hyperlink{group__Eina__Types__Group_ga7331c88690f77b217b19cc5678cbdc24}{Eina\+\_\+\+Random\+\_\+\+Cb}})function)
\begin{DoxyCompactList}\small\item\em Macro to cast to Eina\+\_\+\+Random\+\_\+\+Cb. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga2969ee84babb014288c22b76251660c5}\label{group__Eina__Types__Group_ga2969ee84babb014288c22b76251660c5}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga2969ee84babb014288c22b76251660c5}{E\+I\+N\+A\+\_\+\+E\+A\+C\+H\+\_\+\+CB}}(Function)~((\mbox{\hyperlink{group__Eina__Types__Group_gab115f6c19b6641ab5ba22ed45d9b7aa4}{Eina\+\_\+\+Each\+\_\+\+Cb}})Function)
\begin{DoxyCompactList}\small\item\em Macro to cast to Eina\+\_\+\+Each. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga930bcae4b1c589195787f82928d1f605}\label{group__Eina__Types__Group_ga930bcae4b1c589195787f82928d1f605}} 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga930bcae4b1c589195787f82928d1f605}{E\+I\+N\+A\+\_\+\+F\+R\+E\+E\+\_\+\+CB}}(Function)~((\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}})Function)
\begin{DoxyCompactList}\small\item\em Macro to cast to Eina\+\_\+\+Free\+\_\+\+Cb. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga7c1b6f81660b4e30516169e9e7d3261c}{E\+I\+N\+A\+\_\+\+C\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+L\+E\+N\+G\+TH}}(arr)~(sizeof(arr) / sizeof((arr)\mbox{[}0\mbox{]}))
\begin{DoxyCompactList}\small\item\em Macro to return the array length of a standard c array. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Types__Group_ga3de16e04fea27e3d67eef8cb25ee0789}{E\+I\+N\+A\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+E\+Q\+U\+AL}}(x,  y)~(fabs((x) -\/ (y)) $<$= (2.\+2204460492503131e-\/16) $\ast$ fabs((x)))
\begin{DoxyCompactList}\small\item\em Macro to compare 2 double floating point values and deal with precision loss issues. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef unsigned char \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}
\begin{DoxyCompactList}\small\item\em Type to mimic a boolean. \end{DoxyCompactList}\item 
typedef int($\ast$ \mbox{\hyperlink{group__Eina__Types__Group_ga1b31ffcc0d46eed63a2381c5a011b486}{Eina\+\_\+\+Compare\+\_\+\+Cb}}) (const void $\ast$data1, const void $\ast$data2)
\begin{DoxyCompactList}\small\item\em Function used in functions using sorting. \end{DoxyCompactList}\item 
typedef int($\ast$ \mbox{\hyperlink{group__Eina__Types__Group_ga7331c88690f77b217b19cc5678cbdc24}{Eina\+\_\+\+Random\+\_\+\+Cb}}) (const int min, const int max)
\begin{DoxyCompactList}\small\item\em Function used in shuffling functions. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_gab115f6c19b6641ab5ba22ed45d9b7aa4}\label{group__Eina__Types__Group_gab115f6c19b6641ab5ba22ed45d9b7aa4}} 
typedef \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}($\ast$ \mbox{\hyperlink{group__Eina__Types__Group_gab115f6c19b6641ab5ba22ed45d9b7aa4}{Eina\+\_\+\+Each\+\_\+\+Cb}}) (const void $\ast$container, void $\ast$data, void $\ast$fdata)
\begin{DoxyCompactList}\small\item\em A callback type used when iterating over a container. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}\label{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}} 
typedef void($\ast$ \mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}}) (void $\ast$data)
\begin{DoxyCompactList}\small\item\em A callback type used to free data when iterating over a container. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{group__Eina__Types__Group_ga6046bb8962466e422419c4499688bda8}\label{group__Eina__Types__Group_ga6046bb8962466e422419c4499688bda8}} 
const unsigned int {\bfseries eina\+\_\+prime\+\_\+table} \mbox{[}$\,$\mbox{]}
\end{DoxyCompactItemize}


\subsection{Detailed Description}


\subsection{Macro Definition Documentation}
\mbox{\Hypertarget{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}\label{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}} 
\index{Types@{Types}!E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL@{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}}
\index{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL@{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}!Types@{Types}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL}{EINA\_ARG\_NONNULL}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+LL(\begin{DoxyParamCaption}\item[{}]{... }\end{DoxyParamCaption})}



Used to warn when the specified arguments of the function are {\ttfamily N\+U\+LL}. 


\begin{DoxyParams}{Parameters}
{\em ...} & Oridnals of the parameters to check for nullity (1..n)\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Nothing, but Doxygen will complain if it\textquotesingle{}s not documented \+:-\/P 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__Types__Group_ga50265482f1d9b18e4b98e97cfa2c8d05}\label{group__Eina__Types__Group_ga50265482f1d9b18e4b98e97cfa2c8d05}} 
\index{Types@{Types}!E\+I\+N\+A\+\_\+\+P\+R\+I\+N\+TF@{E\+I\+N\+A\+\_\+\+P\+R\+I\+N\+TF}}
\index{E\+I\+N\+A\+\_\+\+P\+R\+I\+N\+TF@{E\+I\+N\+A\+\_\+\+P\+R\+I\+N\+TF}!Types@{Types}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+P\+R\+I\+N\+TF}{EINA\_PRINTF}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+P\+R\+I\+N\+TF(\begin{DoxyParamCaption}\item[{}]{fmt,  }\item[{}]{arg }\end{DoxyParamCaption})}


\begin{DoxyParams}{Parameters}
{\em fmt} & The format to be used. \\
\hline
{\em arg} & The argument to be used. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Types__Group_ga31d6414e17005143acfe76147af1b809}\label{group__Eina__Types__Group_ga31d6414e17005143acfe76147af1b809}} 
\index{Types@{Types}!E\+I\+N\+A\+\_\+\+S\+C\+A\+NF@{E\+I\+N\+A\+\_\+\+S\+C\+A\+NF}}
\index{E\+I\+N\+A\+\_\+\+S\+C\+A\+NF@{E\+I\+N\+A\+\_\+\+S\+C\+A\+NF}!Types@{Types}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+S\+C\+A\+NF}{EINA\_SCANF}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+S\+C\+A\+NF(\begin{DoxyParamCaption}\item[{}]{fmt,  }\item[{}]{arg }\end{DoxyParamCaption})}


\begin{DoxyParams}{Parameters}
{\em fmt} & The format to be used. \\
\hline
{\em arg} & The argument to be used. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Types__Group_gade276891541922d842e1f719ed4e08e0}\label{group__Eina__Types__Group_gade276891541922d842e1f719ed4e08e0}} 
\index{Types@{Types}!E\+I\+N\+A\+\_\+\+F\+O\+R\+M\+AT@{E\+I\+N\+A\+\_\+\+F\+O\+R\+M\+AT}}
\index{E\+I\+N\+A\+\_\+\+F\+O\+R\+M\+AT@{E\+I\+N\+A\+\_\+\+F\+O\+R\+M\+AT}!Types@{Types}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+F\+O\+R\+M\+AT}{EINA\_FORMAT}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+F\+O\+R\+M\+AT(\begin{DoxyParamCaption}\item[{}]{fmt }\end{DoxyParamCaption})}


\begin{DoxyParams}{Parameters}
{\em fmt} & The format to be used. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Types__Group_ga70675a75a5fb3e9a51d5af985a1fd3aa}\label{group__Eina__Types__Group_ga70675a75a5fb3e9a51d5af985a1fd3aa}} 
\index{Types@{Types}!E\+I\+N\+A\+\_\+\+U\+N\+L\+I\+K\+E\+LY@{E\+I\+N\+A\+\_\+\+U\+N\+L\+I\+K\+E\+LY}}
\index{E\+I\+N\+A\+\_\+\+U\+N\+L\+I\+K\+E\+LY@{E\+I\+N\+A\+\_\+\+U\+N\+L\+I\+K\+E\+LY}!Types@{Types}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+U\+N\+L\+I\+K\+E\+LY}{EINA\_UNLIKELY}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+U\+N\+L\+I\+K\+E\+LY(\begin{DoxyParamCaption}\item[{}]{exp }\end{DoxyParamCaption})~exp}


\begin{DoxyParams}{Parameters}
{\em exp} & The expression to be used. \\
\hline
\end{DoxyParams}


Referenced by ecore\+\_\+job\+\_\+add(), ecore\+\_\+poller\+\_\+add(), ecore\+\_\+time\+\_\+get(), efl\+\_\+isa(), efl\+\_\+object\+\_\+override(), efl\+\_\+ref(), efl\+\_\+unref(), eina\+\_\+mempool\+\_\+alignof(), eina\+\_\+sched\+\_\+prio\+\_\+drop(), and eina\+\_\+shutdown().

\mbox{\Hypertarget{group__Eina__Types__Group_gaa9820797ec4c069e571f57e3c0c12216}\label{group__Eina__Types__Group_gaa9820797ec4c069e571f57e3c0c12216}} 
\index{Types@{Types}!E\+I\+N\+A\+\_\+\+L\+I\+K\+E\+LY@{E\+I\+N\+A\+\_\+\+L\+I\+K\+E\+LY}}
\index{E\+I\+N\+A\+\_\+\+L\+I\+K\+E\+LY@{E\+I\+N\+A\+\_\+\+L\+I\+K\+E\+LY}!Types@{Types}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+L\+I\+K\+E\+LY}{EINA\_LIKELY}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+L\+I\+K\+E\+LY(\begin{DoxyParamCaption}\item[{}]{exp }\end{DoxyParamCaption})~exp}


\begin{DoxyParams}{Parameters}
{\em exp} & The expression to be used. \\
\hline
\end{DoxyParams}


Referenced by ector\+\_\+init(), ector\+\_\+shutdown(), efl\+\_\+isa(), eina\+\_\+init(), and eina\+\_\+log\+\_\+level\+\_\+set().

\mbox{\Hypertarget{group__Eina__Types__Group_gab767b5b607b3805cb088cd4ba93e3c3b}\label{group__Eina__Types__Group_gab767b5b607b3805cb088cd4ba93e3c3b}} 
\index{Types@{Types}!E\+I\+N\+A\+\_\+\+S\+E\+N\+T\+I\+N\+EL@{E\+I\+N\+A\+\_\+\+S\+E\+N\+T\+I\+N\+EL}}
\index{E\+I\+N\+A\+\_\+\+S\+E\+N\+T\+I\+N\+EL@{E\+I\+N\+A\+\_\+\+S\+E\+N\+T\+I\+N\+EL}!Types@{Types}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+S\+E\+N\+T\+I\+N\+EL}{EINA\_SENTINEL}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+S\+E\+N\+T\+I\+N\+EL}



Attribute from gcc to prevent calls without the necessary N\+U\+LL sentinel in certain variadic functions. 

\begin{DoxySince}{Since}
1.\+7 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__Types__Group_ga60dc121fe1250fe36f52dd30c1ca1974}\label{group__Eina__Types__Group_ga60dc121fe1250fe36f52dd30c1ca1974}} 
\index{Types@{Types}!E\+I\+N\+A\+\_\+\+F\+A\+L\+L\+T\+H\+R\+O\+U\+GH@{E\+I\+N\+A\+\_\+\+F\+A\+L\+L\+T\+H\+R\+O\+U\+GH}}
\index{E\+I\+N\+A\+\_\+\+F\+A\+L\+L\+T\+H\+R\+O\+U\+GH@{E\+I\+N\+A\+\_\+\+F\+A\+L\+L\+T\+H\+R\+O\+U\+GH}!Types@{Types}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+F\+A\+L\+L\+T\+H\+R\+O\+U\+GH}{EINA\_FALLTHROUGH}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+F\+A\+L\+L\+T\+H\+R\+O\+U\+GH}



Attribute from gcc to prevent warning and indicate that we expect to actually go to the next switch statement. 

\begin{DoxySince}{Since}
1.\+20 
\end{DoxySince}


Referenced by edje\+\_\+edit\+\_\+part\+\_\+source\+\_\+set(), and eet\+\_\+node\+\_\+del().

\mbox{\Hypertarget{group__Eina__Types__Group_ga27cc40c638d9afdb2bcd322515ca17a6}\label{group__Eina__Types__Group_ga27cc40c638d9afdb2bcd322515ca17a6}} 
\index{Types@{Types}!E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+CH@{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+CH}}
\index{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+CH@{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+CH}!Types@{Types}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+CH}{EINA\_PREFETCH}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+CH(\begin{DoxyParamCaption}\item[{}]{arg }\end{DoxyParamCaption})}



Hints that the pointer  needs to be pre-\/fetched into cache This hints to the compiler to probably issue a prefetch command for the memory address {\ttfamily arg} and ensure it goes into all levels of cache. 

For just writing to an address look at \mbox{\hyperlink{group__Eina__Types__Group_ga2376f686c9431974be2df4a7083142cf}{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+W\+R\+I\+T\+E()}}. Note that the pointer {\ttfamily arg} does not have to be a valid pointer and will not cause any exceptions (like segfaults) if it is invalid. \begin{DoxySince}{Since}
1.\+19 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__Types__Group_ga2376f686c9431974be2df4a7083142cf}\label{group__Eina__Types__Group_ga2376f686c9431974be2df4a7083142cf}} 
\index{Types@{Types}!E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+W\+R\+I\+TE@{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+W\+R\+I\+TE}}
\index{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+W\+R\+I\+TE@{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+W\+R\+I\+TE}!Types@{Types}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+W\+R\+I\+TE}{EINA\_PREFETCH\_WRITE}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+W\+R\+I\+TE(\begin{DoxyParamCaption}\item[{}]{arg }\end{DoxyParamCaption})}



Hints that the pointer  needs to be pre-\/fetched into cache This hints to the compiler to probably issue a prefetch command for the memory address {\ttfamily arg} and ensure it goes into all levels of cache. 

This specifically indicates that the address is going to be written to as opposed to being read from as with \mbox{\hyperlink{group__Eina__Types__Group_ga27cc40c638d9afdb2bcd322515ca17a6}{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H()}}. Note that the pointer {\ttfamily arg} does not have to be a valid pointer and will not cause any exceptions (like segfaults) if it is invalid. \begin{DoxySince}{Since}
1.\+19 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__Types__Group_ga160079903763aaeed987cb92c0e1a6d8}\label{group__Eina__Types__Group_ga160079903763aaeed987cb92c0e1a6d8}} 
\index{Types@{Types}!E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+N\+O\+C\+A\+C\+HE@{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+N\+O\+C\+A\+C\+HE}}
\index{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+N\+O\+C\+A\+C\+HE@{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+N\+O\+C\+A\+C\+HE}!Types@{Types}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+N\+O\+C\+A\+C\+HE}{EINA\_PREFETCH\_NOCACHE}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+N\+O\+C\+A\+C\+HE(\begin{DoxyParamCaption}\item[{}]{arg }\end{DoxyParamCaption})}



Hints that the pointer  needs to be pre-\/fetched into cache This hints to the compiler to probably issue a prefetch command for the memory address {\ttfamily arg} and ensure it goes into just the closest(l1) cache. 

For just writing to an address look at E\+I\+N\+A\+\_\+\+P\+R\+E\+F\+E\+T\+C\+H\+\_\+\+W\+R\+I\+T\+E\+\_\+\+N\+O\+C\+A\+C\+H\+E(). Note that the pointer {\ttfamily arg} does not have to be a valid pointer and will not cause any exceptions (like segfaults) if it is invalid. \begin{DoxySince}{Since}
1.\+19 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__Types__Group_ga7c1b6f81660b4e30516169e9e7d3261c}\label{group__Eina__Types__Group_ga7c1b6f81660b4e30516169e9e7d3261c}} 
\index{Types@{Types}!E\+I\+N\+A\+\_\+\+C\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+L\+E\+N\+G\+TH@{E\+I\+N\+A\+\_\+\+C\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+L\+E\+N\+G\+TH}}
\index{E\+I\+N\+A\+\_\+\+C\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+L\+E\+N\+G\+TH@{E\+I\+N\+A\+\_\+\+C\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+L\+E\+N\+G\+TH}!Types@{Types}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+C\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+L\+E\+N\+G\+TH}{EINA\_C\_ARRAY\_LENGTH}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+C\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+L\+E\+N\+G\+TH(\begin{DoxyParamCaption}\item[{}]{arr }\end{DoxyParamCaption})~(sizeof(arr) / sizeof((arr)\mbox{[}0\mbox{]}))}



Macro to return the array length of a standard c array. 

For example\+: int foo\mbox{[}\mbox{]} = \{ 0, 1, 2, 3 \}; would return 4 and not 4 $\ast$ sizeof(int). \begin{DoxySince}{Since}
1.\+2.\+0 
\end{DoxySince}
\begin{Desc}
\item[Examples\+: ]\par
\mbox{\hyperlink{complex-types-server_8c-example}{complex-\/types-\/server.\+c}}, \mbox{\hyperlink{eina_value_02_8c-example}{eina\+\_\+value\+\_\+02.\+c}}, and \mbox{\hyperlink{ephysics_logo_8c-example}{ephysics\+\_\+logo.\+c}}.\end{Desc}
\mbox{\Hypertarget{group__Eina__Types__Group_ga3de16e04fea27e3d67eef8cb25ee0789}\label{group__Eina__Types__Group_ga3de16e04fea27e3d67eef8cb25ee0789}} 
\index{Types@{Types}!E\+I\+N\+A\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+E\+Q\+U\+AL@{E\+I\+N\+A\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+E\+Q\+U\+AL}}
\index{E\+I\+N\+A\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+E\+Q\+U\+AL@{E\+I\+N\+A\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+E\+Q\+U\+AL}!Types@{Types}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+E\+Q\+U\+AL}{EINA\_DOUBLE\_EQUAL}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+E\+Q\+U\+AL(\begin{DoxyParamCaption}\item[{}]{x,  }\item[{}]{y }\end{DoxyParamCaption})~(fabs((x) -\/ (y)) $<$= (2.\+2204460492503131e-\/16) $\ast$ fabs((x)))}



Macro to compare 2 double floating point values and deal with precision loss issues. 

\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}


\subsection{Typedef Documentation}
\mbox{\Hypertarget{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}\label{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}} 
\index{Types@{Types}!Eina\+\_\+\+Bool@{Eina\+\_\+\+Bool}}
\index{Eina\+\_\+\+Bool@{Eina\+\_\+\+Bool}!Types@{Types}}
\subsubsection{\texorpdfstring{Eina\+\_\+\+Bool}{Eina\_Bool}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}



Type to mimic a boolean. 

\begin{DoxyNote}{Note}
it differs from stdbool.\+h as this is defined as an unsigned char to make it usable by bitfields (Eina\+\_\+\+Bool name\+:1) and also take as few bytes as possible. 
\end{DoxyNote}
\mbox{\Hypertarget{group__Eina__Types__Group_ga1b31ffcc0d46eed63a2381c5a011b486}\label{group__Eina__Types__Group_ga1b31ffcc0d46eed63a2381c5a011b486}} 
\index{Types@{Types}!Eina\+\_\+\+Compare\+\_\+\+Cb@{Eina\+\_\+\+Compare\+\_\+\+Cb}}
\index{Eina\+\_\+\+Compare\+\_\+\+Cb@{Eina\+\_\+\+Compare\+\_\+\+Cb}!Types@{Types}}
\subsubsection{\texorpdfstring{Eina\+\_\+\+Compare\+\_\+\+Cb}{Eina\_Compare\_Cb}}
{\footnotesize\ttfamily Eina\+\_\+\+Compare\+\_\+\+Cb}



Function used in functions using sorting. 

It compares {\ttfamily data1} and {\ttfamily data2}. If {\ttfamily data1} is \textquotesingle{}less\textquotesingle{} than {\ttfamily data2}, -\/1 must be returned, if it is \textquotesingle{}greater\textquotesingle{}, 1 must be returned, and if they are equal, 0 must be returned. \begin{Desc}
\item[Examples\+: ]\par
\mbox{\hyperlink{eina_list_02_8c-example}{eina\+\_\+list\+\_\+02.\+c}}.\end{Desc}
\mbox{\Hypertarget{group__Eina__Types__Group_ga7331c88690f77b217b19cc5678cbdc24}\label{group__Eina__Types__Group_ga7331c88690f77b217b19cc5678cbdc24}} 
\index{Types@{Types}!Eina\+\_\+\+Random\+\_\+\+Cb@{Eina\+\_\+\+Random\+\_\+\+Cb}}
\index{Eina\+\_\+\+Random\+\_\+\+Cb@{Eina\+\_\+\+Random\+\_\+\+Cb}!Types@{Types}}
\subsubsection{\texorpdfstring{Eina\+\_\+\+Random\+\_\+\+Cb}{Eina\_Random\_Cb}}
{\footnotesize\ttfamily Eina\+\_\+\+Random\+\_\+\+Cb}



Function used in shuffling functions. 

An integer between min and max inclusive must be returned.

\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
