\hypertarget{group__Eina__CList__Group}{}\section{Compact List}
\label{group__Eina__CList__Group}\index{Compact List@{Compact List}}


Eina\+\_\+\+Clist is a compact (inline) list implementation.  


\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{struct__Eina__Clist}{\+\_\+\+Eina\+\_\+\+Clist}
\begin{DoxyCompactList}\small\item\em The structure type for a compact list type. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{group__Eina__CList__Group_gaf45901a38d6f762fa1a9aab5b638822a}{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+CH}(cursor,  list)~for ((cursor) = (list)-\/$>$next; (cursor) != (list); (cursor) = (cursor)-\/$>$next)
\begin{DoxyCompactList}\small\item\em Iterates through the list. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__CList__Group_ga48eca25b9697171656fd627dc938dce9}{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+FE}(cursor,  cursor2,  list)
\begin{DoxyCompactList}\small\item\em Iterates through the list, with safety against removal. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__CList__Group_ga4fda72f086ac725847ee8f4698143bdb}{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+RY}(elem,  list,  type,  field)
\begin{DoxyCompactList}\small\item\em Iterates through the list using a list entry. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__CList__Group_gaea87b09ce58cf213deafb68656e5b38a}{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+FE}(cursor,  cursor2,  list,  type,  field)
\begin{DoxyCompactList}\small\item\em Iterates through the list using a list entry, with safety against removal. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__CList__Group_gacdcec93933377ba0b577032c5599b7eb}{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+R\+EV}(cursor,  list)~for ((cursor) = (list)-\/$>$prev; (cursor) != (list); (cursor) = (cursor)-\/$>$prev)
\begin{DoxyCompactList}\small\item\em Iterates through the list in the reverse order. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__CList__Group_ga4f6cefba0003753f55c8969d3a011c6d}{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV}(cursor,  cursor2,  list)
\begin{DoxyCompactList}\small\item\em Iterates through the list in the reverse order, with safety against removal. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__CList__Group_gadb0fcb82cad52208c17857739eeb84dc}{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+R\+EV}(elem,  list,  type,  field)
\begin{DoxyCompactList}\small\item\em Iterates through the list in the reverse order using a list entry. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__CList__Group_gac827069ff3728630c3f11d00006376ab}{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV}(cursor,  cursor2,  list,  type,  field)
\begin{DoxyCompactList}\small\item\em Iterates through the list in the reverse order using a list entry, with safety against removal. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__CList__Group_ga449d329e372ab46d8ad30dbdc3d245ec}{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+I\+N\+IT}(list)~\{ \&(list), \&(list) \}
\begin{DoxyCompactList}\small\item\em Macros for statically initialized lists. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+E\+N\+T\+RY}(elem,  type,  field)~((type $\ast$)((char $\ast$)(elem) -\/ (uintptr\+\_\+t)(\&((type $\ast$)0)-\/$>$field)))
\begin{DoxyCompactList}\small\item\em Gets a pointer to the object containing the list element. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \hyperlink{struct__Eina__Clist}{\+\_\+\+Eina\+\_\+\+Clist} \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}
\begin{DoxyCompactList}\small\item\em Type for \hyperlink{struct__Eina__Clist}{\+\_\+\+Eina\+\_\+\+Clist} structure containing the list head and the list entry. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static void \hyperlink{group__Eina__CList__Group_ga493b7f959f88078dff955222a9ef3d93}{eina\+\_\+clist\+\_\+add\+\_\+after} (\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$elem, \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$to\+\_\+add)
\begin{DoxyCompactList}\small\item\em Adds an element after the specified one. \end{DoxyCompactList}\item 
static void \hyperlink{group__Eina__CList__Group_ga3aae43d235c9ab26264982c3e9f4e117}{eina\+\_\+clist\+\_\+add\+\_\+before} (\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$elem, \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$to\+\_\+add)
\begin{DoxyCompactList}\small\item\em Adds an element before the specified one. \end{DoxyCompactList}\item 
static void \hyperlink{group__Eina__CList__Group_ga910366c10f42cf9b121ee1732226e5f6}{eina\+\_\+clist\+\_\+add\+\_\+head} (\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$list, \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$elem)
\begin{DoxyCompactList}\small\item\em Adds an element to the head of the list. \end{DoxyCompactList}\item 
static void \hyperlink{group__Eina__CList__Group_ga118547dd84795935ea3851b4ea691376}{eina\+\_\+clist\+\_\+add\+\_\+tail} (\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$list, \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$elem)
\begin{DoxyCompactList}\small\item\em Adds an element at the tail of the list. \end{DoxyCompactList}\item 
static void \hyperlink{group__Eina__CList__Group_gaf3553c4de546f4218073a8eec8e6672c}{eina\+\_\+clist\+\_\+element\+\_\+init} (\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$elem)
\begin{DoxyCompactList}\small\item\em Inits an (unlinked) element. \end{DoxyCompactList}\item 
static int \hyperlink{group__Eina__CList__Group_gae492b328ee374b7e5769dff450782e27}{eina\+\_\+clist\+\_\+element\+\_\+is\+\_\+linked} (\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$elem)
\begin{DoxyCompactList}\small\item\em Checks whether an element is in a list. \end{DoxyCompactList}\item 
static void \hyperlink{group__Eina__CList__Group_ga3170c16d10e787b17f33356948372112}{eina\+\_\+clist\+\_\+remove} (\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$elem)
\begin{DoxyCompactList}\small\item\em Removes an element from its list. \end{DoxyCompactList}\item 
static \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$ \hyperlink{group__Eina__CList__Group_gaedb8d8985e7e9b849a68049554f0bddf}{eina\+\_\+clist\+\_\+next} (const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$list, const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$elem)
\begin{DoxyCompactList}\small\item\em Gets the next element. \end{DoxyCompactList}\item 
static \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$ \hyperlink{group__Eina__CList__Group_ga3a5ed1654f0cd481d39e6ff03a6905b9}{eina\+\_\+clist\+\_\+prev} (const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$list, const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$elem)
\begin{DoxyCompactList}\small\item\em Gets the previous element. \end{DoxyCompactList}\item 
static \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$ \hyperlink{group__Eina__CList__Group_ga2109d4a0362f2acada10383598cad372}{eina\+\_\+clist\+\_\+head} (const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$list)
\begin{DoxyCompactList}\small\item\em Gets the first element. \end{DoxyCompactList}\item 
static \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$ \hyperlink{group__Eina__CList__Group_ga884734c528bd98c85ee6613337bd352a}{eina\+\_\+clist\+\_\+tail} (const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$list)
\begin{DoxyCompactList}\small\item\em Gets the last element. \end{DoxyCompactList}\item 
static int \hyperlink{group__Eina__CList__Group_ga8650dd1db0787807819137f8e3172843}{eina\+\_\+clist\+\_\+empty} (const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$list)
\begin{DoxyCompactList}\small\item\em Checks whether a list is empty. \end{DoxyCompactList}\item 
static void \hyperlink{group__Eina__CList__Group_ga84fb214ce4dd6013855311e427f033c4}{eina\+\_\+clist\+\_\+init} (\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$list)
\begin{DoxyCompactList}\small\item\em Initializes a list. \end{DoxyCompactList}\item 
static unsigned int \hyperlink{group__Eina__CList__Group_gaee0c6918f739112ed7e15c976333278b}{eina\+\_\+clist\+\_\+count} (const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$list)
\begin{DoxyCompactList}\small\item\em Counts the elements of a list. \end{DoxyCompactList}\item 
static void \hyperlink{group__Eina__CList__Group_gaf0300bd29b6389aff6f68a4d6036a5f4}{eina\+\_\+clist\+\_\+move\+\_\+tail} (\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$dst, \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$src)
\begin{DoxyCompactList}\small\item\em Moves all elements from {\ttfamily src} to the tail of {\ttfamily dst}. \end{DoxyCompactList}\item 
static void \hyperlink{group__Eina__CList__Group_ga210332124f7d89295e4463cccf5dc6b9}{eina\+\_\+clist\+\_\+move\+\_\+head} (\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$dst, \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$src)
\begin{DoxyCompactList}\small\item\em Moves all elements from {\ttfamily src} to the head of {\ttfamily dst}. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Eina\+\_\+\+Clist is a compact (inline) list implementation. 

Elements of this list are members of the structs stored in the list.

Advantages over \hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List} and \hyperlink{group__Eina__Inline__List__Group_gad93973c87f867f249482e936797096ad}{Eina\+\_\+\+Inlist} \+:
\begin{DoxyItemize}
\item Uses less memory (two machine words per item).
\item Allows removing items without knowing which list they\textquotesingle{}re in while using O(1) time.
\item Doesn\textquotesingle{}t need to keep updating the head pointer as the list is changed.
\end{DoxyItemize}

Disadvantages\+:
\begin{DoxyItemize}
\item O(\+N) time to calculate the list length.
\item Requires one list entry in a struct per list (i.\+e. it\textquotesingle{}s an inlist).
\item Requires a head/tail pointer.
\item Needs to know the list head when moving to the next or previous pointer.
\end{DoxyItemize}

\begin{DoxyNote}{Note}
There\textquotesingle{}s no {\ttfamily N\+U\+LL} at the end of the list, the last item points to the head.

List heads must be initialized with E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+I\+N\+IT or by calling eina\+\_\+clist\+\_\+element\+\_\+init.
\end{DoxyNote}
Define a list as follows\+:


\begin{DoxyCode}
\textcolor{keyword}{struct }gadget
\{
    \textcolor{keyword}{struct }\hyperlink{struct__Eina__Clist}{Eina\_Clist}  entry;   <-- doesn\textcolor{stringliteral}{'t have to be the first item in the struct}
\textcolor{stringliteral}{    int                a, b;}
\textcolor{stringliteral}{\};}
\textcolor{stringliteral}{}
\textcolor{stringliteral}{static Eina\_Clist global\_gadgets = EINA\_CLIST\_INIT( global\_gadgets );}
\end{DoxyCode}


or


\begin{DoxyCode}
\textcolor{keyword}{struct }some\_global\_thing
\{
    \hyperlink{struct__Eina__Clist}{Eina\_Clist} gadgets;
\};

\hyperlink{group__Eina__CList__Group_ga84fb214ce4dd6013855311e427f033c4}{eina\_clist\_init}( &some\_global\_thing->gadgets );
\end{DoxyCode}


Manipulate it like this\+:


\begin{DoxyCode}
\hyperlink{group__Eina__CList__Group_ga910366c10f42cf9b121ee1732226e5f6}{eina\_clist\_add\_head}( &global\_gadgets, &new\_gadget->entry );
\hyperlink{group__Eina__CList__Group_ga3170c16d10e787b17f33356948372112}{eina\_clist\_remove}( &new\_gadget->entry );
\hyperlink{group__Eina__CList__Group_ga493b7f959f88078dff955222a9ef3d93}{eina\_clist\_add\_after}( &some\_random\_gadget->entry, &new\_gadget->entry );
\end{DoxyCode}


And to iterate over it\+:


\begin{DoxyCode}
\textcolor{keyword}{struct }gadget *gadget;
\hyperlink{group__Eina__CList__Group_ga4fda72f086ac725847ee8f4698143bdb}{EINA\_CLIST\_FOR\_EACH\_ENTRY}( gadget, &global\_gadgets, \textcolor{keyword}{struct} gadget, entry )
\{
    ...
\}
\end{DoxyCode}
 

\subsection{Macro Definition Documentation}
\mbox{\Hypertarget{group__Eina__CList__Group_gaf45901a38d6f762fa1a9aab5b638822a}\label{group__Eina__CList__Group_gaf45901a38d6f762fa1a9aab5b638822a}} 
\index{Compact List@{Compact List}!E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+CH@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+CH}}
\index{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+CH@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+CH}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+CH}{EINA\_CLIST\_FOR\_EACH}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+CH(\begin{DoxyParamCaption}\item[{}]{cursor,  }\item[{}]{list }\end{DoxyParamCaption})~for ((cursor) = (list)-\/$>$next; (cursor) != (list); (cursor) = (cursor)-\/$>$next)}



Iterates through the list. 


\begin{DoxyParams}{Parameters}
{\em cursor} & The pointer to be used during the interaction \\
\hline
{\em list} & The list to be interacted with \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_ga48eca25b9697171656fd627dc938dce9}\label{group__Eina__CList__Group_ga48eca25b9697171656fd627dc938dce9}} 
\index{Compact List@{Compact List}!E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+FE@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+FE}}
\index{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+FE@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+FE}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+FE}{EINA\_CLIST\_FOR\_EACH\_SAFE}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+FE(\begin{DoxyParamCaption}\item[{}]{cursor,  }\item[{}]{cursor2,  }\item[{}]{list }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{for} ((cursor) = (list)->next, (cursor2) = (cursor)->next; \(\backslash\)
         (cursor) != (list); \(\backslash\)
         (cursor) = (cursor2), (cursor2) = (cursor)->next)
\end{DoxyCode}


Iterates through the list, with safety against removal. 


\begin{DoxyParams}{Parameters}
{\em cursor} & The pointer to be used during the interaction \\
\hline
{\em cursor2} & The auxiliar pointer to be used during the interaction \\
\hline
{\em list} & The list to be interacted with \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_ga4fda72f086ac725847ee8f4698143bdb}\label{group__Eina__CList__Group_ga4fda72f086ac725847ee8f4698143bdb}} 
\index{Compact List@{Compact List}!E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+RY@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+RY}}
\index{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+RY@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+RY}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+RY}{EINA\_CLIST\_FOR\_EACH\_ENTRY}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+RY(\begin{DoxyParamCaption}\item[{}]{elem,  }\item[{}]{list,  }\item[{}]{type,  }\item[{}]{field }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{for} ((elem) = \hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}((list)->next, type, field); \(\backslash\)
         &(elem)->field != (list); \(\backslash\)
         (elem) = \hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}((elem)->field.next, type, field))
\end{DoxyCode}


Iterates through the list using a list entry. 


\begin{DoxyParams}{Parameters}
{\em elem} & The element to be used \\
\hline
{\em list} & The list to be iterated \\
\hline
{\em type} & The type of the list \\
\hline
{\em field} & The field of the element \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_gaea87b09ce58cf213deafb68656e5b38a}\label{group__Eina__CList__Group_gaea87b09ce58cf213deafb68656e5b38a}} 
\index{Compact List@{Compact List}!E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+FE@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+FE}}
\index{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+FE@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+FE}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+FE}{EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+FE(\begin{DoxyParamCaption}\item[{}]{cursor,  }\item[{}]{cursor2,  }\item[{}]{list,  }\item[{}]{type,  }\item[{}]{field }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{for} ((cursor) = \hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}((list)->next, type, field), \(\backslash\)
         (cursor2) = \hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}((cursor)->field.next, type, field); \(\backslash\)
         &(cursor)->field != (list); \(\backslash\)
         (cursor) = (cursor2), \(\backslash\)
         (cursor2) = \hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}((cursor)->field.next, type, field))
\end{DoxyCode}


Iterates through the list using a list entry, with safety against removal. 


\begin{DoxyParams}{Parameters}
{\em cursor} & The pointer to be used during the interaction \\
\hline
{\em cursor2} & The auxiliar pointer to be used during the interaction \\
\hline
{\em list} & The list to be interacted with \\
\hline
{\em type} & The type of the list \\
\hline
{\em field} & The field of the element \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_gacdcec93933377ba0b577032c5599b7eb}\label{group__Eina__CList__Group_gacdcec93933377ba0b577032c5599b7eb}} 
\index{Compact List@{Compact List}!E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+R\+EV@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+R\+EV}}
\index{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+R\+EV@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+R\+EV}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+R\+EV}{EINA\_CLIST\_FOR\_EACH\_REV}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+R\+EV(\begin{DoxyParamCaption}\item[{}]{cursor,  }\item[{}]{list }\end{DoxyParamCaption})~for ((cursor) = (list)-\/$>$prev; (cursor) != (list); (cursor) = (cursor)-\/$>$prev)}



Iterates through the list in the reverse order. 


\begin{DoxyParams}{Parameters}
{\em cursor} & The pointer to be used during the interaction \\
\hline
{\em list} & The list to be interacted with \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_ga4f6cefba0003753f55c8969d3a011c6d}\label{group__Eina__CList__Group_ga4f6cefba0003753f55c8969d3a011c6d}} 
\index{Compact List@{Compact List}!E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV}}
\index{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV}{EINA\_CLIST\_FOR\_EACH\_SAFE\_REV}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV(\begin{DoxyParamCaption}\item[{}]{cursor,  }\item[{}]{cursor2,  }\item[{}]{list }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{for} ((cursor) = (list)->prev, (cursor2) = (cursor)->prev; \(\backslash\)
         (cursor) != (list); \(\backslash\)
         (cursor) = (cursor2), (cursor2) = (cursor)->prev)
\end{DoxyCode}


Iterates through the list in the reverse order, with safety against removal. 


\begin{DoxyParams}{Parameters}
{\em cursor} & The pointer to be used during the interaction \\
\hline
{\em cursor2} & The auxiliar pointer to be used during the interaction \\
\hline
{\em list} & The list to be interacted with \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_gadb0fcb82cad52208c17857739eeb84dc}\label{group__Eina__CList__Group_gadb0fcb82cad52208c17857739eeb84dc}} 
\index{Compact List@{Compact List}!E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+R\+EV@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+R\+EV}}
\index{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+R\+EV@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+R\+EV}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+R\+EV}{EINA\_CLIST\_FOR\_EACH\_ENTRY\_REV}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+R\+EV(\begin{DoxyParamCaption}\item[{}]{elem,  }\item[{}]{list,  }\item[{}]{type,  }\item[{}]{field }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{for} ((elem) = \hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}((list)->prev, type, field); \(\backslash\)
         &(elem)->field != (list); \(\backslash\)
         (elem) = \hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}((elem)->field.prev, type, field))
\end{DoxyCode}


Iterates through the list in the reverse order using a list entry. 


\begin{DoxyParams}{Parameters}
{\em elem} & The element to be used \\
\hline
{\em list} & The list to be iterated \\
\hline
{\em type} & The type of the list \\
\hline
{\em field} & The field of the element \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_gac827069ff3728630c3f11d00006376ab}\label{group__Eina__CList__Group_gac827069ff3728630c3f11d00006376ab}} 
\index{Compact List@{Compact List}!E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV}}
\index{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV}{EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE\_REV}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+F\+O\+R\+\_\+\+E\+A\+C\+H\+\_\+\+E\+N\+T\+R\+Y\+\_\+\+S\+A\+F\+E\+\_\+\+R\+EV(\begin{DoxyParamCaption}\item[{}]{cursor,  }\item[{}]{cursor2,  }\item[{}]{list,  }\item[{}]{type,  }\item[{}]{field }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{for} ((cursor) = \hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}((list)->prev, type, field), \(\backslash\)
         (cursor2) = \hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}((cursor)->field.prev, type, field); \(\backslash\)
         &(cursor)->field != (list); \(\backslash\)
         (cursor) = (cursor2), \(\backslash\)
         (cursor2) = \hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}((cursor)->field.prev, type, field))
\end{DoxyCode}


Iterates through the list in the reverse order using a list entry, with safety against removal. 


\begin{DoxyParams}{Parameters}
{\em cursor} & The pointer to be used during the interaction \\
\hline
{\em cursor2} & The auxiliar pointer to be used during the interaction \\
\hline
{\em list} & The list to be interacted with \\
\hline
{\em type} & The type of the list \\
\hline
{\em field} & The field of the element \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_ga449d329e372ab46d8ad30dbdc3d245ec}\label{group__Eina__CList__Group_ga449d329e372ab46d8ad30dbdc3d245ec}} 
\index{Compact List@{Compact List}!E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+I\+N\+IT@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+I\+N\+IT}}
\index{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+I\+N\+IT@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+I\+N\+IT}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+I\+N\+IT}{EINA\_CLIST\_INIT}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+I\+N\+IT(\begin{DoxyParamCaption}\item[{}]{list }\end{DoxyParamCaption})~\{ \&(list), \&(list) \}}



Macros for statically initialized lists. 


\begin{DoxyParams}{Parameters}
{\em list} & The list to be used \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}\label{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}} 
\index{Compact List@{Compact List}!E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+E\+N\+T\+RY@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+E\+N\+T\+RY}}
\index{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+E\+N\+T\+RY@{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+E\+N\+T\+RY}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+E\+N\+T\+RY}{EINA\_CLIST\_ENTRY}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+C\+L\+I\+S\+T\+\_\+\+E\+N\+T\+RY(\begin{DoxyParamCaption}\item[{}]{elem,  }\item[{}]{type,  }\item[{}]{field }\end{DoxyParamCaption})~((type $\ast$)((char $\ast$)(elem) -\/ (uintptr\+\_\+t)(\&((type $\ast$)0)-\/$>$field)))}



Gets a pointer to the object containing the list element. 


\begin{DoxyParams}{Parameters}
{\em elem} & The element to be used \\
\hline
{\em type} & The type of the element \\
\hline
{\em field} & The field of the element \\
\hline
\end{DoxyParams}


\subsection{Typedef Documentation}
\mbox{\Hypertarget{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}\label{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}} 
\index{Compact List@{Compact List}!Eina\+\_\+\+Clist@{Eina\+\_\+\+Clist}}
\index{Eina\+\_\+\+Clist@{Eina\+\_\+\+Clist}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{Eina\+\_\+\+Clist}{Eina\_Clist}}
{\footnotesize\ttfamily \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}}



Type for \hyperlink{struct__Eina__Clist}{\+\_\+\+Eina\+\_\+\+Clist} structure containing the list head and the list entry. 

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


\subsection{Function Documentation}
\mbox{\Hypertarget{group__Eina__CList__Group_ga493b7f959f88078dff955222a9ef3d93}\label{group__Eina__CList__Group_ga493b7f959f88078dff955222a9ef3d93}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+add\+\_\+after@{eina\+\_\+clist\+\_\+add\+\_\+after}}
\index{eina\+\_\+clist\+\_\+add\+\_\+after@{eina\+\_\+clist\+\_\+add\+\_\+after}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+add\+\_\+after()}{eina\_clist\_add\_after()}}
{\footnotesize\ttfamily static void eina\+\_\+clist\+\_\+add\+\_\+after (\begin{DoxyParamCaption}\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{elem,  }\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{to\+\_\+add }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Adds an element after the specified one. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em elem} & An element in the list \\
\hline
\mbox{\tt in}  & {\em to\+\_\+add} & The element to add to the list \\
\hline
\end{DoxyParams}
\begin{DoxyPrecond}{Precondition}
The list head must be initialized once before adding anything. 

The element is not in any list.
\end{DoxyPrecond}
\begin{DoxyNote}{Note}
There is no need to initialize an element before adding it to the list.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_ga3aae43d235c9ab26264982c3e9f4e117}\label{group__Eina__CList__Group_ga3aae43d235c9ab26264982c3e9f4e117}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+add\+\_\+before@{eina\+\_\+clist\+\_\+add\+\_\+before}}
\index{eina\+\_\+clist\+\_\+add\+\_\+before@{eina\+\_\+clist\+\_\+add\+\_\+before}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+add\+\_\+before()}{eina\_clist\_add\_before()}}
{\footnotesize\ttfamily static void eina\+\_\+clist\+\_\+add\+\_\+before (\begin{DoxyParamCaption}\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{elem,  }\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{to\+\_\+add }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Adds an element before the specified one. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em elem} & An element in the list \\
\hline
\mbox{\tt in}  & {\em to\+\_\+add} & The element to add to the list \\
\hline
\end{DoxyParams}
\begin{DoxyPrecond}{Precondition}
The list head must be initialized once before adding anything. 

The element is not in any list.
\end{DoxyPrecond}
\begin{DoxyNote}{Note}
There is no need to initialize an element before adding it to the list.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_ga910366c10f42cf9b121ee1732226e5f6}\label{group__Eina__CList__Group_ga910366c10f42cf9b121ee1732226e5f6}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+add\+\_\+head@{eina\+\_\+clist\+\_\+add\+\_\+head}}
\index{eina\+\_\+clist\+\_\+add\+\_\+head@{eina\+\_\+clist\+\_\+add\+\_\+head}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+add\+\_\+head()}{eina\_clist\_add\_head()}}
{\footnotesize\ttfamily static void eina\+\_\+clist\+\_\+add\+\_\+head (\begin{DoxyParamCaption}\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{list,  }\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{elem }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Adds an element to the head of the list. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em list} & The list \\
\hline
\mbox{\tt in}  & {\em elem} & An element \\
\hline
\end{DoxyParams}
\begin{DoxyPrecond}{Precondition}
The list head must be initialized once before adding anything. 

The element is not in any list.
\end{DoxyPrecond}
\begin{DoxyNote}{Note}
There is no need to initialize an element before adding it to the list.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_ga118547dd84795935ea3851b4ea691376}\label{group__Eina__CList__Group_ga118547dd84795935ea3851b4ea691376}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+add\+\_\+tail@{eina\+\_\+clist\+\_\+add\+\_\+tail}}
\index{eina\+\_\+clist\+\_\+add\+\_\+tail@{eina\+\_\+clist\+\_\+add\+\_\+tail}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+add\+\_\+tail()}{eina\_clist\_add\_tail()}}
{\footnotesize\ttfamily static void eina\+\_\+clist\+\_\+add\+\_\+tail (\begin{DoxyParamCaption}\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{list,  }\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{elem }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Adds an element at the tail of the list. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em list} & The list \\
\hline
\mbox{\tt in}  & {\em elem} & An element \\
\hline
\end{DoxyParams}
\begin{DoxyPrecond}{Precondition}
The list head must be initialized once before adding anything. 

The element is not in any list.
\end{DoxyPrecond}
\begin{DoxyNote}{Note}
There is no need to initialize an element before adding it to the list.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_gaf3553c4de546f4218073a8eec8e6672c}\label{group__Eina__CList__Group_gaf3553c4de546f4218073a8eec8e6672c}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+element\+\_\+init@{eina\+\_\+clist\+\_\+element\+\_\+init}}
\index{eina\+\_\+clist\+\_\+element\+\_\+init@{eina\+\_\+clist\+\_\+element\+\_\+init}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+element\+\_\+init()}{eina\_clist\_element\_init()}}
{\footnotesize\ttfamily static void eina\+\_\+clist\+\_\+element\+\_\+init (\begin{DoxyParamCaption}\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{elem }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Inits an (unlinked) element. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em elem} & An element \\
\hline
\end{DoxyParams}
\begin{DoxyPrecond}{Precondition}
The element is not in any list. 
\end{DoxyPrecond}
\begin{DoxyPostcond}{Postcondition}
The element is marked as not being in any list.
\end{DoxyPostcond}
This function is called on elements that have not been added to the list so that \hyperlink{group__Eina__CList__Group_gaf3553c4de546f4218073a8eec8e6672c}{eina\+\_\+clist\+\_\+element\+\_\+init()} works correctly.

\begin{DoxyNote}{Note}
It is not necessary to call this before adding an element to this list.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_gae492b328ee374b7e5769dff450782e27}\label{group__Eina__CList__Group_gae492b328ee374b7e5769dff450782e27}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+element\+\_\+is\+\_\+linked@{eina\+\_\+clist\+\_\+element\+\_\+is\+\_\+linked}}
\index{eina\+\_\+clist\+\_\+element\+\_\+is\+\_\+linked@{eina\+\_\+clist\+\_\+element\+\_\+is\+\_\+linked}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+element\+\_\+is\+\_\+linked()}{eina\_clist\_element\_is\_linked()}}
{\footnotesize\ttfamily static int eina\+\_\+clist\+\_\+element\+\_\+is\+\_\+linked (\begin{DoxyParamCaption}\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{elem }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Checks whether an element is in a list. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em elem} & An element \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
T\+R\+UE if the element is in a list, else F\+A\+L\+SE. 
\end{DoxyReturn}
\begin{DoxyPrecond}{Precondition}
Either \hyperlink{group__Eina__CList__Group_gaf3553c4de546f4218073a8eec8e6672c}{eina\+\_\+clist\+\_\+element\+\_\+init()} has been called on {\ttfamily elem}, or it has been added to a list or removed from a list.
\end{DoxyPrecond}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_ga3170c16d10e787b17f33356948372112}\label{group__Eina__CList__Group_ga3170c16d10e787b17f33356948372112}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+remove@{eina\+\_\+clist\+\_\+remove}}
\index{eina\+\_\+clist\+\_\+remove@{eina\+\_\+clist\+\_\+remove}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+remove()}{eina\_clist\_remove()}}
{\footnotesize\ttfamily static void eina\+\_\+clist\+\_\+remove (\begin{DoxyParamCaption}\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{elem }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Removes an element from its list. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em elem} & An element \\
\hline
\end{DoxyParams}
\begin{DoxyPrecond}{Precondition}
The element is already in a list. 
\end{DoxyPrecond}
\begin{DoxyPostcond}{Postcondition}
The element is marked as not being in any list.
\end{DoxyPostcond}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_gaedb8d8985e7e9b849a68049554f0bddf}\label{group__Eina__CList__Group_gaedb8d8985e7e9b849a68049554f0bddf}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+next@{eina\+\_\+clist\+\_\+next}}
\index{eina\+\_\+clist\+\_\+next@{eina\+\_\+clist\+\_\+next}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+next()}{eina\_clist\_next()}}
{\footnotesize\ttfamily static \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}$\ast$ eina\+\_\+clist\+\_\+next (\begin{DoxyParamCaption}\item[{const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{list,  }\item[{const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{elem }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Gets the next element. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em list} & The list \\
\hline
\mbox{\tt in}  & {\em elem} & An element \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The element after {\ttfamily elem} in {\ttfamily list}, otherwise {\ttfamily N\+U\+LL} if {\ttfamily elem} is last in {\ttfamily list} 
\end{DoxyReturn}
\begin{DoxyPrecond}{Precondition}
{\ttfamily elem} is in {\ttfamily list}.
\end{DoxyPrecond}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_ga3a5ed1654f0cd481d39e6ff03a6905b9}\label{group__Eina__CList__Group_ga3a5ed1654f0cd481d39e6ff03a6905b9}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+prev@{eina\+\_\+clist\+\_\+prev}}
\index{eina\+\_\+clist\+\_\+prev@{eina\+\_\+clist\+\_\+prev}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+prev()}{eina\_clist\_prev()}}
{\footnotesize\ttfamily static \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}$\ast$ eina\+\_\+clist\+\_\+prev (\begin{DoxyParamCaption}\item[{const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{list,  }\item[{const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{elem }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Gets the previous element. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em list} & The list \\
\hline
\mbox{\tt in}  & {\em elem} & An element\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The element before {\ttfamily elem}, otherwise {\ttfamily N\+U\+LL} if {\ttfamily elem} is first in {\ttfamily list} 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_ga2109d4a0362f2acada10383598cad372}\label{group__Eina__CList__Group_ga2109d4a0362f2acada10383598cad372}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+head@{eina\+\_\+clist\+\_\+head}}
\index{eina\+\_\+clist\+\_\+head@{eina\+\_\+clist\+\_\+head}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+head()}{eina\_clist\_head()}}
{\footnotesize\ttfamily static \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}$\ast$ eina\+\_\+clist\+\_\+head (\begin{DoxyParamCaption}\item[{const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{list }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Gets the first element. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em list} & The list \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The first element in {\ttfamily list}, otherwise {\ttfamily N\+U\+LL} if {\ttfamily list} is empty
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_ga884734c528bd98c85ee6613337bd352a}\label{group__Eina__CList__Group_ga884734c528bd98c85ee6613337bd352a}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+tail@{eina\+\_\+clist\+\_\+tail}}
\index{eina\+\_\+clist\+\_\+tail@{eina\+\_\+clist\+\_\+tail}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+tail()}{eina\_clist\_tail()}}
{\footnotesize\ttfamily static \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}$\ast$ eina\+\_\+clist\+\_\+tail (\begin{DoxyParamCaption}\item[{const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{list }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Gets the last element. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em list} & The list \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The last element in {\ttfamily list}, otherwise {\ttfamily N\+U\+LL} if {\ttfamily list} is empty
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_ga8650dd1db0787807819137f8e3172843}\label{group__Eina__CList__Group_ga8650dd1db0787807819137f8e3172843}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+empty@{eina\+\_\+clist\+\_\+empty}}
\index{eina\+\_\+clist\+\_\+empty@{eina\+\_\+clist\+\_\+empty}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+empty()}{eina\_clist\_empty()}}
{\footnotesize\ttfamily static int eina\+\_\+clist\+\_\+empty (\begin{DoxyParamCaption}\item[{const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{list }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Checks whether a list is empty. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em list} & The list \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A non-\/zero value if {\ttfamily list} is empty, otherwise zero if it is not
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_ga84fb214ce4dd6013855311e427f033c4}\label{group__Eina__CList__Group_ga84fb214ce4dd6013855311e427f033c4}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+init@{eina\+\_\+clist\+\_\+init}}
\index{eina\+\_\+clist\+\_\+init@{eina\+\_\+clist\+\_\+init}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+init()}{eina\_clist\_init()}}
{\footnotesize\ttfamily static void eina\+\_\+clist\+\_\+init (\begin{DoxyParamCaption}\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{list }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Initializes a list. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em list} & The list \\
\hline
\end{DoxyParams}
\begin{DoxyPrecond}{Precondition}
The list is uninitialized 
\end{DoxyPrecond}
\begin{DoxyPostcond}{Postcondition}
The list contains no items
\end{DoxyPostcond}
\begin{DoxyNote}{Note}
Don\textquotesingle{}t call this function on a list with items 

This function must be called. Don\textquotesingle{}t try to initialize the list by zeroing out the list head.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_gaee0c6918f739112ed7e15c976333278b}\label{group__Eina__CList__Group_gaee0c6918f739112ed7e15c976333278b}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+count@{eina\+\_\+clist\+\_\+count}}
\index{eina\+\_\+clist\+\_\+count@{eina\+\_\+clist\+\_\+count}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+count()}{eina\_clist\_count()}}
{\footnotesize\ttfamily static unsigned int eina\+\_\+clist\+\_\+count (\begin{DoxyParamCaption}\item[{const \hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{list }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Counts the elements of a list. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em list} & The list \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The number of items in the list
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_gaf0300bd29b6389aff6f68a4d6036a5f4}\label{group__Eina__CList__Group_gaf0300bd29b6389aff6f68a4d6036a5f4}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+move\+\_\+tail@{eina\+\_\+clist\+\_\+move\+\_\+tail}}
\index{eina\+\_\+clist\+\_\+move\+\_\+tail@{eina\+\_\+clist\+\_\+move\+\_\+tail}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+move\+\_\+tail()}{eina\_clist\_move\_tail()}}
{\footnotesize\ttfamily static void eina\+\_\+clist\+\_\+move\+\_\+tail (\begin{DoxyParamCaption}\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{dst,  }\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Moves all elements from {\ttfamily src} to the tail of {\ttfamily dst}. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em dst} & The list to be appended to \\
\hline
\mbox{\tt in}  & {\em src} & The list to append\\
\hline
\end{DoxyParams}
\begin{DoxyPostcond}{Postcondition}
{\ttfamily src} is initialized, but is empty after this operation.
\end{DoxyPostcond}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__CList__Group_ga210332124f7d89295e4463cccf5dc6b9}\label{group__Eina__CList__Group_ga210332124f7d89295e4463cccf5dc6b9}} 
\index{Compact List@{Compact List}!eina\+\_\+clist\+\_\+move\+\_\+head@{eina\+\_\+clist\+\_\+move\+\_\+head}}
\index{eina\+\_\+clist\+\_\+move\+\_\+head@{eina\+\_\+clist\+\_\+move\+\_\+head}!Compact List@{Compact List}}
\subsubsection{\texorpdfstring{eina\+\_\+clist\+\_\+move\+\_\+head()}{eina\_clist\_move\_head()}}
{\footnotesize\ttfamily static void eina\+\_\+clist\+\_\+move\+\_\+head (\begin{DoxyParamCaption}\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{dst,  }\item[{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist} $\ast$}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Moves all elements from {\ttfamily src} to the head of {\ttfamily dst}. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em dst} & The list to be prepended to \\
\hline
\mbox{\tt in}  & {\em src} & The list to prepend\\
\hline
\end{DoxyParams}
\begin{DoxyPostcond}{Postcondition}
{\ttfamily src} is initialized, but is empty after this operation.
\end{DoxyPostcond}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
