\hypertarget{group__Eina__Data__Types__Group}{}\section{Data Types}
\label{group__Eina__Data__Types__Group}\index{Data Types@{Data Types}}


Eina provides an easy to use and optimized data types and structures.  


\subsection*{Modules}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Eina__Content__Access__Group}{Content Access}}
\begin{DoxyCompactList}\small\item\em Eina provides a uniform way to access elements of a container, either sequential or indexed. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Containers__Group}{Containers}}
\begin{DoxyCompactList}\small\item\em Data types that contains other types. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Binary__Buffer__Group}{Binary Buffer}}
\begin{DoxyCompactList}\small\item\em These functions provide string buffer management. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Binshare__Group}{Binary Share}}
\begin{DoxyCompactList}\small\item\em This group discusses the functions that allow you to store one copy of an object, and use it throughout your program. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Fp__Group}{Fp}}
\begin{DoxyCompactList}\small\item\em Floating point numbers data type management. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Matrix__Group}{Matrix}}
\begin{DoxyCompactList}\small\item\em Eina includes a family of matrix types of different dimension sizes and underlying data types. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Quad__Group}{Quadrangles}}
\begin{DoxyCompactList}\small\item\em Quadrangles operations. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Refcount}{References counting}}
\begin{DoxyCompactList}\small\item\em Small macro that simplify references counting. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Slice__Group}{Memory Slices}}
\begin{DoxyCompactList}\small\item\em These functions provide memory slices in read-\/only and read-\/write forms. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__String__Buffer__Group}{String Buffer}}
\begin{DoxyCompactList}\small\item\em These functions provide string buffer management. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Stringshare__Group}{Stringshare}}
\begin{DoxyCompactList}\small\item\em These functions allow you to store a single copy of a string, and use in multiple places throughout your program. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Tiler__Group}{Tiler}}
\item 
\mbox{\hyperlink{group__Eina__Unicode__String__Buffer__Group}{Unicode String Buffer}}
\begin{DoxyCompactList}\small\item\em These functions provide unicode string buffer management. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__UStringshare__Group}{Unicode Stringshare}}
\begin{DoxyCompactList}\small\item\em These functions allow you to store one copy of a string, and use it throughout your program. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Unicode__String}{Unicode String}}
\begin{DoxyCompactList}\small\item\em These functions provide basic unicode string handling. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \+\_\+\+Eina\+\_\+\+Quad\+Tree \mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}}
\begin{DoxyCompactList}\small\item\em A quadtree is a data structure where each node contains four child nodes. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}\label{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}} 
typedef struct \+\_\+\+Eina\+\_\+\+Quad\+Tree\+\_\+\+Item \mbox{\hyperlink{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}{Eina\+\_\+\+Quad\+Tree\+\_\+\+Item}}
\begin{DoxyCompactList}\small\item\em A quadtree item is a holder for (void $\ast$) data items inside a quadtree, that includes some state tracking for lifecycle management and optimization purposes. \end{DoxyCompactList}\item 
typedef Eina\+\_\+\+Quad\+\_\+\+Direction($\ast$ \mbox{\hyperlink{group__Eina__Data__Types__Group_gab47b57a0613e476d8c5fa250fe256950}{Eina\+\_\+\+Quad\+\_\+\+Callback}}) (const void $\ast$object, size\+\_\+t middle)
\begin{DoxyCompactList}\small\item\em Signature for a callback routine used to determine the location of an object within a quadtree. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{group__Eina__Data__Types__Group_gaa00a32604b2f5fdb39347a320395b795}\label{group__Eina__Data__Types__Group_gaa00a32604b2f5fdb39347a320395b795}} 
enum {\bfseries Eina\+\_\+\+Quad\+\_\+\+Direction} \{ \newline
{\bfseries E\+I\+N\+A\+\_\+\+Q\+U\+A\+D\+\_\+\+L\+E\+FT}, 
\newline
{\bfseries E\+I\+N\+A\+\_\+\+Q\+U\+A\+D\+\_\+\+R\+I\+G\+HT}, 
\newline
{\bfseries E\+I\+N\+A\+\_\+\+Q\+U\+A\+D\+\_\+\+B\+O\+TH}
 \}
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}} $\ast$ \mbox{\hyperlink{group__Eina__Data__Types__Group_gabc25c0ce9a7ae4d1d7c2c7ef09c58a91}{eina\+\_\+quadtree\+\_\+new}} (size\+\_\+t w, size\+\_\+t h, \mbox{\hyperlink{group__Eina__Data__Types__Group_gab47b57a0613e476d8c5fa250fe256950}{Eina\+\_\+\+Quad\+\_\+\+Callback}} vertical, \mbox{\hyperlink{group__Eina__Data__Types__Group_gab47b57a0613e476d8c5fa250fe256950}{Eina\+\_\+\+Quad\+\_\+\+Callback}} horizontal)
\begin{DoxyCompactList}\small\item\em Constructs a quadtree object. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Data__Types__Group_ga24d81ad4893b58331a67fce918d7761d}{eina\+\_\+quadtree\+\_\+free}} (\mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}} $\ast$q)
\begin{DoxyCompactList}\small\item\em Destructs quadtree and its data. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Data__Types__Group_gae77d88ea0be35b4c32ec4b2a2785fca2}{eina\+\_\+quadtree\+\_\+resize}} (\mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}} $\ast$q, size\+\_\+t w, size\+\_\+t h)
\begin{DoxyCompactList}\small\item\em Changes the width and height of the quadtree. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Data__Types__Group_gae6b6837e5e91b9edebd295e1c2b08381}{eina\+\_\+quadtree\+\_\+cycle}} (\mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}} $\ast$q)
\begin{DoxyCompactList}\small\item\em Sets the quadtree\textquotesingle{}s index to 0. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Data__Types__Group_gaca47c0dac2b200b8dddc281289a0f975}{eina\+\_\+quadtree\+\_\+increase}} (\mbox{\hyperlink{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}{Eina\+\_\+\+Quad\+Tree\+\_\+\+Item}} $\ast$object)
\begin{DoxyCompactList}\small\item\em Increases the index of the quadtree item by one. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}{Eina\+\_\+\+Quad\+Tree\+\_\+\+Item}} $\ast$ \mbox{\hyperlink{group__Eina__Data__Types__Group_ga271d86fd5fb7eb997c6e08ae3e2002f3}{eina\+\_\+quadtree\+\_\+add}} (\mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}} $\ast$q, const void $\ast$object)
\begin{DoxyCompactList}\small\item\em Inserts a data object into the quadtree. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Data__Types__Group_ga69a91088bb1232d49ac94b7cbf7ea086}{eina\+\_\+quadtree\+\_\+del}} (\mbox{\hyperlink{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}{Eina\+\_\+\+Quad\+Tree\+\_\+\+Item}} $\ast$object)
\begin{DoxyCompactList}\small\item\em Deletes a given quadtree item from the quadtree. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Data__Types__Group_gaf042443ebcdca9e131d9716084e478dc}{eina\+\_\+quadtree\+\_\+change}} (\mbox{\hyperlink{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}{Eina\+\_\+\+Quad\+Tree\+\_\+\+Item}} $\ast$object)
\begin{DoxyCompactList}\small\item\em Marks an object within the quadtree as needing changed. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Data__Types__Group_ga61253fbf3a4bac2c58ba412fcd490697}{eina\+\_\+quadtree\+\_\+hide}} (\mbox{\hyperlink{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}{Eina\+\_\+\+Quad\+Tree\+\_\+\+Item}} $\ast$object)
\begin{DoxyCompactList}\small\item\em Sets {\ttfamily object} invisible. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Data__Types__Group_gafcfcffdc697a600e3d01f2d008019a79}{eina\+\_\+quadtree\+\_\+show}} (\mbox{\hyperlink{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}{Eina\+\_\+\+Quad\+Tree\+\_\+\+Item}} $\ast$object)
\begin{DoxyCompactList}\small\item\em Sets {\ttfamily object} to visible. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Inline__List__Group_gad93973c87f867f249482e936797096ad}{Eina\+\_\+\+Inlist}} $\ast$ \mbox{\hyperlink{group__Eina__Data__Types__Group_gadaa1af3b357ad2987db78833c2895a14}{eina\+\_\+quadtree\+\_\+collide}} (\mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}} $\ast$q, int x, int y, int w, int h)
\begin{DoxyCompactList}\small\item\em Retrieves items in quadtree inside the target geometry. \end{DoxyCompactList}\item 
void $\ast$ \mbox{\hyperlink{group__Eina__Data__Types__Group_gaf504487bb848586a9a81f05d64883ebc}{eina\+\_\+quadtree\+\_\+object}} (\mbox{\hyperlink{group__Eina__Inline__List__Group_gad93973c87f867f249482e936797096ad}{Eina\+\_\+\+Inlist}} $\ast$list)
\begin{DoxyCompactList}\small\item\em Retrieves the quadtree item\textquotesingle{}s data for the given inline list. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Eina provides an easy to use and optimized data types and structures. 

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


\subsection{Typedef Documentation}
\mbox{\Hypertarget{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}\label{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}} 
\index{Data Types@{Data Types}!Eina\+\_\+\+Quad\+Tree@{Eina\+\_\+\+Quad\+Tree}}
\index{Eina\+\_\+\+Quad\+Tree@{Eina\+\_\+\+Quad\+Tree}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{Eina\+\_\+\+Quad\+Tree}{Eina\_QuadTree}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}}}



A quadtree is a data structure where each node contains four child nodes. 

It can be used to partition 2D spaces through subdivision into quadrants. \mbox{\Hypertarget{group__Eina__Data__Types__Group_gab47b57a0613e476d8c5fa250fe256950}\label{group__Eina__Data__Types__Group_gab47b57a0613e476d8c5fa250fe256950}} 
\index{Data Types@{Data Types}!Eina\+\_\+\+Quad\+\_\+\+Callback@{Eina\+\_\+\+Quad\+\_\+\+Callback}}
\index{Eina\+\_\+\+Quad\+\_\+\+Callback@{Eina\+\_\+\+Quad\+\_\+\+Callback}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{Eina\+\_\+\+Quad\+\_\+\+Callback}{Eina\_Quad\_Callback}}
{\footnotesize\ttfamily Eina\+\_\+\+Quad\+\_\+\+Callback}



Signature for a callback routine used to determine the location of an object within a quadtree. 

These are used in sorting by determining where in the tree the given data {\ttfamily object} belongs, using {\ttfamily middle} as the division line for the two halves of the space. 

\subsection{Function Documentation}
\mbox{\Hypertarget{group__Eina__Data__Types__Group_gabc25c0ce9a7ae4d1d7c2c7ef09c58a91}\label{group__Eina__Data__Types__Group_gabc25c0ce9a7ae4d1d7c2c7ef09c58a91}} 
\index{Data Types@{Data Types}!eina\+\_\+quadtree\+\_\+new@{eina\+\_\+quadtree\+\_\+new}}
\index{eina\+\_\+quadtree\+\_\+new@{eina\+\_\+quadtree\+\_\+new}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{eina\+\_\+quadtree\+\_\+new()}{eina\_quadtree\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}}$\ast$ eina\+\_\+quadtree\+\_\+new (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{w,  }\item[{size\+\_\+t}]{h,  }\item[{\mbox{\hyperlink{group__Eina__Data__Types__Group_gab47b57a0613e476d8c5fa250fe256950}{Eina\+\_\+\+Quad\+\_\+\+Callback}}}]{vertical,  }\item[{\mbox{\hyperlink{group__Eina__Data__Types__Group_gab47b57a0613e476d8c5fa250fe256950}{Eina\+\_\+\+Quad\+\_\+\+Callback}}}]{horizontal }\end{DoxyParamCaption})}



Constructs a quadtree object. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em w} & The geometric width of the quadtree. \\
\hline
\mbox{\tt in}  & {\em h} & The geometric height of the quadtree. \\
\hline
\mbox{\tt in}  & {\em vertical} & The callback for vertical direction determination. \\
\hline
\mbox{\tt in}  & {\em horizontal} & The callback for horizontal direction determination. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The newly allocated and initialized quadtree, or {\ttfamily N\+U\+LL} on error.
\end{DoxyReturn}
The vertical and horizontal callbacks are used to assist in determining which quadrant a given data item belongs to. 

References E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+ET, and E\+I\+N\+A\+\_\+\+T\+R\+UE.

\mbox{\Hypertarget{group__Eina__Data__Types__Group_ga24d81ad4893b58331a67fce918d7761d}\label{group__Eina__Data__Types__Group_ga24d81ad4893b58331a67fce918d7761d}} 
\index{Data Types@{Data Types}!eina\+\_\+quadtree\+\_\+free@{eina\+\_\+quadtree\+\_\+free}}
\index{eina\+\_\+quadtree\+\_\+free@{eina\+\_\+quadtree\+\_\+free}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{eina\+\_\+quadtree\+\_\+free()}{eina\_quadtree\_free()}}
{\footnotesize\ttfamily void eina\+\_\+quadtree\+\_\+free (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}} $\ast$}]{q }\end{DoxyParamCaption})}



Destructs quadtree and its data. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em q} & The quadtree to be freed.\\
\hline
\end{DoxyParams}
Frees the memory for the Eina\+\_\+\+Quad\+Tree object, and any memory used by its change tracking and garbage collection internals. 

References E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+C\+O\+N\+T\+A\+I\+N\+E\+R\+\_\+\+G\+ET, E\+I\+N\+A\+\_\+\+L\+I\+S\+T\+\_\+\+F\+R\+EE, E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+ET, eina\+\_\+mempool\+\_\+free(), and eina\+\_\+trash\+\_\+pop().

\mbox{\Hypertarget{group__Eina__Data__Types__Group_gae77d88ea0be35b4c32ec4b2a2785fca2}\label{group__Eina__Data__Types__Group_gae77d88ea0be35b4c32ec4b2a2785fca2}} 
\index{Data Types@{Data Types}!eina\+\_\+quadtree\+\_\+resize@{eina\+\_\+quadtree\+\_\+resize}}
\index{eina\+\_\+quadtree\+\_\+resize@{eina\+\_\+quadtree\+\_\+resize}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{eina\+\_\+quadtree\+\_\+resize()}{eina\_quadtree\_resize()}}
{\footnotesize\ttfamily void eina\+\_\+quadtree\+\_\+resize (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}} $\ast$}]{q,  }\item[{size\+\_\+t}]{w,  }\item[{size\+\_\+t}]{h }\end{DoxyParamCaption})}



Changes the width and height of the quadtree. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em q} & The quadtree to resize. \\
\hline
\mbox{\tt in}  & {\em w} & The new geometric width for the quadtree. \\
\hline
\mbox{\tt in}  & {\em h} & The new geometric height for the quadtree.\\
\hline
\end{DoxyParams}
Sets the width and height of the quadtree, but the actual update is done lazily. 

References E\+I\+N\+A\+\_\+\+T\+R\+UE.

\mbox{\Hypertarget{group__Eina__Data__Types__Group_gae6b6837e5e91b9edebd295e1c2b08381}\label{group__Eina__Data__Types__Group_gae6b6837e5e91b9edebd295e1c2b08381}} 
\index{Data Types@{Data Types}!eina\+\_\+quadtree\+\_\+cycle@{eina\+\_\+quadtree\+\_\+cycle}}
\index{eina\+\_\+quadtree\+\_\+cycle@{eina\+\_\+quadtree\+\_\+cycle}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{eina\+\_\+quadtree\+\_\+cycle()}{eina\_quadtree\_cycle()}}
{\footnotesize\ttfamily void eina\+\_\+quadtree\+\_\+cycle (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}} $\ast$}]{q }\end{DoxyParamCaption})}



Sets the quadtree\textquotesingle{}s index to 0. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em q} & The quadtree to cycle. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__Data__Types__Group_gaca47c0dac2b200b8dddc281289a0f975}\label{group__Eina__Data__Types__Group_gaca47c0dac2b200b8dddc281289a0f975}} 
\index{Data Types@{Data Types}!eina\+\_\+quadtree\+\_\+increase@{eina\+\_\+quadtree\+\_\+increase}}
\index{eina\+\_\+quadtree\+\_\+increase@{eina\+\_\+quadtree\+\_\+increase}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{eina\+\_\+quadtree\+\_\+increase()}{eina\_quadtree\_increase()}}
{\footnotesize\ttfamily void eina\+\_\+quadtree\+\_\+increase (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}{Eina\+\_\+\+Quad\+Tree\+\_\+\+Item}} $\ast$}]{object }\end{DoxyParamCaption})}



Increases the index of the quadtree item by one. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em object} & The quadtree item to increase.\\
\hline
\end{DoxyParams}
If necessary, records that the root is no longer sorted. 

References E\+I\+N\+A\+\_\+\+F\+A\+L\+SE.

\mbox{\Hypertarget{group__Eina__Data__Types__Group_ga271d86fd5fb7eb997c6e08ae3e2002f3}\label{group__Eina__Data__Types__Group_ga271d86fd5fb7eb997c6e08ae3e2002f3}} 
\index{Data Types@{Data Types}!eina\+\_\+quadtree\+\_\+add@{eina\+\_\+quadtree\+\_\+add}}
\index{eina\+\_\+quadtree\+\_\+add@{eina\+\_\+quadtree\+\_\+add}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{eina\+\_\+quadtree\+\_\+add()}{eina\_quadtree\_add()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}{Eina\+\_\+\+Quad\+Tree\+\_\+\+Item}}$\ast$ eina\+\_\+quadtree\+\_\+add (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}} $\ast$}]{q,  }\item[{const void $\ast$}]{object }\end{DoxyParamCaption})}



Inserts a data object into the quadtree. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em q} & The quadtree to add {\ttfamily object} to. \\
\hline
\mbox{\tt in}  & {\em object} & A data object to store in the quadtree. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Pointer to the stored quadtree item.
\end{DoxyReturn}
Creates an Eina\+\_\+\+Quad\+Tree\+\_\+\+Item (or recycles one from the quadtree\textquotesingle{}s trash) and stores the data {\ttfamily object} in it, then arranges to lazily insert the item into the quadtree (i.\+e. insertion is delayed until it needs to be used.) 

References E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, eina\+\_\+inlist\+\_\+append(), E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+G\+ET, E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+ET, eina\+\_\+mempool\+\_\+malloc(), eina\+\_\+trash\+\_\+pop(), and E\+I\+N\+A\+\_\+\+T\+R\+UE.

\mbox{\Hypertarget{group__Eina__Data__Types__Group_ga69a91088bb1232d49ac94b7cbf7ea086}\label{group__Eina__Data__Types__Group_ga69a91088bb1232d49ac94b7cbf7ea086}} 
\index{Data Types@{Data Types}!eina\+\_\+quadtree\+\_\+del@{eina\+\_\+quadtree\+\_\+del}}
\index{eina\+\_\+quadtree\+\_\+del@{eina\+\_\+quadtree\+\_\+del}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{eina\+\_\+quadtree\+\_\+del()}{eina\_quadtree\_del()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+quadtree\+\_\+del (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}{Eina\+\_\+\+Quad\+Tree\+\_\+\+Item}} $\ast$}]{object }\end{DoxyParamCaption})}



Deletes a given quadtree item from the quadtree. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em object} & The quadtree item to be deleted. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} on success, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} otherwise.
\end{DoxyReturn}
Moves the item to the quadtree\textquotesingle{}s internal garbage heap for later reclamation. 

References E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, eina\+\_\+list\+\_\+remove(), E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+ET, eina\+\_\+mempool\+\_\+free(), eina\+\_\+trash\+\_\+push(), and E\+I\+N\+A\+\_\+\+T\+R\+UE.

\mbox{\Hypertarget{group__Eina__Data__Types__Group_gaf042443ebcdca9e131d9716084e478dc}\label{group__Eina__Data__Types__Group_gaf042443ebcdca9e131d9716084e478dc}} 
\index{Data Types@{Data Types}!eina\+\_\+quadtree\+\_\+change@{eina\+\_\+quadtree\+\_\+change}}
\index{eina\+\_\+quadtree\+\_\+change@{eina\+\_\+quadtree\+\_\+change}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{eina\+\_\+quadtree\+\_\+change()}{eina\_quadtree\_change()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+quadtree\+\_\+change (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}{Eina\+\_\+\+Quad\+Tree\+\_\+\+Item}} $\ast$}]{object }\end{DoxyParamCaption})}



Marks an object within the quadtree as needing changed. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em object} & The object that has changed. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} if change successfully noted, or \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} otherwise. 
\end{DoxyReturn}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, eina\+\_\+inlist\+\_\+append(), E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+G\+ET, and E\+I\+N\+A\+\_\+\+T\+R\+UE.



Referenced by eina\+\_\+quadtree\+\_\+show().

\mbox{\Hypertarget{group__Eina__Data__Types__Group_ga61253fbf3a4bac2c58ba412fcd490697}\label{group__Eina__Data__Types__Group_ga61253fbf3a4bac2c58ba412fcd490697}} 
\index{Data Types@{Data Types}!eina\+\_\+quadtree\+\_\+hide@{eina\+\_\+quadtree\+\_\+hide}}
\index{eina\+\_\+quadtree\+\_\+hide@{eina\+\_\+quadtree\+\_\+hide}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{eina\+\_\+quadtree\+\_\+hide()}{eina\_quadtree\_hide()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+quadtree\+\_\+hide (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}{Eina\+\_\+\+Quad\+Tree\+\_\+\+Item}} $\ast$}]{object }\end{DoxyParamCaption})}



Sets {\ttfamily object} invisible. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em object} & The item within the quadtree to hide. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} if {\ttfamily object} was successfully hidden, or \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} if it wasn\textquotesingle{}t in the quadtree. 
\end{DoxyReturn}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, and E\+I\+N\+A\+\_\+\+T\+R\+UE.

\mbox{\Hypertarget{group__Eina__Data__Types__Group_gafcfcffdc697a600e3d01f2d008019a79}\label{group__Eina__Data__Types__Group_gafcfcffdc697a600e3d01f2d008019a79}} 
\index{Data Types@{Data Types}!eina\+\_\+quadtree\+\_\+show@{eina\+\_\+quadtree\+\_\+show}}
\index{eina\+\_\+quadtree\+\_\+show@{eina\+\_\+quadtree\+\_\+show}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{eina\+\_\+quadtree\+\_\+show()}{eina\_quadtree\_show()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+quadtree\+\_\+show (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Data__Types__Group_gacd18286b711881b921e3d8746271c5b0}{Eina\+\_\+\+Quad\+Tree\+\_\+\+Item}} $\ast$}]{object }\end{DoxyParamCaption})}



Sets {\ttfamily object} to visible. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em object} & The item within the quadtree to show. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} if {\ttfamily object} was successfully shown, or \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} if it wasn\textquotesingle{}t in the quadtree. 
\end{DoxyReturn}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, eina\+\_\+quadtree\+\_\+change(), and E\+I\+N\+A\+\_\+\+T\+R\+UE.

\mbox{\Hypertarget{group__Eina__Data__Types__Group_gadaa1af3b357ad2987db78833c2895a14}\label{group__Eina__Data__Types__Group_gadaa1af3b357ad2987db78833c2895a14}} 
\index{Data Types@{Data Types}!eina\+\_\+quadtree\+\_\+collide@{eina\+\_\+quadtree\+\_\+collide}}
\index{eina\+\_\+quadtree\+\_\+collide@{eina\+\_\+quadtree\+\_\+collide}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{eina\+\_\+quadtree\+\_\+collide()}{eina\_quadtree\_collide()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Inline__List__Group_gad93973c87f867f249482e936797096ad}{Eina\+\_\+\+Inlist}}$\ast$ eina\+\_\+quadtree\+\_\+collide (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Data__Types__Group_ga441f644b2f5b17b6f7c4db0e2738fc06}{Eina\+\_\+\+Quad\+Tree}} $\ast$}]{q,  }\item[{int}]{x,  }\item[{int}]{y,  }\item[{int}]{w,  }\item[{int}]{h }\end{DoxyParamCaption})}



Retrieves items in quadtree inside the target geometry. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em q} & The quadtree to recompute. \\
\hline
\mbox{\tt in}  & {\em x} & New target X coordinate. \\
\hline
\mbox{\tt in}  & {\em y} & New target Y coordinate. \\
\hline
\mbox{\tt in}  & {\em w} & New target width. \\
\hline
\mbox{\tt in}  & {\em h} & New target height. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The list of collided items or {\ttfamily N\+U\+LL} on error.
\end{DoxyReturn}
Forces a rebuild and resort of the quadtree if needed due to pending changes, then performs a collision detection to find items whose geometry is contained within or intersects the given target geometry. 

References D\+BG, E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, E\+I\+N\+A\+\_\+\+R\+E\+C\+T\+A\+N\+G\+L\+E\+\_\+\+S\+ET, E\+I\+N\+A\+\_\+\+T\+R\+UE, and \+\_\+\+Eina\+\_\+\+Rectangle\+::w.

\mbox{\Hypertarget{group__Eina__Data__Types__Group_gaf504487bb848586a9a81f05d64883ebc}\label{group__Eina__Data__Types__Group_gaf504487bb848586a9a81f05d64883ebc}} 
\index{Data Types@{Data Types}!eina\+\_\+quadtree\+\_\+object@{eina\+\_\+quadtree\+\_\+object}}
\index{eina\+\_\+quadtree\+\_\+object@{eina\+\_\+quadtree\+\_\+object}!Data Types@{Data Types}}
\subsubsection{\texorpdfstring{eina\+\_\+quadtree\+\_\+object()}{eina\_quadtree\_object()}}
{\footnotesize\ttfamily void$\ast$ eina\+\_\+quadtree\+\_\+object (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Inline__List__Group_gad93973c87f867f249482e936797096ad}{Eina\+\_\+\+Inlist}} $\ast$}]{list }\end{DoxyParamCaption})}



Retrieves the quadtree item\textquotesingle{}s data for the given inline list. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em list} & The inline list item to lookup \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The contained data object in the Eina\+\_\+\+Quad\+Tree\+\_\+\+Item, or {\ttfamily N\+U\+LL} if none could be found. 
\end{DoxyReturn}


References E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+C\+O\+N\+T\+A\+I\+N\+E\+R\+\_\+\+G\+ET.

