\doxysubsection{Tools}
\hypertarget{group__Eina__Tools__Group}{}\label{group__Eina__Tools__Group}\index{Tools@{Tools}}
\doxysubsubsubsection*{Topics}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Eina__Benchmark__Group}{Benchmark}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Bezier__Group}{Bezier Curve}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Convert__Group}{Convert}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Counter__Group}{Counter}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Cow__Group}{Copy On Write}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Cpu__Group}{Cpu}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Error__Group}{Error}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__File__Group}{File}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Lalloc__Group}{Lazy allocator}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Lock__Group}{Lock}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Log__Group}{Log}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Magic__Group}{Magic}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Memory__Pool__Group}{Memory Pool}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Module__Group}{Module}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Prefix__Group}{Prefix}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Rectangle__Group}{Rectangle}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Safety__Checks__Group}{Safety Checks}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Simple__XML__Group}{Simple\+\_\+\+XML}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__String__Group}{String}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Thread__Group}{Thread}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Xattr__Group}{Xattrs}}
\begin{DoxyCompactList}\small\item\em \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{group__Eina__Tools__Group_ga67d74b61939da29afc78e0100a2bb534}{EINA\+\_\+\+FLT\+\_\+\+EQ}}(a,  b)~(!!(fabsf((float)(a) -\/ (float)(b)) $<$= FLT\+\_\+\+EPSILON))
\begin{DoxyCompactList}\small\item\em Safe comparison of float. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Tools__Group_gad4eb3fc9655b9ceb274dd8b0a7baa5d7}{EINA\+\_\+\+FLT\+\_\+\+NONZERO}}(a)~(!!(fpclassify((float)(a)) != FP\+\_\+\+ZERO))
\begin{DoxyCompactList}\small\item\em Determines if a float is not zero. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Tools__Group_ga6bee37244b675b83d6a4f044a7a3d1e8}{EINA\+\_\+\+DBL\+\_\+\+EQ}}(a,  b)~(!!(fabs((double)(a) -\/ (double)(b)) $<$= DBL\+\_\+\+EPSILON))
\begin{DoxyCompactList}\small\item\em Safe comparison of double. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Tools__Group_gacff7543938fee3ca0ad4caf78bb561bd}{EINA\+\_\+\+DBL\+\_\+\+NONZERO}}(a)~(!!(fpclassify((double)(a)) != FP\+\_\+\+ZERO))
\begin{DoxyCompactList}\small\item\em Determines if a double is not zero. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} const char \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__Eina__Tools__Group_ga358b0d604ad29672a7ae31a4ce975a40}{eina\+\_\+environment\+\_\+home\+\_\+get}} (void)
\begin{DoxyCompactList}\small\item\em Returns the content of the environment referred by HOME on this system. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} const char \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__Eina__Tools__Group_gad2748011998106088d3a54e3d1115715}{eina\+\_\+environment\+\_\+tmp\+\_\+get}} (void)
\begin{DoxyCompactList}\small\item\em Returns the content of the environment referred as TMPDIR on this system. \end{DoxyCompactList}\item 
static \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Tools__Group_ga2eff9dff88bf972e43961d1a746fe7c4}{eina\+\_\+dbl\+\_\+exact}} (double a, double b)
\begin{DoxyCompactList}\small\item\em Warningless comparison of doubles using ==. \end{DoxyCompactList}\item 
static \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Tools__Group_ga067b67f9f7a9c83f26abd15a45203c33}{eina\+\_\+flt\+\_\+exact}} (float a, float b)
\begin{DoxyCompactList}\small\item\em Warningless comparison of floats using ==. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsubsection{Detailed Description}


Eina tools aims to help application development, providing ways to make it safer, log errors, manage memory more efficiently and more.

For more information refer to the \doxysectlink{tutorial_eina_string}{string example}{0}. 

\doxysubsubsection{Macro Definition Documentation}
\Hypertarget{group__Eina__Tools__Group_ga67d74b61939da29afc78e0100a2bb534}\label{group__Eina__Tools__Group_ga67d74b61939da29afc78e0100a2bb534} 
\index{Tools@{Tools}!EINA\_FLT\_EQ@{EINA\_FLT\_EQ}}
\index{EINA\_FLT\_EQ@{EINA\_FLT\_EQ}!Tools@{Tools}}
\doxysubsubsubsection{\texorpdfstring{EINA\_FLT\_EQ}{EINA\_FLT\_EQ}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+FLT\+\_\+\+EQ(\begin{DoxyParamCaption}\item[{}]{a,  }\item[{}]{b }\end{DoxyParamCaption})~(!!(fabsf((float)(a) -\/ (float)(b)) $<$= FLT\+\_\+\+EPSILON))}



Safe comparison of float. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em a} & First member to compare \\
\hline
\mbox{\texttt{ in}}  & {\em b} & Second member to compare \\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+19
\end{DoxySince}
\begin{DoxyReturn}{Returns}
{\ttfamily true} if two floats match 
\end{DoxyReturn}
\Hypertarget{group__Eina__Tools__Group_gad4eb3fc9655b9ceb274dd8b0a7baa5d7}\label{group__Eina__Tools__Group_gad4eb3fc9655b9ceb274dd8b0a7baa5d7} 
\index{Tools@{Tools}!EINA\_FLT\_NONZERO@{EINA\_FLT\_NONZERO}}
\index{EINA\_FLT\_NONZERO@{EINA\_FLT\_NONZERO}!Tools@{Tools}}
\doxysubsubsubsection{\texorpdfstring{EINA\_FLT\_NONZERO}{EINA\_FLT\_NONZERO}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+FLT\+\_\+\+NONZERO(\begin{DoxyParamCaption}\item[{}]{a }\end{DoxyParamCaption})~(!!(fpclassify((float)(a)) != FP\+\_\+\+ZERO))}



Determines if a float is not zero. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em a} & The float\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily true} if float is not zero 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+19 
\end{DoxySince}
\Hypertarget{group__Eina__Tools__Group_ga6bee37244b675b83d6a4f044a7a3d1e8}\label{group__Eina__Tools__Group_ga6bee37244b675b83d6a4f044a7a3d1e8} 
\index{Tools@{Tools}!EINA\_DBL\_EQ@{EINA\_DBL\_EQ}}
\index{EINA\_DBL\_EQ@{EINA\_DBL\_EQ}!Tools@{Tools}}
\doxysubsubsubsection{\texorpdfstring{EINA\_DBL\_EQ}{EINA\_DBL\_EQ}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+DBL\+\_\+\+EQ(\begin{DoxyParamCaption}\item[{}]{a,  }\item[{}]{b }\end{DoxyParamCaption})~(!!(fabs((double)(a) -\/ (double)(b)) $<$= DBL\+\_\+\+EPSILON))}



Safe comparison of double. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em a} & First member to compare \\
\hline
\mbox{\texttt{ in}}  & {\em b} & Second member to compare \\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+19
\end{DoxySince}
\begin{DoxyReturn}{Returns}
{\ttfamily true} if two double match 
\end{DoxyReturn}
\begin{Desc}
\item[Examples]\par
\mbox{\hyperlink{bg_example_03_8c-example}{bg\+\_\+example\+\_\+03.\+c}}, \mbox{\hyperlink{client_8c-example}{client.\+c}}, \mbox{\hyperlink{edje-basic_8c-example}{edje-\/basic.\+c}}, \mbox{\hyperlink{evas-box_8c-example}{evas-\/box.\+c}}, \mbox{\hyperlink{progressbar_example_8c-example}{progressbar\+\_\+example.\+c}}, and \mbox{\hyperlink{transit_example_03_8c-example}{transit\+\_\+example\+\_\+03.\+c}}.\end{Desc}


Referenced by \mbox{\hyperlink{group__Ecore__Animator__Group_ga2c7aa7e621cd68562519066ad87a3fa1}{ecore\+\_\+animator\+\_\+frametime\+\_\+set()}}, \mbox{\hyperlink{group__Ecore__FB__Group_ga1dfeb0b21122196a47f2c703735c8f0a}{ecore\+\_\+fb\+\_\+input\+\_\+device\+\_\+threshold\+\_\+click\+\_\+set()}}, \mbox{\hyperlink{group__Ecore__Thread__Group_ga78f34d8bd0806f68a56105662c54e202}{ecore\+\_\+thread\+\_\+global\+\_\+data\+\_\+wait()}}, \mbox{\hyperlink{group__Edje__Text__Entry_gaf93fcbff42bd2c7e23a180cf8bbdc98e}{edje\+\_\+password\+\_\+show\+\_\+last\+\_\+timeout\+\_\+set()}}, \mbox{\hyperlink{group__Eina__Bezier__Group_ga1bea2c1cc1b9acd9dee6edf8a8c2750d}{eina\+\_\+bezier\+\_\+on\+\_\+interval()}}, \mbox{\hyperlink{group__Eina__Bezier__Group_ga83fe28eed613593cc171665d33a2765d}{eina\+\_\+bezier\+\_\+t\+\_\+at()}}, \mbox{\hyperlink{group__Eina__Matrix2__Group_ga8a1fc0aad467b6c7eb925e67f504275e}{eina\+\_\+matrix2\+\_\+inverse()}}, \mbox{\hyperlink{group__Eina__Matrix2__Group_gad9f0c073bb960377977ec30243a58d4c}{eina\+\_\+matrix2\+\_\+type\+\_\+get()}}, \mbox{\hyperlink{group__Eina__Matrix3__Group_ga900246877eae4cba9a5fb2695871e641}{eina\+\_\+matrix3\+\_\+equal()}}, \mbox{\hyperlink{group__Eina__Matrix3__Group_ga89c76a05ef4a317d6e01ac96132177f4}{eina\+\_\+matrix3\+\_\+inverse()}}, \mbox{\hyperlink{group__Eina__Matrix3__Group_ga447b4ceb098a9598d5de30cf17be3c81}{eina\+\_\+matrix3\+\_\+point\+\_\+transform()}}, \mbox{\hyperlink{group__Eina__Matrix3__Group_gaf3264d9057d9043d45f7a67b5f5db512}{eina\+\_\+matrix3\+\_\+quad\+\_\+square\+\_\+map()}}, \mbox{\hyperlink{group__Eina__Matrix3__Group_ga7d4b45ef30215c96bbb893e49bccce54}{eina\+\_\+matrix3\+\_\+square\+\_\+quad\+\_\+map()}}, \mbox{\hyperlink{group__Eina__Matrix3__Group_ga941fd9c576e97dd5d11aacebbece47d5}{eina\+\_\+matrix3\+\_\+type\+\_\+get()}}, \mbox{\hyperlink{group__Eina__Quaternion__Group_gaf0d8405b84382faefe7771a8b590bc2c}{eina\+\_\+matrix4\+\_\+quaternion\+\_\+to()}}, \mbox{\hyperlink{group__Eina__Matrix4__Group_ga4272770d113643e31273c9b18142477d}{eina\+\_\+matrix4\+\_\+type\+\_\+get()}}, \mbox{\hyperlink{group__Eina__Quaternion__Group_gae7793161dce0104682fd11240b91c1d2}{eina\+\_\+quaternion\+\_\+homogeneous\+\_\+regulate()}}, \mbox{\hyperlink{group__Eina__Quaternion__Group_gaf1258ed41d7e73438c5d07e0e149483a}{eina\+\_\+quaternion\+\_\+lerp()}}, \mbox{\hyperlink{group__Eina__Quaternion__Group_ga6fbc748841a73b772fb3ef2835c0e88a}{eina\+\_\+quaternion\+\_\+matrix4\+\_\+to()}}, \mbox{\hyperlink{group__Eina__Quaternion__Group_ga2e6bf084c7c50bff924483e6bd4a8110}{eina\+\_\+quaternion\+\_\+nlerp()}}, \mbox{\hyperlink{group__Eina__Quaternion__Group_ga524c883b4a85e59dbdf436976e549bb1}{eina\+\_\+quaternion\+\_\+slerp()}}, \mbox{\hyperlink{group__Elm__Password__last__show_gab8d4cf76269cb8e425da43d341bcf7bf}{elm\+\_\+config\+\_\+password\+\_\+show\+\_\+last\+\_\+timeout\+\_\+set()}}, \mbox{\hyperlink{group__Elm__Scaling_ga6f37a2609d6a4559122ad54e69c63814}{elm\+\_\+config\+\_\+scale\+\_\+set()}}, \mbox{\hyperlink{group__Elm__Engine_ga68eb46ace488739412de2ef2b95f25f6}{elm\+\_\+config\+\_\+transition\+\_\+duration\+\_\+factor\+\_\+set()}}, \mbox{\hyperlink{group__Elm__Progressbar_gae3196e1ec29c6b129f47d23ef1d09e4a}{elm\+\_\+progressbar\+\_\+part\+\_\+value\+\_\+set()}}, \mbox{\hyperlink{group__Elm__Slider_ga5368bb23df3d5253ab388195812e792b}{elm\+\_\+slider\+\_\+min\+\_\+max\+\_\+set()}}, \mbox{\hyperlink{group__Elm__Slider_ga66c822ea8948bd5c8bcdb969102a63ee}{elm\+\_\+slider\+\_\+step\+\_\+set()}}, \mbox{\hyperlink{group__Elm__Slider_ga74e14a46f516a1505242bddc434f938d}{elm\+\_\+slider\+\_\+value\+\_\+set()}}, \mbox{\hyperlink{group__Elm__Spinner__Group_ga5faa31fa6b9b5ccd0b3657ac013e641c}{elm\+\_\+spinner\+\_\+special\+\_\+value\+\_\+del()}}, \mbox{\hyperlink{group__Elm__Spinner__Group_gaf706c471544ffff0103bacf80b7d0176}{elm\+\_\+spinner\+\_\+special\+\_\+value\+\_\+get()}}, \mbox{\hyperlink{group__Elm__Textpath__Group_ga483152fb754cbab539413a21fb8fb6f1}{elm\+\_\+textpath\+\_\+circle\+\_\+set()}}, \mbox{\hyperlink{group__Elm__Transit_ga540de4964ea1ea1fa4fc52fde92f714c}{elm\+\_\+transit\+\_\+paused\+\_\+get()}}, \mbox{\hyperlink{group__Elm__Transit_ga639567086a6116ae2022ab9d6e17967b}{elm\+\_\+transit\+\_\+paused\+\_\+set()}}, and \mbox{\hyperlink{group__Evas__Object__Textblock__Group_ga1a288e3cdd86a8f7c5684457910eb050}{evas\+\_\+object\+\_\+textblock\+\_\+valign\+\_\+set()}}.

\Hypertarget{group__Eina__Tools__Group_gacff7543938fee3ca0ad4caf78bb561bd}\label{group__Eina__Tools__Group_gacff7543938fee3ca0ad4caf78bb561bd} 
\index{Tools@{Tools}!EINA\_DBL\_NONZERO@{EINA\_DBL\_NONZERO}}
\index{EINA\_DBL\_NONZERO@{EINA\_DBL\_NONZERO}!Tools@{Tools}}
\doxysubsubsubsection{\texorpdfstring{EINA\_DBL\_NONZERO}{EINA\_DBL\_NONZERO}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+DBL\+\_\+\+NONZERO(\begin{DoxyParamCaption}\item[{}]{a }\end{DoxyParamCaption})~(!!(fpclassify((double)(a)) != FP\+\_\+\+ZERO))}



Determines if a double is not zero. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em a} & The double\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily true} if double is not zero 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+19 
\end{DoxySince}


\doxysubsubsection{Function Documentation}
\Hypertarget{group__Eina__Tools__Group_ga358b0d604ad29672a7ae31a4ce975a40}\label{group__Eina__Tools__Group_ga358b0d604ad29672a7ae31a4ce975a40} 
\index{Tools@{Tools}!eina\_environment\_home\_get@{eina\_environment\_home\_get}}
\index{eina\_environment\_home\_get@{eina\_environment\_home\_get}!Tools@{Tools}}
\doxysubsubsubsection{\texorpdfstring{eina\_environment\_home\_get()}{eina\_environment\_home\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} const char \texorpdfstring{$\ast$}{*} eina\+\_\+environment\+\_\+home\+\_\+get (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Returns the content of the environment referred by HOME on this system. 

\begin{DoxyReturn}{Returns}
A temporary string to the content referred by HOME on this system.
\end{DoxyReturn}
\begin{DoxyNote}{Note}
The result of this call is highly system dependent and you better use it instead of the naive getenv("{}\+HOME"{}).
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+15 
\end{DoxySince}


Referenced by \mbox{\hyperlink{group__Ecore__File__Group_gab01d35474ff7390e41e19609712f6923}{ecore\+\_\+file\+\_\+app\+\_\+exe\+\_\+get()}}, \mbox{\hyperlink{group__Elm__Theme_gab2a2a47fff7c32691e308c7c9c45aba7}{elm\+\_\+theme\+\_\+list\+\_\+item\+\_\+path\+\_\+get()}}, \mbox{\hyperlink{group__Elm__Theme_ga02474d8fd11ce6d00b9790c971509f5b}{elm\+\_\+theme\+\_\+name\+\_\+available\+\_\+list\+\_\+new()}}, \mbox{\hyperlink{group__Elm__Theme_ga833da0d6203b1aeceb51ca08883b5304}{elm\+\_\+theme\+\_\+user\+\_\+dir\+\_\+get()}}, and \mbox{\hyperlink{group__Ethumb__Basics_ga3faacfc1fcfc59f18caa6696996633c8}{ethumb\+\_\+init()}}.

\Hypertarget{group__Eina__Tools__Group_gad2748011998106088d3a54e3d1115715}\label{group__Eina__Tools__Group_gad2748011998106088d3a54e3d1115715} 
\index{Tools@{Tools}!eina\_environment\_tmp\_get@{eina\_environment\_tmp\_get}}
\index{eina\_environment\_tmp\_get@{eina\_environment\_tmp\_get}!Tools@{Tools}}
\doxysubsubsubsection{\texorpdfstring{eina\_environment\_tmp\_get()}{eina\_environment\_tmp\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} const char \texorpdfstring{$\ast$}{*} eina\+\_\+environment\+\_\+tmp\+\_\+get (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Returns the content of the environment referred as TMPDIR on this system. 

\begin{DoxyReturn}{Returns}
A temporary string to the content referred by TMPDIR on this system.
\end{DoxyReturn}
\begin{DoxyNote}{Note}
The result of this call is highly system dependent and you better use it instead of the naive getenv("{}\+TMPDIR"{}).
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+15 
\end{DoxySince}


Referenced by \mbox{\hyperlink{group__Ecore__Con__Server__Group_ga06c138783b4658b9e7304b5e3cbb0bb3}{ecore\+\_\+con\+\_\+local\+\_\+path\+\_\+new()}}, \mbox{\hyperlink{group__Eina__File__Group_gaa4571fad8d5e94f3a1936bb09beae16c}{eina\+\_\+file\+\_\+mkdtemp()}}, and \mbox{\hyperlink{group__Eina__File__Group_gac77efa39c12ba6880a5bbdca004080fb}{eina\+\_\+file\+\_\+mkstemp()}}.

\Hypertarget{group__Eina__Tools__Group_ga2eff9dff88bf972e43961d1a746fe7c4}\label{group__Eina__Tools__Group_ga2eff9dff88bf972e43961d1a746fe7c4} 
\index{Tools@{Tools}!eina\_dbl\_exact@{eina\_dbl\_exact}}
\index{eina\_dbl\_exact@{eina\_dbl\_exact}!Tools@{Tools}}
\doxysubsubsubsection{\texorpdfstring{eina\_dbl\_exact()}{eina\_dbl\_exact()}}
{\footnotesize\ttfamily static \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+dbl\+\_\+exact (\begin{DoxyParamCaption}\item[{double}]{a,  }\item[{double}]{b }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Warningless comparison of doubles using ==. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em a} & First member to compare \\
\hline
\mbox{\texttt{ in}}  & {\em b} & Second member to compare\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily true} if two doubles match 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+19 
\end{DoxySince}
\Hypertarget{group__Eina__Tools__Group_ga067b67f9f7a9c83f26abd15a45203c33}\label{group__Eina__Tools__Group_ga067b67f9f7a9c83f26abd15a45203c33} 
\index{Tools@{Tools}!eina\_flt\_exact@{eina\_flt\_exact}}
\index{eina\_flt\_exact@{eina\_flt\_exact}!Tools@{Tools}}
\doxysubsubsubsection{\texorpdfstring{eina\_flt\_exact()}{eina\_flt\_exact()}}
{\footnotesize\ttfamily static \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+flt\+\_\+exact (\begin{DoxyParamCaption}\item[{float}]{a,  }\item[{float}]{b }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Warningless comparison of floats using ==. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em a} & First member to compare \\
\hline
\mbox{\texttt{ in}}  & {\em b} & Second member to compare\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily true} if two floats match 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+19 
\end{DoxySince}
\input{group__Eina__Benchmark__Group}
\input{group__Eina__Bezier__Group}
\input{group__Eina__Convert__Group}
\input{group__Eina__Counter__Group}
\input{group__Eina__Cow__Group}
\input{group__Eina__Cpu__Group}
\input{group__Eina__Error__Group}
\input{group__Eina__File__Group}
\input{group__Eina__Lalloc__Group}
\input{group__Eina__Lock__Group}
\input{group__Eina__Log__Group}
\input{group__Eina__Magic__Group}
\input{group__Eina__Memory__Pool__Group}
\input{group__Eina__Module__Group}
\input{group__Eina__Prefix__Group}
\input{group__Eina__Rectangle__Group}
\input{group__Eina__Safety__Checks__Group}
\input{group__Eina__Simple__XML__Group}
\input{group__Eina__String__Group}
\input{group__Eina__Thread__Group}
\input{group__Eina__Xattr__Group}
