\doxysubsubsubsection{Iterator Functions}
\hypertarget{group__Eina__Iterator__Group}{}\label{group__Eina__Iterator__Group}\index{Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{struct__Eina__Iterator}{\+\_\+\+Eina\+\_\+\+Iterator}}
\begin{DoxyCompactList}\small\item\em structure of an iterator \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{group__Eina__Iterator__Group_gaec80e80b2867e391b0b27f5f20c3a5b3}\label{group__Eina__Iterator__Group_gaec80e80b2867e391b0b27f5f20c3a5b3} 
\#define {\bfseries FUNC\+\_\+\+ITERATOR\+\_\+\+NEXT}(Function)~((\mbox{\hyperlink{group__Eina__Iterator__Group_ga773167f332514b82df20f40cb420175b}{Eina\+\_\+\+Iterator\+\_\+\+Next\+\_\+\+Callback}})Function)
\begin{DoxyCompactList}\small\item\em Helper macro to cast {\ttfamily Function} to a Eina\+\_\+\+Iterator\+\_\+\+Next\+\_\+\+Callback. \end{DoxyCompactList}\item 
\Hypertarget{group__Eina__Iterator__Group_gab41f5a30f0a2030f4a832548d18332db}\label{group__Eina__Iterator__Group_gab41f5a30f0a2030f4a832548d18332db} 
\#define {\bfseries FUNC\+\_\+\+ITERATOR\+\_\+\+GET\+\_\+\+CONTAINER}(Function)~((\mbox{\hyperlink{group__Eina__Iterator__Group_ga57223f82bdfc6f6b3a998ab06fbe9e95}{Eina\+\_\+\+Iterator\+\_\+\+Get\+\_\+\+Container\+\_\+\+Callback}})Function)
\begin{DoxyCompactList}\small\item\em Helper macro to cast {\ttfamily Function} to a Eina\+\_\+\+Iterator\+\_\+\+Get\+\_\+\+Container\+\_\+\+Callback. \end{DoxyCompactList}\item 
\Hypertarget{group__Eina__Iterator__Group_gad1ea4d3a7e58b47b23073a58e869d167}\label{group__Eina__Iterator__Group_gad1ea4d3a7e58b47b23073a58e869d167} 
\#define {\bfseries FUNC\+\_\+\+ITERATOR\+\_\+\+FREE}(Function)~((\mbox{\hyperlink{group__Eina__Iterator__Group_gad93c2a23b15eb897e5b4a40a6bd993a7}{Eina\+\_\+\+Iterator\+\_\+\+Free\+\_\+\+Callback}})Function)
\begin{DoxyCompactList}\small\item\em Helper macro to cast {\ttfamily Function} to a Eina\+\_\+\+Iterator\+\_\+\+Free\+\_\+\+Callback. \end{DoxyCompactList}\item 
\Hypertarget{group__Eina__Iterator__Group_ga71905e8fc8ce5d31aea26362da620eff}\label{group__Eina__Iterator__Group_ga71905e8fc8ce5d31aea26362da620eff} 
\#define {\bfseries FUNC\+\_\+\+ITERATOR\+\_\+\+LOCK}(Function)~((\mbox{\hyperlink{group__Eina__Iterator__Group_ga49ccc56ba720e92fbe314b8eb6a87add}{Eina\+\_\+\+Iterator\+\_\+\+Lock\+\_\+\+Callback}})Function)
\begin{DoxyCompactList}\small\item\em Helper macro to cast {\ttfamily Function} to a Eina\+\_\+\+Iterator\+\_\+\+Lock\+\_\+\+Callback. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Iterator__Group_ga8087475e1fea47cd6a5b088b0f7e183a}{EINA\+\_\+\+C\+\_\+\+ARRAY\+\_\+\+ITERATOR\+\_\+\+NEW}}(Array)~\mbox{\hyperlink{group__Eina__Iterator__Group_ga9884512f6520a104f4421c66235c2371}{eina\+\_\+carray\+\_\+length\+\_\+iterator\+\_\+new}}((void\texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}) Array, sizeof (Array\mbox{[}0\mbox{]}), \mbox{\hyperlink{group__Eina__Types__Group_ga7c1b6f81660b4e30516169e9e7d3261c}{EINA\+\_\+\+C\+\_\+\+ARRAY\+\_\+\+LENGTH}}(Array))
\begin{DoxyCompactList}\small\item\em Creates an Eina\+\_\+\+Iterator that iterates through a NUL-\/terminated C array. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Iterator__Group_gad00de79d25cdeb74c1e1438aa14340f7}{eina\+\_\+multi\+\_\+iterator\+\_\+new}}(It, ...)~\mbox{\hyperlink{group__Eina__Iterator__Group_gad8e165710ece870e6139ab02c6705235}{eina\+\_\+multi\+\_\+iterator\+\_\+internal\+\_\+new}}(It, \#\#\+\_\+\+\_\+\+VA\+\_\+\+ARGS\+\_\+\+\_\+, NULL)
\begin{DoxyCompactList}\small\item\em Creates an Eina\+\_\+\+Iterator that iterates through a series of Eina\+\_\+\+Iterator. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Iterator__Group_gac7314580e18868ef229f5d2814562794}{EINA\+\_\+\+ITERATOR\+\_\+\+FOREACH}}(itr,  data)
\begin{DoxyCompactList}\small\item\em Definition for the macro to iterate over all elements easily. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsubsubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}\label{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948} 
typedef struct \mbox{\hyperlink{struct__Eina__Iterator}{\+\_\+\+Eina\+\_\+\+Iterator}} {\bfseries Eina\+\_\+\+Iterator}
\begin{DoxyCompactList}\small\item\em Abstract type for iterators. \end{DoxyCompactList}\item 
\Hypertarget{group__Eina__Iterator__Group_ga773167f332514b82df20f40cb420175b}\label{group__Eina__Iterator__Group_ga773167f332514b82df20f40cb420175b} 
typedef \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}(\texorpdfstring{$\ast$}{*} {\bfseries Eina\+\_\+\+Iterator\+\_\+\+Next\+\_\+\+Callback}) (\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}it, void \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}data)
\begin{DoxyCompactList}\small\item\em Type for a callback that returns the next element in a container. \end{DoxyCompactList}\item 
\Hypertarget{group__Eina__Iterator__Group_ga57223f82bdfc6f6b3a998ab06fbe9e95}\label{group__Eina__Iterator__Group_ga57223f82bdfc6f6b3a998ab06fbe9e95} 
typedef void \texorpdfstring{$\ast$}{*}(\texorpdfstring{$\ast$}{*} {\bfseries Eina\+\_\+\+Iterator\+\_\+\+Get\+\_\+\+Container\+\_\+\+Callback}) (\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}it)
\begin{DoxyCompactList}\small\item\em Type for a callback that returns the container. \end{DoxyCompactList}\item 
\Hypertarget{group__Eina__Iterator__Group_gad93c2a23b15eb897e5b4a40a6bd993a7}\label{group__Eina__Iterator__Group_gad93c2a23b15eb897e5b4a40a6bd993a7} 
typedef void(\texorpdfstring{$\ast$}{*} {\bfseries Eina\+\_\+\+Iterator\+\_\+\+Free\+\_\+\+Callback}) (\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}it)
\begin{DoxyCompactList}\small\item\em Type for a callback that frees the container. \end{DoxyCompactList}\item 
\Hypertarget{group__Eina__Iterator__Group_ga49ccc56ba720e92fbe314b8eb6a87add}\label{group__Eina__Iterator__Group_ga49ccc56ba720e92fbe314b8eb6a87add} 
typedef \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}(\texorpdfstring{$\ast$}{*} {\bfseries Eina\+\_\+\+Iterator\+\_\+\+Lock\+\_\+\+Callback}) (\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}it)
\begin{DoxyCompactList}\small\item\em Type for a callback that lock the container. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void \mbox{\hyperlink{group__Eina__Iterator__Group_ga50da005e8d26c0a043d0d1c025bc9008}{eina\+\_\+iterator\+\_\+free}} (\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}iterator)
\begin{DoxyCompactList}\small\item\em Frees an iterator. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__Eina__Iterator__Group_gab41f34ca186b6b6508291dad138f7062}{eina\+\_\+iterator\+\_\+container\+\_\+get}} (\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}iterator)
\begin{DoxyCompactList}\small\item\em Returns the container of an iterator. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Iterator__Group_gad870f9b1d5fb8892cb9623ad0e7f75b2}{eina\+\_\+iterator\+\_\+next}} (\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}iterator, void \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}data)
\begin{DoxyCompactList}\small\item\em Returns the value of the current element and go to the next one. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void \mbox{\hyperlink{group__Eina__Iterator__Group_gaff9c1e02361afa3abcede2fd4056d286}{eina\+\_\+iterator\+\_\+foreach}} (\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}iterator, \mbox{\hyperlink{group__Eina__Types__Group_gab115f6c19b6641ab5ba22ed45d9b7aa4}{Eina\+\_\+\+Each\+\_\+\+Cb}} callback, const void \texorpdfstring{$\ast$}{*}fdata)
\begin{DoxyCompactList}\small\item\em Iterates over the container and execute a callback on each element. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga2f1e049392c06514a919ab0b741111a0}{eina\+\_\+iterator\+\_\+lock}} (\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}iterator)
\begin{DoxyCompactList}\small\item\em Locks the container of the iterator. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga72df2ae82b55929483c6a90d3e6057cf}{eina\+\_\+iterator\+\_\+unlock}} (\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}iterator)
\begin{DoxyCompactList}\small\item\em Unlocks the container of the iterator. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__Eina__Iterator__Group_gafb908cde115999ef72fdf0d51998bc42}{eina\+\_\+carray\+\_\+iterator\+\_\+new}} (void \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}array)
\begin{DoxyCompactList}\small\item\em Creates an Eina\+\_\+\+Iterator that iterates through a NUL-\/terminated C array. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__Eina__Iterator__Group_ga9884512f6520a104f4421c66235c2371}{eina\+\_\+carray\+\_\+length\+\_\+iterator\+\_\+new}} (void \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}array, unsigned int step, unsigned int length)
\begin{DoxyCompactList}\small\item\em Creates an Eina\+\_\+\+Iterator that iterates through a C array of specified size. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__Eina__Iterator__Group_ga41c2a40f9b815558a043b32e4370ef90}{eina\+\_\+iterator\+\_\+filter\+\_\+new}} (\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}original, \mbox{\hyperlink{group__Eina__Types__Group_gab115f6c19b6641ab5ba22ed45d9b7aa4}{Eina\+\_\+\+Each\+\_\+\+Cb}} filter, \mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}} free\+\_\+cb, void \texorpdfstring{$\ast$}{*}data)
\begin{DoxyCompactList}\small\item\em Creates a new iterator which which iterates through all elements with are accepted by the filter callback. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__Eina__Iterator__Group_gad8e165710ece870e6139ab02c6705235}{eina\+\_\+multi\+\_\+iterator\+\_\+internal\+\_\+new}} (\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}it,...)
\begin{DoxyCompactList}\small\item\em Creates an Eina\+\_\+\+Iterator that iterates through a series of Eina\+\_\+\+Iterator. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__Eina__Iterator__Group_ga0a46f2b4c9dd624b4791e4c92018eb83}{eina\+\_\+iterator\+\_\+processed\+\_\+new}} (\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}iterator, \mbox{\hyperlink{group__Eina__Types__Group_gab82b2d5e4aac0bdf2a865bd046682125}{Eina\+\_\+\+Process\+\_\+\+Cb}} process, \mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}} free\+\_\+cb, void \texorpdfstring{$\ast$}{*}fdata)
\begin{DoxyCompactList}\small\item\em Calls the process method on each node of iterator, producing new "{}processed"{} nodes and returning a new iterator which contains them. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsubsubsubsection{Detailed Description}


These functions manage iterators on containers.

These functions allow accessing elements of a container in a generic way, without knowing which container is used (a bit like iterators in the C++ STL). Iterators only allow sequential access (that is, from one element to the next one). For random access, see \doxylink{group__Eina__Accessor__Group}{Accessor Functions}.

Getting an iterator to access elements of a given container is done through the functions of that particular container. There is no function to create a generic iterator as iterators absolutely depend on the container. This means you won\textquotesingle{}t find an iterator creation function here, those can be found with the documentation of the container type you\textquotesingle{}re using. Though created with container specific functions iterators are always deleted with the same function\+: \doxylink{group__Eina__Iterator__Group_ga50da005e8d26c0a043d0d1c025bc9008}{eina\+\_\+iterator\+\_\+free()}.

To get the data and iterate, use \doxylink{group__Eina__Iterator__Group_gad870f9b1d5fb8892cb9623ad0e7f75b2}{eina\+\_\+iterator\+\_\+next()}. To call a function on all the elements of a container, use \doxylink{group__Eina__Iterator__Group_gaff9c1e02361afa3abcede2fd4056d286}{eina\+\_\+iterator\+\_\+foreach()}.

Here an \doxysectlink{eina_iterator_example_page}{example}{0} 

\doxysubsubsubsubsection{Macro Definition Documentation}
\Hypertarget{group__Eina__Iterator__Group_ga8087475e1fea47cd6a5b088b0f7e183a}\label{group__Eina__Iterator__Group_ga8087475e1fea47cd6a5b088b0f7e183a} 
\index{Iterator Functions@{Iterator Functions}!EINA\_C\_ARRAY\_ITERATOR\_NEW@{EINA\_C\_ARRAY\_ITERATOR\_NEW}}
\index{EINA\_C\_ARRAY\_ITERATOR\_NEW@{EINA\_C\_ARRAY\_ITERATOR\_NEW}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{EINA\_C\_ARRAY\_ITERATOR\_NEW}{EINA\_C\_ARRAY\_ITERATOR\_NEW}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+C\+\_\+\+ARRAY\+\_\+\+ITERATOR\+\_\+\+NEW(\begin{DoxyParamCaption}\item[{}]{Array }\end{DoxyParamCaption})~\mbox{\hyperlink{group__Eina__Iterator__Group_ga9884512f6520a104f4421c66235c2371}{eina\+\_\+carray\+\_\+length\+\_\+iterator\+\_\+new}}((void\texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}) Array, sizeof (Array\mbox{[}0\mbox{]}), \mbox{\hyperlink{group__Eina__Types__Group_ga7c1b6f81660b4e30516169e9e7d3261c}{EINA\+\_\+\+C\+\_\+\+ARRAY\+\_\+\+LENGTH}}(Array))}



Creates an Eina\+\_\+\+Iterator that iterates through a NUL-\/terminated C array. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em Array} & The NUL-\/terminated array \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The iterator that will walk over the array.
\end{DoxyReturn}
You can create it like this\+: int array\mbox{[}\mbox{]} = \{1, 2, 3, 4\};

Eina\+\_\+\+Iterator\texorpdfstring{$\ast$}{*} iterator = \doxylink{group__Eina__Iterator__Group_ga8087475e1fea47cd6a5b088b0f7e183a}{EINA\+\_\+\+C\+\_\+\+ARRAY\+\_\+\+ITERATOR\+\_\+\+NEW(array)};

\begin{DoxySince}{Since}
1.\+22 
\end{DoxySince}
\Hypertarget{group__Eina__Iterator__Group_gad00de79d25cdeb74c1e1438aa14340f7}\label{group__Eina__Iterator__Group_gad00de79d25cdeb74c1e1438aa14340f7} 
\index{Iterator Functions@{Iterator Functions}!eina\_multi\_iterator\_new@{eina\_multi\_iterator\_new}}
\index{eina\_multi\_iterator\_new@{eina\_multi\_iterator\_new}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{eina\_multi\_iterator\_new}{eina\_multi\_iterator\_new}}
{\footnotesize\ttfamily \#define eina\+\_\+multi\+\_\+iterator\+\_\+new(\begin{DoxyParamCaption}\item[{}]{It,  }\item[{}]{... }\end{DoxyParamCaption})~\mbox{\hyperlink{group__Eina__Iterator__Group_gad8e165710ece870e6139ab02c6705235}{eina\+\_\+multi\+\_\+iterator\+\_\+internal\+\_\+new}}(It, \#\#\+\_\+\+\_\+\+VA\+\_\+\+ARGS\+\_\+\+\_\+, NULL)}



Creates an Eina\+\_\+\+Iterator that iterates through a series of Eina\+\_\+\+Iterator. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em It} & The first Eina\+\_\+\+Iterator to iterate over \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The iterator that will walk all the other iterator
\end{DoxyReturn}
Eina\+\_\+\+Iterator\texorpdfstring{$\ast$}{*} iterator = \doxylink{group__Eina__Iterator__Group_gad00de79d25cdeb74c1e1438aa14340f7}{eina\+\_\+multi\+\_\+iterator\+\_\+new(it1, it2, it3)};

\begin{DoxyNote}{Note}
The returned array will destroy iterator given to it once they are not necessary anymore. Taking ownership of those iterator.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+22 
\end{DoxySince}
\Hypertarget{group__Eina__Iterator__Group_gac7314580e18868ef229f5d2814562794}\label{group__Eina__Iterator__Group_gac7314580e18868ef229f5d2814562794} 
\index{Iterator Functions@{Iterator Functions}!EINA\_ITERATOR\_FOREACH@{EINA\_ITERATOR\_FOREACH}}
\index{EINA\_ITERATOR\_FOREACH@{EINA\_ITERATOR\_FOREACH}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{EINA\_ITERATOR\_FOREACH}{EINA\_ITERATOR\_FOREACH}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+ITERATOR\+\_\+\+FOREACH(\begin{DoxyParamCaption}\item[{}]{itr,  }\item[{}]{data }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{while}\ (\mbox{\hyperlink{group__Eina__Iterator__Group_gad870f9b1d5fb8892cb9623ad0e7f75b2}{eina\_iterator\_next}}((itr),\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{void}\ **)(\textcolor{keywordtype}{void}\ *)\&(data)))}

\end{DoxyCode}


Definition for the macro to iterate over all elements easily. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em itr} & The iterator to use. \\
\hline
\mbox{\texttt{ out}}  & {\em data} & Where to store \texorpdfstring{$\ast$}{*} data, must be a pointer support getting its address since \texorpdfstring{$\ast$}{*} \doxylink{group__Eina__Iterator__Group_gad870f9b1d5fb8892cb9623ad0e7f75b2}{eina\+\_\+iterator\+\_\+next()} requires a pointer to pointer!\\
\hline
\end{DoxyParams}
This macro is a convenient way to use iterators, very similar to \doxylink{group__Eina__List__Group_gac6efafc19f526d916cdb9757240a8773}{EINA\+\_\+\+LIST\+\_\+\+FOREACH()}.

This macro can be used for freeing the data of a list, like in the following example. It has the same goal as the one documented in \doxylink{group__Eina__List__Group_gac6efafc19f526d916cdb9757240a8773}{EINA\+\_\+\+LIST\+\_\+\+FOREACH()}, but using iterators\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{struct__Eina__List}{Eina\_List}}\ \ \ \ \ *list;}
\DoxyCodeLine{\mbox{\hyperlink{struct__Eina__Iterator}{Eina\_Iterator}}\ *itr;}
\DoxyCodeLine{\textcolor{keywordtype}{char}\ \ \ \ \ \ \ \ \ \ *data;}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{comment}{//\ list\ is\ already\ filled,}}
\DoxyCodeLine{\textcolor{comment}{//\ its\ elements\ are\ just\ duplicated\ strings}}
\DoxyCodeLine{}
\DoxyCodeLine{itr\ =\ \mbox{\hyperlink{group__Eina__List__Group_gaaad791a6b6ca783926082e976ce486b9}{eina\_list\_iterator\_new}}(list);}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Iterator__Group_gac7314580e18868ef229f5d2814562794}{EINA\_ITERATOR\_FOREACH}}(itr,\ data)}
\DoxyCodeLine{\ \ free(data);}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Iterator__Group_ga50da005e8d26c0a043d0d1c025bc9008}{eina\_iterator\_free}}(itr);}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__List__Group_ga82a1bfa543e21853f9ea3ff88dd1250b}{eina\_list\_free}}(list);}

\end{DoxyCode}


\begin{DoxyNote}{Note}
This example is not optimal algorithm to release a list since it will walk the list twice, but it serves as an example. For optimized version use \doxylink{group__Eina__List__Group_gae27a2c686a0a11693f9b06957c9bba83}{EINA\+\_\+\+LIST\+\_\+\+FREE()}
\end{DoxyNote}
\begin{DoxyWarning}{Warning}
The order in which the elements will be traversed depends on the underlying container and {\bfseries{shouldn\textquotesingle{}t}} be relied upon.

unless explicitly stated in functions returning iterators, do not modify the iterated object while you walk it, in this example using lists, do not remove list nodes or you might crash! This is not a limitation of iterators themselves, rather in the iterators implementations to keep them as simple and fast as possible. 
\end{DoxyWarning}
\begin{Desc}
\item[Examples]\par
\mbox{\hyperlink{ecore_con_client_example_8c-example}{ecore\+\_\+con\+\_\+client\+\_\+example.\+c}}, \mbox{\hyperlink{ecore_thread_example_8c-example}{ecore\+\_\+thread\+\_\+example.\+c}}, \mbox{\hyperlink{eet-data-file_descriptor_01_8c-example}{eet-\/data-\/file\+\_\+descriptor\+\_\+01.\+c}}, \mbox{\hyperlink{eina_file_01_8c-example}{eina\+\_\+file\+\_\+01.\+c}}, \mbox{\hyperlink{eina_list_03_8c-example}{eina\+\_\+list\+\_\+03.\+c}}, and \mbox{\hyperlink{eina_tiler_01_8c-example}{eina\+\_\+tiler\+\_\+01.\+c}}.\end{Desc}


Referenced by \mbox{\hyperlink{group__Ecore__File__Group_ga5f6777eb4beea434372df0aa7357979b}{ecore\+\_\+file\+\_\+dir\+\_\+is\+\_\+empty()}}, \mbox{\hyperlink{group__Ecore__File__Group_gab7baa24c2abea205b4d1f92397f1bda0}{ecore\+\_\+file\+\_\+ls()}}, \mbox{\hyperlink{group__Ecore__File__Group_ga6e2d09d544f8e2b53c9518d521e1efd0}{ecore\+\_\+file\+\_\+recursive\+\_\+rm()}}, \mbox{\hyperlink{group__Edje__General__Group_ga3ad1025c24e7262cf489afb042171b43}{edje\+\_\+available\+\_\+modules\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_a66d968607aef3bc41ac5844208e49a2b}{edje\+\_\+edit\+\_\+clean\+\_\+save\+\_\+as()}}, \mbox{\hyperlink{Edje__Edit_8h_a62d4b934de8485bf7ac4d20c32134073}{edje\+\_\+edit\+\_\+data\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_a01e2824969f81c58a97f063f31c0918c}{edje\+\_\+edit\+\_\+data\+\_\+source\+\_\+generate()}}, \mbox{\hyperlink{Edje__Edit_8h_a454c4b01f17d20ebb27e87d53e2a2a1d}{edje\+\_\+edit\+\_\+font\+\_\+path\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_a898c821cfc81d6279450322f98d89994}{edje\+\_\+edit\+\_\+fonts\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_a3f65037e6d6db37bcb19dd49f721f9f9}{edje\+\_\+edit\+\_\+group\+\_\+add()}}, \mbox{\hyperlink{Edje__Edit_8h_ae742e70fbd3e384a1e101c118b3517de}{edje\+\_\+edit\+\_\+group\+\_\+aliased\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_a4fc3c8d872d5bffd2af00813a6136b9d}{edje\+\_\+edit\+\_\+group\+\_\+aliases\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_ad260faf7c12f8f81f3194f970f17fd13}{edje\+\_\+edit\+\_\+group\+\_\+copy()}}, \mbox{\hyperlink{Edje__Edit_8h_a52b061c3b5068a7aa549e2f34a9a3834}{edje\+\_\+edit\+\_\+group\+\_\+data\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_afc78fedfb5b185e45580b8f5598ff9ed}{edje\+\_\+edit\+\_\+image\+\_\+del()}}, \mbox{\hyperlink{Edje__Edit_8h_a53efde5fd245b00b394dbf2dd8f616ce}{edje\+\_\+edit\+\_\+image\+\_\+replace()}}, \mbox{\hyperlink{Edje__Edit_8h_a73f5731ccf4e2ae3e43aed797a31503d}{edje\+\_\+edit\+\_\+image\+\_\+set\+\_\+del()}}, \mbox{\hyperlink{Edje__Edit_8h_acb7d7cb63abfb0f46f23e7829c605f37}{edje\+\_\+edit\+\_\+image\+\_\+usage\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_afa0d76912643adbf99fa06c53e0966d3}{edje\+\_\+edit\+\_\+set\+\_\+usage\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_ac4a9060a36bd89f49e0d027a2134dcb0}{edje\+\_\+edit\+\_\+vector\+\_\+del()}}, \mbox{\hyperlink{Edje__Edit_8h_a35813f5a2670cf5935607e16e5f13ce7}{edje\+\_\+edit\+\_\+vector\+\_\+usage\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{group__Edje__Object__File_ga0c33b9b3c7d5793aa4fc2f83f2976735}{edje\+\_\+mmap\+\_\+collection\+\_\+list()}}, \mbox{\hyperlink{group__Edje__Object__File_ga8d44d75ddf833e86e2dc54d81e17e9d5}{edje\+\_\+mmap\+\_\+group\+\_\+exists()}}, \mbox{\hyperlink{group__Edje__Object__Part_gad4c941720f21a09944811f30abcf44a3}{edje\+\_\+object\+\_\+access\+\_\+part\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{group__Eina__File__Group_gacb53e3286cf85a6652891ee5e5ec917b}{eina\+\_\+file\+\_\+dir\+\_\+list()}}, \mbox{\hyperlink{group__Eina__File__Group_ga64a3123b8e0b9698d30611bacd548b9e}{eina\+\_\+file\+\_\+flush()}}, \mbox{\hyperlink{group__Eina__Future_gad86937f4354573d8e13cbe6ec62d0869}{eina\+\_\+promise\+\_\+all\+\_\+iterator()}}, \mbox{\hyperlink{group__Eina__Tiler__Group_ga83844f55f924d860fabe6065faa614b8}{eina\+\_\+tiler\+\_\+subtract()}}, \mbox{\hyperlink{group__Eina__Tiler__Group_gad6df9da191429bac8ad054bdd8b63758}{eina\+\_\+tiler\+\_\+union()}}, \mbox{\hyperlink{group__Eio_ga589b297947c40b932e84273f089afcc6}{eio\+\_\+monitoring\+\_\+interval\+\_\+set()}}, \mbox{\hyperlink{group__Eldbus__Core_ga255ee3e090da6704d009ee74ba9d8a79}{eldbus\+\_\+shutdown()}}, \mbox{\hyperlink{group__Elm__Color__Class__Group_gaf9e0a25a2cd3e57d3ff211b62d763ba8}{elm\+\_\+color\+\_\+class\+\_\+editor\+\_\+add()}}, \mbox{\hyperlink{group__Elm__Color__Class__Group_ga8907766e782fdb43c916f322e7e543d2}{elm\+\_\+color\+\_\+class\+\_\+util\+\_\+edje\+\_\+file\+\_\+list()}}, \mbox{\hyperlink{group__Eolian_ga5f3fdcb53e7caaca409b444a02d58f7d}{eolian\+\_\+aux\+\_\+class\+\_\+callables\+\_\+get()}}, and \mbox{\hyperlink{group__Eolian_gab684e19f341e44566e2edd412b755a44}{eolian\+\_\+aux\+\_\+state\+\_\+class\+\_\+children\+\_\+find()}}.



\doxysubsubsubsubsection{Function Documentation}
\Hypertarget{group__Eina__Iterator__Group_ga50da005e8d26c0a043d0d1c025bc9008}\label{group__Eina__Iterator__Group_ga50da005e8d26c0a043d0d1c025bc9008} 
\index{Iterator Functions@{Iterator Functions}!eina\_iterator\_free@{eina\_iterator\_free}}
\index{eina\_iterator\_free@{eina\_iterator\_free}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{eina\_iterator\_free()}{eina\_iterator\_free()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void eina\+\_\+iterator\+\_\+free (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}}]{iterator }\end{DoxyParamCaption})}



Frees an iterator. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em iterator} & The iterator to free.\\
\hline
\end{DoxyParams}
This function frees {\ttfamily iterator} if it is not {\ttfamily NULL}; 

References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_ga1ccf8538d0015b3801ff642e6156843a}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN}}, and \mbox{\hyperlink{struct__Eina__Iterator_a3367d7b0def2730f91ba2528fb9c21d6}{\+\_\+\+Eina\+\_\+\+Iterator\+::free}}.



Referenced by \mbox{\hyperlink{group__Ecore__File__Group_ga5f6777eb4beea434372df0aa7357979b}{ecore\+\_\+file\+\_\+dir\+\_\+is\+\_\+empty()}}, \mbox{\hyperlink{group__Ecore__File__Group_gab7baa24c2abea205b4d1f92397f1bda0}{ecore\+\_\+file\+\_\+ls()}}, \mbox{\hyperlink{group__Ecore__File__Group_ga6e2d09d544f8e2b53c9518d521e1efd0}{ecore\+\_\+file\+\_\+recursive\+\_\+rm()}}, \mbox{\hyperlink{group__Ecore__Wl__Window__Group_ga6af7649178a5545a39c9c820d337990e}{ecore\+\_\+wl\+\_\+window\+\_\+surface\+\_\+find()}}, \mbox{\hyperlink{group__Edje__General__Group_ga3ad1025c24e7262cf489afb042171b43}{edje\+\_\+available\+\_\+modules\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_a66d968607aef3bc41ac5844208e49a2b}{edje\+\_\+edit\+\_\+clean\+\_\+save\+\_\+as()}}, \mbox{\hyperlink{Edje__Edit_8h_a62d4b934de8485bf7ac4d20c32134073}{edje\+\_\+edit\+\_\+data\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_a01e2824969f81c58a97f063f31c0918c}{edje\+\_\+edit\+\_\+data\+\_\+source\+\_\+generate()}}, \mbox{\hyperlink{Edje__Edit_8h_a454c4b01f17d20ebb27e87d53e2a2a1d}{edje\+\_\+edit\+\_\+font\+\_\+path\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_a898c821cfc81d6279450322f98d89994}{edje\+\_\+edit\+\_\+fonts\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_a3f65037e6d6db37bcb19dd49f721f9f9}{edje\+\_\+edit\+\_\+group\+\_\+add()}}, \mbox{\hyperlink{Edje__Edit_8h_ae742e70fbd3e384a1e101c118b3517de}{edje\+\_\+edit\+\_\+group\+\_\+aliased\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_a4fc3c8d872d5bffd2af00813a6136b9d}{edje\+\_\+edit\+\_\+group\+\_\+aliases\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_ad260faf7c12f8f81f3194f970f17fd13}{edje\+\_\+edit\+\_\+group\+\_\+copy()}}, \mbox{\hyperlink{Edje__Edit_8h_a52b061c3b5068a7aa549e2f34a9a3834}{edje\+\_\+edit\+\_\+group\+\_\+data\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_afc78fedfb5b185e45580b8f5598ff9ed}{edje\+\_\+edit\+\_\+image\+\_\+del()}}, \mbox{\hyperlink{Edje__Edit_8h_a53efde5fd245b00b394dbf2dd8f616ce}{edje\+\_\+edit\+\_\+image\+\_\+replace()}}, \mbox{\hyperlink{Edje__Edit_8h_a73f5731ccf4e2ae3e43aed797a31503d}{edje\+\_\+edit\+\_\+image\+\_\+set\+\_\+del()}}, \mbox{\hyperlink{Edje__Edit_8h_acb7d7cb63abfb0f46f23e7829c605f37}{edje\+\_\+edit\+\_\+image\+\_\+usage\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_afa0d76912643adbf99fa06c53e0966d3}{edje\+\_\+edit\+\_\+set\+\_\+usage\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{Edje__Edit_8h_ac4a9060a36bd89f49e0d027a2134dcb0}{edje\+\_\+edit\+\_\+vector\+\_\+del()}}, \mbox{\hyperlink{Edje__Edit_8h_a35813f5a2670cf5935607e16e5f13ce7}{edje\+\_\+edit\+\_\+vector\+\_\+usage\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{group__Edje__Object__File_ga0c33b9b3c7d5793aa4fc2f83f2976735}{edje\+\_\+mmap\+\_\+collection\+\_\+list()}}, \mbox{\hyperlink{group__Edje__Object__File_ga8d44d75ddf833e86e2dc54d81e17e9d5}{edje\+\_\+mmap\+\_\+group\+\_\+exists()}}, \mbox{\hyperlink{group__Edje__Object__Part_gad4c941720f21a09944811f30abcf44a3}{edje\+\_\+object\+\_\+access\+\_\+part\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{group__Eina__Cow__Group_ga66610ae59e2d5cf8fb258f3d2625c53d}{eina\+\_\+cow\+\_\+gc()}}, \mbox{\hyperlink{group__Eina__File__Group_gacb53e3286cf85a6652891ee5e5ec917b}{eina\+\_\+file\+\_\+dir\+\_\+list()}}, \mbox{\hyperlink{group__Eina__File__Group_ga64a3123b8e0b9698d30611bacd548b9e}{eina\+\_\+file\+\_\+flush()}}, \mbox{\hyperlink{group__Eina__Hash__Group_ga9237dbade8e59ac827992c7a5146cb20}{eina\+\_\+hash\+\_\+foreach()}}, \mbox{\hyperlink{group__Eina__Future_gad86937f4354573d8e13cbe6ec62d0869}{eina\+\_\+promise\+\_\+all\+\_\+iterator()}}, \mbox{\hyperlink{group__Eina__Tiler__Group_ga1d0bf504f4aa781e26ee22dac9b5060f}{eina\+\_\+tiler\+\_\+equal()}}, \mbox{\hyperlink{group__Eina__Tiler__Group_gad3dd33a89ec5905f72089d17f93b56b7}{eina\+\_\+tiler\+\_\+intersection()}}, \mbox{\hyperlink{group__Eina__Tiler__Group_ga83844f55f924d860fabe6065faa614b8}{eina\+\_\+tiler\+\_\+subtract()}}, \mbox{\hyperlink{group__Eina__Tiler__Group_gad6df9da191429bac8ad054bdd8b63758}{eina\+\_\+tiler\+\_\+union()}}, \mbox{\hyperlink{group__Eio_ga589b297947c40b932e84273f089afcc6}{eio\+\_\+monitoring\+\_\+interval\+\_\+set()}}, \mbox{\hyperlink{group__Eldbus__Core_ga255ee3e090da6704d009ee74ba9d8a79}{eldbus\+\_\+shutdown()}}, \mbox{\hyperlink{group__Elm__Color__Class__Group_gaf9e0a25a2cd3e57d3ff211b62d763ba8}{elm\+\_\+color\+\_\+class\+\_\+editor\+\_\+add()}}, \mbox{\hyperlink{group__Elm__Color__Class__Group_ga8907766e782fdb43c916f322e7e543d2}{elm\+\_\+color\+\_\+class\+\_\+util\+\_\+edje\+\_\+file\+\_\+list()}}, \mbox{\hyperlink{group__Eolian_ga5f3fdcb53e7caaca409b444a02d58f7d}{eolian\+\_\+aux\+\_\+class\+\_\+callables\+\_\+get()}}, and \mbox{\hyperlink{group__Eolian_gab684e19f341e44566e2edd412b755a44}{eolian\+\_\+aux\+\_\+state\+\_\+class\+\_\+children\+\_\+find()}}.

\Hypertarget{group__Eina__Iterator__Group_gab41f34ca186b6b6508291dad138f7062}\label{group__Eina__Iterator__Group_gab41f34ca186b6b6508291dad138f7062} 
\index{Iterator Functions@{Iterator Functions}!eina\_iterator\_container\_get@{eina\_iterator\_container\_get}}
\index{eina\_iterator\_container\_get@{eina\_iterator\_container\_get}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{eina\_iterator\_container\_get()}{eina\_iterator\_container\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void \texorpdfstring{$\ast$}{*} eina\+\_\+iterator\+\_\+container\+\_\+get (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}}]{iterator }\end{DoxyParamCaption})}



Returns the container of an iterator. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em iterator} & The iterator. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The container which created the iterator.
\end{DoxyReturn}
This function returns the container which created {\ttfamily iterator}. If {\ttfamily iterator} is {\ttfamily NULL}, this function returns {\ttfamily NULL}. 

References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, and \mbox{\hyperlink{struct__Eina__Iterator_ad6e11988297f629a96f4ebc84a96f7b6}{\+\_\+\+Eina\+\_\+\+Iterator\+::get\+\_\+container}}.

\Hypertarget{group__Eina__Iterator__Group_gad870f9b1d5fb8892cb9623ad0e7f75b2}\label{group__Eina__Iterator__Group_gad870f9b1d5fb8892cb9623ad0e7f75b2} 
\index{Iterator Functions@{Iterator Functions}!eina\_iterator\_next@{eina\_iterator\_next}}
\index{eina\_iterator\_next@{eina\_iterator\_next}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{eina\_iterator\_next()}{eina\_iterator\_next()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+iterator\+\_\+next (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}}]{iterator,  }\item[{void \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{data }\end{DoxyParamCaption})}



Returns the value of the current element and go to the next one. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em iterator} & The iterator. \\
\hline
\mbox{\texttt{ out}}  & {\em data} & The data of the element. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\doxylink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE} on success, \doxylink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE} otherwise.
\end{DoxyReturn}
This function returns the value of the current element pointed by {\ttfamily iterator} in {\ttfamily data}, then goes to the next element. If {\ttfamily iterator} is {\ttfamily NULL} or if a problem occurred, \doxylink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE} is returned, otherwise \doxylink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE} is returned. 

References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, and \mbox{\hyperlink{struct__Eina__Iterator_a7909c5b443279e436f643c4e6e81a5bb}{\+\_\+\+Eina\+\_\+\+Iterator\+::next}}.



Referenced by \mbox{\hyperlink{group__Ecore__Wl__Window__Group_ga6af7649178a5545a39c9c820d337990e}{ecore\+\_\+wl\+\_\+window\+\_\+surface\+\_\+find()}}, \mbox{\hyperlink{group__Eina__Cow__Group_ga66610ae59e2d5cf8fb258f3d2625c53d}{eina\+\_\+cow\+\_\+gc()}}, \mbox{\hyperlink{group__Eina__Future_gad86937f4354573d8e13cbe6ec62d0869}{eina\+\_\+promise\+\_\+all\+\_\+iterator()}}, \mbox{\hyperlink{group__Eina__Tiler__Group_ga1d0bf504f4aa781e26ee22dac9b5060f}{eina\+\_\+tiler\+\_\+equal()}}, and \mbox{\hyperlink{group__Eina__Tiler__Group_gad3dd33a89ec5905f72089d17f93b56b7}{eina\+\_\+tiler\+\_\+intersection()}}.

\Hypertarget{group__Eina__Iterator__Group_gaff9c1e02361afa3abcede2fd4056d286}\label{group__Eina__Iterator__Group_gaff9c1e02361afa3abcede2fd4056d286} 
\index{Iterator Functions@{Iterator Functions}!eina\_iterator\_foreach@{eina\_iterator\_foreach}}
\index{eina\_iterator\_foreach@{eina\_iterator\_foreach}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{eina\_iterator\_foreach()}{eina\_iterator\_foreach()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} void eina\+\_\+iterator\+\_\+foreach (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}}]{iterator,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_gab115f6c19b6641ab5ba22ed45d9b7aa4}{Eina\+\_\+\+Each\+\_\+\+Cb}}}]{callback,  }\item[{const void \texorpdfstring{$\ast$}{*}}]{fdata }\end{DoxyParamCaption})}



Iterates over the container and execute a callback on each element. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em iterator} & The iterator. \\
\hline
\mbox{\texttt{ in}}  & {\em callback} & The callback called on each iteration. \\
\hline
\mbox{\texttt{ in}}  & {\em fdata} & The data passed to the callback.\\
\hline
\end{DoxyParams}
This function iterates over the elements pointed by {\ttfamily iterator}, beginning with the current element. For each element, the callback {\ttfamily cb} is called with the data {\ttfamily fdata}. If {\ttfamily iterator} is {\ttfamily NULL}, the function returns immediately. Also, if {\ttfamily cb} returns \doxylink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}, the iteration stops at that point, if {\ttfamily cb} returns \doxylink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE} the iteration continues. 

References \mbox{\hyperlink{group__Eina__Iterator__Group_ga2f1e049392c06514a919ab0b741111a0}{eina\+\_\+iterator\+\_\+lock()}}, \mbox{\hyperlink{group__Eina__Iterator__Group_ga72df2ae82b55929483c6a90d3e6057cf}{eina\+\_\+iterator\+\_\+unlock()}}, \mbox{\hyperlink{group__Eina__Safety__Checks__Group_ga1ccf8538d0015b3801ff642e6156843a}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN}}, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}, \mbox{\hyperlink{struct__Eina__Iterator_ad6e11988297f629a96f4ebc84a96f7b6}{\+\_\+\+Eina\+\_\+\+Iterator\+::get\+\_\+container}}, and \mbox{\hyperlink{struct__Eina__Iterator_a7909c5b443279e436f643c4e6e81a5bb}{\+\_\+\+Eina\+\_\+\+Iterator\+::next}}.



Referenced by \mbox{\hyperlink{group__Eina__Hash__Group_ga9237dbade8e59ac827992c7a5146cb20}{eina\+\_\+hash\+\_\+foreach()}}.

\Hypertarget{group__Eina__Iterator__Group_ga2f1e049392c06514a919ab0b741111a0}\label{group__Eina__Iterator__Group_ga2f1e049392c06514a919ab0b741111a0} 
\index{Iterator Functions@{Iterator Functions}!eina\_iterator\_lock@{eina\_iterator\_lock}}
\index{eina\_iterator\_lock@{eina\_iterator\_lock}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{eina\_iterator\_lock()}{eina\_iterator\_lock()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+iterator\+\_\+lock (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}}]{iterator }\end{DoxyParamCaption})}



Locks the container of the iterator. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em iterator} & The iterator. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\doxylink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE} on success, \doxylink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE} otherwise.
\end{DoxyReturn}
If the container of the {\ttfamily iterator} permits it, it will be locked. When a container is locked calling \doxylink{group__Eina__Iterator__Group_gaff9c1e02361afa3abcede2fd4056d286}{eina\+\_\+iterator\+\_\+foreach()} on it will return immediately. If {\ttfamily iterator} is {\ttfamily NULL} or if a problem occurred, \doxylink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE} is returned, otherwise \doxylink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE} is returned. If the container isn\textquotesingle{}t lockable, it will return \doxylink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}.

\begin{DoxyWarning}{Warning}
None of the existing eina data structures are lockable. 
\end{DoxyWarning}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}, and \mbox{\hyperlink{struct__Eina__Iterator_af04ec44e5ebc29af7129b4faef32f14a}{\+\_\+\+Eina\+\_\+\+Iterator\+::lock}}.



Referenced by \mbox{\hyperlink{group__Eina__Iterator__Group_gaff9c1e02361afa3abcede2fd4056d286}{eina\+\_\+iterator\+\_\+foreach()}}.

\Hypertarget{group__Eina__Iterator__Group_ga72df2ae82b55929483c6a90d3e6057cf}\label{group__Eina__Iterator__Group_ga72df2ae82b55929483c6a90d3e6057cf} 
\index{Iterator Functions@{Iterator Functions}!eina\_iterator\_unlock@{eina\_iterator\_unlock}}
\index{eina\_iterator\_unlock@{eina\_iterator\_unlock}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{eina\_iterator\_unlock()}{eina\_iterator\_unlock()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+iterator\+\_\+unlock (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}}]{iterator }\end{DoxyParamCaption})}



Unlocks the container of the iterator. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em iterator} & The iterator. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\doxylink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE} on success, \doxylink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE} otherwise.
\end{DoxyReturn}
If the container of the {\ttfamily iterator} permits it and was previously locked, it will be unlocked. If {\ttfamily iterator} is {\ttfamily NULL} or if a problem occurred, \doxylink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE} is returned, otherwise \doxylink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE} is returned. If the container is not lockable, it will return \doxylink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}.

\begin{DoxyWarning}{Warning}
None of the existing eina data structures are lockable. 
\end{DoxyWarning}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}, and \mbox{\hyperlink{struct__Eina__Iterator_a7343ff9e3d80a32ed2ab1d3476e38c76}{\+\_\+\+Eina\+\_\+\+Iterator\+::unlock}}.



Referenced by \mbox{\hyperlink{group__Eina__Iterator__Group_gaff9c1e02361afa3abcede2fd4056d286}{eina\+\_\+iterator\+\_\+foreach()}}.

\Hypertarget{group__Eina__Iterator__Group_gafb908cde115999ef72fdf0d51998bc42}\label{group__Eina__Iterator__Group_gafb908cde115999ef72fdf0d51998bc42} 
\index{Iterator Functions@{Iterator Functions}!eina\_carray\_iterator\_new@{eina\_carray\_iterator\_new}}
\index{eina\_carray\_iterator\_new@{eina\_carray\_iterator\_new}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{eina\_carray\_iterator\_new()}{eina\_carray\_iterator\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*} eina\+\_\+carray\+\_\+iterator\+\_\+new (\begin{DoxyParamCaption}\item[{void \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{array }\end{DoxyParamCaption})}



Creates an Eina\+\_\+\+Iterator that iterates through a NUL-\/terminated C array. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em array} & The NUL-\/terminated array \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The iterator that will walk over the array.
\end{DoxyReturn}
You can create it like this\+: int array\mbox{[}\mbox{]} = \{1, 2, 3, 4\}; int\texorpdfstring{$\ast$}{*} array2\mbox{[}\mbox{]} = \{\&array\mbox{[}0\mbox{]}, \&array\mbox{[}1\mbox{]}, \&array\mbox{[}2\mbox{]}, \&array\mbox{[}3\mbox{]}, NULL\};

Eina\+\_\+\+Iterator\texorpdfstring{$\ast$}{*} iterator = eina\+\_\+carray\+\_\+iterator\+\_\+new((void\texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*})array2);

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


References \mbox{\hyperlink{group__Eina__Magic__Group_ga470f5ce28eaaf59ce80523be8471c5e0}{EINA\+\_\+\+MAGIC\+\_\+\+SET}}, \mbox{\hyperlink{struct__Eina__Iterator_a3367d7b0def2730f91ba2528fb9c21d6}{\+\_\+\+Eina\+\_\+\+Iterator\+::free}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gad1ea4d3a7e58b47b23073a58e869d167}{FUNC\+\_\+\+ITERATOR\+\_\+\+FREE}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gab41f5a30f0a2030f4a832548d18332db}{FUNC\+\_\+\+ITERATOR\+\_\+\+GET\+\_\+\+CONTAINER}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gaec80e80b2867e391b0b27f5f20c3a5b3}{FUNC\+\_\+\+ITERATOR\+\_\+\+NEXT}}, \mbox{\hyperlink{struct__Eina__Iterator_ad6e11988297f629a96f4ebc84a96f7b6}{\+\_\+\+Eina\+\_\+\+Iterator\+::get\+\_\+container}}, \mbox{\hyperlink{struct__Eina__Iterator_a7909c5b443279e436f643c4e6e81a5bb}{\+\_\+\+Eina\+\_\+\+Iterator\+::next}}, and \mbox{\hyperlink{struct__Eina__Iterator_abffd33e8457342ede2c6c6c0ed1af275}{\+\_\+\+Eina\+\_\+\+Iterator\+::version}}.

\Hypertarget{group__Eina__Iterator__Group_ga9884512f6520a104f4421c66235c2371}\label{group__Eina__Iterator__Group_ga9884512f6520a104f4421c66235c2371} 
\index{Iterator Functions@{Iterator Functions}!eina\_carray\_length\_iterator\_new@{eina\_carray\_length\_iterator\_new}}
\index{eina\_carray\_length\_iterator\_new@{eina\_carray\_length\_iterator\_new}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{eina\_carray\_length\_iterator\_new()}{eina\_carray\_length\_iterator\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*} eina\+\_\+carray\+\_\+length\+\_\+iterator\+\_\+new (\begin{DoxyParamCaption}\item[{void \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{array,  }\item[{unsigned int}]{step,  }\item[{unsigned int}]{length }\end{DoxyParamCaption})}



Creates an Eina\+\_\+\+Iterator that iterates through a C array of specified size. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em array} & The array \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The iterator that will walk over the array.
\end{DoxyReturn}
You can create it like this\+: int array\mbox{[}\mbox{]} = \{1, 2, 3, 4\};

Eina\+\_\+\+Iterator\texorpdfstring{$\ast$}{*} iterator = eina\+\_\+carray\+\_\+length\+\_\+iterator\+\_\+new((void\texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*})array, sizeof (array\mbox{[}0\mbox{]}), (\doxylink{group__Eina__Types__Group_ga7c1b6f81660b4e30516169e9e7d3261c}{EINA\+\_\+\+C\+\_\+\+ARRAY\+\_\+\+LENGTH(array)});

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


References \mbox{\hyperlink{group__Eina__Magic__Group_ga470f5ce28eaaf59ce80523be8471c5e0}{EINA\+\_\+\+MAGIC\+\_\+\+SET}}, \mbox{\hyperlink{struct__Eina__Iterator_a3367d7b0def2730f91ba2528fb9c21d6}{\+\_\+\+Eina\+\_\+\+Iterator\+::free}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gad1ea4d3a7e58b47b23073a58e869d167}{FUNC\+\_\+\+ITERATOR\+\_\+\+FREE}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gab41f5a30f0a2030f4a832548d18332db}{FUNC\+\_\+\+ITERATOR\+\_\+\+GET\+\_\+\+CONTAINER}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gaec80e80b2867e391b0b27f5f20c3a5b3}{FUNC\+\_\+\+ITERATOR\+\_\+\+NEXT}}, \mbox{\hyperlink{struct__Eina__Iterator_ad6e11988297f629a96f4ebc84a96f7b6}{\+\_\+\+Eina\+\_\+\+Iterator\+::get\+\_\+container}}, \mbox{\hyperlink{struct__Eina__Iterator_a7909c5b443279e436f643c4e6e81a5bb}{\+\_\+\+Eina\+\_\+\+Iterator\+::next}}, and \mbox{\hyperlink{struct__Eina__Iterator_abffd33e8457342ede2c6c6c0ed1af275}{\+\_\+\+Eina\+\_\+\+Iterator\+::version}}.

\Hypertarget{group__Eina__Iterator__Group_ga41c2a40f9b815558a043b32e4370ef90}\label{group__Eina__Iterator__Group_ga41c2a40f9b815558a043b32e4370ef90} 
\index{Iterator Functions@{Iterator Functions}!eina\_iterator\_filter\_new@{eina\_iterator\_filter\_new}}
\index{eina\_iterator\_filter\_new@{eina\_iterator\_filter\_new}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{eina\_iterator\_filter\_new()}{eina\_iterator\_filter\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*} eina\+\_\+iterator\+\_\+filter\+\_\+new (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}}]{original,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_gab115f6c19b6641ab5ba22ed45d9b7aa4}{Eina\+\_\+\+Each\+\_\+\+Cb}}}]{filter,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}}}]{free\+\_\+cb,  }\item[{void \texorpdfstring{$\ast$}{*}}]{data }\end{DoxyParamCaption})}



Creates a new iterator which which iterates through all elements with are accepted by the filter callback. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em original} & the iterator the use as original set \\
\hline
\mbox{\texttt{ in}}  & {\em filter} & if the callback returns true the element from the original set is taken into the the new set. \\
\hline
\mbox{\texttt{ in}}  & {\em free\+\_\+cb} & when the iterator is gone this callback will be called with data as argument \\
\hline
\mbox{\texttt{ in}}  & {\em data} & the data which is passed to the filter callback\\
\hline
\end{DoxyParams}
The iterator is filtered while it is being iterated. The original iterator you pass in here is is then owned and will be freed once the the new iterator is freed.

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


References \mbox{\hyperlink{group__Eina__Magic__Group_ga470f5ce28eaaf59ce80523be8471c5e0}{EINA\+\_\+\+MAGIC\+\_\+\+SET}}, \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, \mbox{\hyperlink{struct__Eina__Iterator_a3367d7b0def2730f91ba2528fb9c21d6}{\+\_\+\+Eina\+\_\+\+Iterator\+::free}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gad1ea4d3a7e58b47b23073a58e869d167}{FUNC\+\_\+\+ITERATOR\+\_\+\+FREE}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gab41f5a30f0a2030f4a832548d18332db}{FUNC\+\_\+\+ITERATOR\+\_\+\+GET\+\_\+\+CONTAINER}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gaec80e80b2867e391b0b27f5f20c3a5b3}{FUNC\+\_\+\+ITERATOR\+\_\+\+NEXT}}, \mbox{\hyperlink{struct__Eina__Iterator_ad6e11988297f629a96f4ebc84a96f7b6}{\+\_\+\+Eina\+\_\+\+Iterator\+::get\+\_\+container}}, \mbox{\hyperlink{struct__Eina__Iterator_a7909c5b443279e436f643c4e6e81a5bb}{\+\_\+\+Eina\+\_\+\+Iterator\+::next}}, and \mbox{\hyperlink{struct__Eina__Iterator_abffd33e8457342ede2c6c6c0ed1af275}{\+\_\+\+Eina\+\_\+\+Iterator\+::version}}.

\Hypertarget{group__Eina__Iterator__Group_gad8e165710ece870e6139ab02c6705235}\label{group__Eina__Iterator__Group_gad8e165710ece870e6139ab02c6705235} 
\index{Iterator Functions@{Iterator Functions}!eina\_multi\_iterator\_internal\_new@{eina\_multi\_iterator\_internal\_new}}
\index{eina\_multi\_iterator\_internal\_new@{eina\_multi\_iterator\_internal\_new}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{eina\_multi\_iterator\_internal\_new()}{eina\_multi\_iterator\_internal\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*} eina\+\_\+multi\+\_\+iterator\+\_\+internal\+\_\+new (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}}]{it,  }\item[{}]{... }\end{DoxyParamCaption})}



Creates an Eina\+\_\+\+Iterator that iterates through a series of Eina\+\_\+\+Iterator. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em it} & The first Eina\+\_\+\+Iterator to iterate over \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The iterator that will walk all the other iterator
\end{DoxyReturn}
Eina\+\_\+\+Iterator\texorpdfstring{$\ast$}{*} iterator = \doxylink{group__Eina__Iterator__Group_gad00de79d25cdeb74c1e1438aa14340f7}{eina\+\_\+multi\+\_\+iterator\+\_\+new(it1, it2, it3, NULL)};

\begin{DoxyNote}{Note}
The returned array will destroy iterator given to it once they are not necessary anymore. Taking ownership of those iterator.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+22 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__List__Group_ga625698a383dda8fc0db245a1c7608c49}{eina\+\_\+list\+\_\+append()}}, \mbox{\hyperlink{group__Eina__Magic__Group_ga470f5ce28eaaf59ce80523be8471c5e0}{EINA\+\_\+\+MAGIC\+\_\+\+SET}}, \mbox{\hyperlink{struct__Eina__Iterator_a3367d7b0def2730f91ba2528fb9c21d6}{\+\_\+\+Eina\+\_\+\+Iterator\+::free}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gad1ea4d3a7e58b47b23073a58e869d167}{FUNC\+\_\+\+ITERATOR\+\_\+\+FREE}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gab41f5a30f0a2030f4a832548d18332db}{FUNC\+\_\+\+ITERATOR\+\_\+\+GET\+\_\+\+CONTAINER}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gaec80e80b2867e391b0b27f5f20c3a5b3}{FUNC\+\_\+\+ITERATOR\+\_\+\+NEXT}}, \mbox{\hyperlink{struct__Eina__Iterator_ad6e11988297f629a96f4ebc84a96f7b6}{\+\_\+\+Eina\+\_\+\+Iterator\+::get\+\_\+container}}, \mbox{\hyperlink{struct__Eina__Iterator_a7909c5b443279e436f643c4e6e81a5bb}{\+\_\+\+Eina\+\_\+\+Iterator\+::next}}, and \mbox{\hyperlink{struct__Eina__Iterator_abffd33e8457342ede2c6c6c0ed1af275}{\+\_\+\+Eina\+\_\+\+Iterator\+::version}}.

\Hypertarget{group__Eina__Iterator__Group_ga0a46f2b4c9dd624b4791e4c92018eb83}\label{group__Eina__Iterator__Group_ga0a46f2b4c9dd624b4791e4c92018eb83} 
\index{Iterator Functions@{Iterator Functions}!eina\_iterator\_processed\_new@{eina\_iterator\_processed\_new}}
\index{eina\_iterator\_processed\_new@{eina\_iterator\_processed\_new}!Iterator Functions@{Iterator Functions}}
\doxysubsubsubsubsubsection{\texorpdfstring{eina\_iterator\_processed\_new()}{eina\_iterator\_processed\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga6ac08753ba12bc9c7a0390cf67868f4f}{EINA\+\_\+\+API}} \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*} eina\+\_\+iterator\+\_\+processed\+\_\+new (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} \texorpdfstring{$\ast$}{*}}]{iterator,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_gab82b2d5e4aac0bdf2a865bd046682125}{Eina\+\_\+\+Process\+\_\+\+Cb}}}]{process,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}}}]{free\+\_\+cb,  }\item[{void \texorpdfstring{$\ast$}{*}}]{fdata }\end{DoxyParamCaption})}



Calls the process method on each node of iterator, producing new "{}processed"{} nodes and returning a new iterator which contains them. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em iterator} & Iterator containing the nodes to process. \\
\hline
\mbox{\texttt{ in}}  & {\em process} & Method to call on each node. \\
\hline
\mbox{\texttt{ in}}  & {\em free\+\_\+cb} & Method called when all nodes have been processed. It receives "{}data"{} as a parameter. \\
\hline
\mbox{\texttt{ in}}  & {\em fdata} & Additional data passed to the process method.\\
\hline
\end{DoxyParams}
Processes every node in the input iterator and returns a new iterator containing the processed nodes. This is akin to a Map function\+: \href{https://en.wikipedia.org/wiki/Map_(higher-order_function)}{\texttt{ https\+://en.\+wikipedia.\+org/wiki/\+Map\+\_\+(higher-\/order\+\_\+function)}}

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


References \mbox{\hyperlink{group__Eina__Magic__Group_ga470f5ce28eaaf59ce80523be8471c5e0}{EINA\+\_\+\+MAGIC\+\_\+\+SET}}, \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, \mbox{\hyperlink{struct__Eina__Iterator_a3367d7b0def2730f91ba2528fb9c21d6}{\+\_\+\+Eina\+\_\+\+Iterator\+::free}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gad1ea4d3a7e58b47b23073a58e869d167}{FUNC\+\_\+\+ITERATOR\+\_\+\+FREE}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gab41f5a30f0a2030f4a832548d18332db}{FUNC\+\_\+\+ITERATOR\+\_\+\+GET\+\_\+\+CONTAINER}}, \mbox{\hyperlink{group__Eina__Iterator__Group_gaec80e80b2867e391b0b27f5f20c3a5b3}{FUNC\+\_\+\+ITERATOR\+\_\+\+NEXT}}, \mbox{\hyperlink{struct__Eina__Iterator_ad6e11988297f629a96f4ebc84a96f7b6}{\+\_\+\+Eina\+\_\+\+Iterator\+::get\+\_\+container}}, \mbox{\hyperlink{struct__Eina__Iterator_a7909c5b443279e436f643c4e6e81a5bb}{\+\_\+\+Eina\+\_\+\+Iterator\+::next}}, and \mbox{\hyperlink{struct__Eina__Iterator_abffd33e8457342ede2c6c6c0ed1af275}{\+\_\+\+Eina\+\_\+\+Iterator\+::version}}.

