\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 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\-C\-H}(cursor, list)~for ((cursor) = (list)-\/$>$next; (cursor) != (list); (cursor) = (cursor)-\/$>$next)
\begin{DoxyCompactList}\small\item\em Iterate 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\-F\-E}(cursor, cursor2, list)
\begin{DoxyCompactList}\small\item\em Iterate 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\-R\-Y}(elem, list, type, field)
\begin{DoxyCompactList}\small\item\em Iterate 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\-F\-E}(cursor, cursor2, list, type, field)
\begin{DoxyCompactList}\small\item\em Iterate 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\-E\-V}(cursor, list)~for ((cursor) = (list)-\/$>$prev; (cursor) != (list); (cursor) = (cursor)-\/$>$prev)
\begin{DoxyCompactList}\small\item\em Iterate through the list in 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\-E\-V}(cursor, cursor2, list)
\begin{DoxyCompactList}\small\item\em Iterate through the list in 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\-E\-V}(elem, list, type, field)
\begin{DoxyCompactList}\small\item\em Iterate through the list in 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\-E\-V}(cursor, cursor2, list, type, field)
\begin{DoxyCompactList}\small\item\em Iterate through the list in 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\-I\-T}(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\-R\-Y}(elem, type, field)~((type $\ast$)((char $\ast$)(elem) -\/ (uintptr\-\_\-t)(\&((type $\ast$)0)-\/$>$field)))
\begin{DoxyCompactList}\small\item\em Get pointer to object containing 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 This is 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 Add 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 Add 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 Add element at 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 Add 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 Init 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 Check if an element is in a list or not. \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 Remove 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 Get 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 Get 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 Get 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 Get 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 Check if 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 Initialize 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 Count 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 Move all elements from src to the tail of 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 move all elements from src to the head of 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're in using O(1) time
\item no need to keep updating the head pointer as the list is changed
\end{DoxyItemize}

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

\begin{DoxyNote}{Note}
There's no N\-U\-L\-L 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\-I\-T or by calling eina\-\_\-clist\-\_\-element\-\_\-init
\end{DoxyNote}
Define a list like so\-:


\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}
\hypertarget{group__Eina__CList__Group_gaf45901a38d6f762fa1a9aab5b638822a}{\index{Compact List@{Compact List}!E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H}}
\index{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H}!Compact List@{Compact List}}
\subsubsection[{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H(
\begin{DoxyParamCaption}
\item[{}]{cursor, }
\item[{}]{list}
\end{DoxyParamCaption}
)~for ((cursor) = (list)-\/$>$next; (cursor) != (list); (cursor) = (cursor)-\/$>$next)}}\label{group__Eina__CList__Group_gaf45901a38d6f762fa1a9aab5b638822a}


Iterate through the list. 


\begin{DoxyParams}{Parameters}
{\em cursor} & The pointer to be used during the interation. \\
\hline
{\em list} & The list to be interated. \\
\hline
\end{DoxyParams}
\hypertarget{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\-F\-E@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-S\-A\-F\-E}}
\index{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-S\-A\-F\-E@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-S\-A\-F\-E}!Compact List@{Compact List}}
\subsubsection[{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-S\-A\-F\-E}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-S\-A\-F\-E(
\begin{DoxyParamCaption}
\item[{}]{cursor, }
\item[{}]{cursor2, }
\item[{}]{list}
\end{DoxyParamCaption}
)}}\label{group__Eina__CList__Group_ga48eca25b9697171656fd627dc938dce9}
{\bfseries Value\-:}
\begin{DoxyCode}
\textcolor{keywordflow}{for} ((cursor) = (list)->next, (cursor2) = (cursor)->next; \(\backslash\)
         (cursor) != (list); \(\backslash\)
         (cursor) = (cursor2), (cursor2) = (cursor)->next)
\end{DoxyCode}


Iterate through the list, with safety against removal. 


\begin{DoxyParams}{Parameters}
{\em cursor} & The pointer to be used during the interation. \\
\hline
{\em cursor2} & The auxiliar pointer to be used during the interation. \\
\hline
{\em list} & The list to be interated. \\
\hline
\end{DoxyParams}
\hypertarget{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\-R\-Y@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-E\-N\-T\-R\-Y}}
\index{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-E\-N\-T\-R\-Y@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-E\-N\-T\-R\-Y}!Compact List@{Compact List}}
\subsubsection[{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-E\-N\-T\-R\-Y}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-E\-N\-T\-R\-Y(
\begin{DoxyParamCaption}
\item[{}]{elem, }
\item[{}]{list, }
\item[{}]{type, }
\item[{}]{field}
\end{DoxyParamCaption}
)}}\label{group__Eina__CList__Group_ga4fda72f086ac725847ee8f4698143bdb}
{\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}


Iterate 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}
\hypertarget{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\-F\-E@{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}}
\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@{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}!Compact List@{Compact List}}
\subsubsection[{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}]{\setlength{\rightskip}{0pt plus 5cm}\#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(
\begin{DoxyParamCaption}
\item[{}]{cursor, }
\item[{}]{cursor2, }
\item[{}]{list, }
\item[{}]{type, }
\item[{}]{field}
\end{DoxyParamCaption}
)}}\label{group__Eina__CList__Group_gaea87b09ce58cf213deafb68656e5b38a}
{\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}


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


\begin{DoxyParams}{Parameters}
{\em cursor} & The pointer to be used during the interation. \\
\hline
{\em cursor2} & The auxiliar pointer to be used during the interation. \\
\hline
{\em list} & The list to be interated. \\
\hline
{\em type} & The type of the list. \\
\hline
{\em field} & The field of the element. \\
\hline
\end{DoxyParams}
\hypertarget{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\-E\-V@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-R\-E\-V}}
\index{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-R\-E\-V@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-R\-E\-V}!Compact List@{Compact List}}
\subsubsection[{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-R\-E\-V}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-R\-E\-V(
\begin{DoxyParamCaption}
\item[{}]{cursor, }
\item[{}]{list}
\end{DoxyParamCaption}
)~for ((cursor) = (list)-\/$>$prev; (cursor) != (list); (cursor) = (cursor)-\/$>$prev)}}\label{group__Eina__CList__Group_gacdcec93933377ba0b577032c5599b7eb}


Iterate through the list in reverse order. 


\begin{DoxyParams}{Parameters}
{\em cursor} & The pointer to be used during the interation. \\
\hline
{\em list} & The list to be interated. \\
\hline
\end{DoxyParams}
\hypertarget{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\-E\-V@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-S\-A\-F\-E\-\_\-\-R\-E\-V}}
\index{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-S\-A\-F\-E\-\_\-\-R\-E\-V@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-S\-A\-F\-E\-\_\-\-R\-E\-V}!Compact List@{Compact List}}
\subsubsection[{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-S\-A\-F\-E\-\_\-\-R\-E\-V}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-S\-A\-F\-E\-\_\-\-R\-E\-V(
\begin{DoxyParamCaption}
\item[{}]{cursor, }
\item[{}]{cursor2, }
\item[{}]{list}
\end{DoxyParamCaption}
)}}\label{group__Eina__CList__Group_ga4f6cefba0003753f55c8969d3a011c6d}
{\bfseries Value\-:}
\begin{DoxyCode}
\textcolor{keywordflow}{for} ((cursor) = (list)->prev, (cursor2) = (cursor)->prev; \(\backslash\)
         (cursor) != (list); \(\backslash\)
         (cursor) = (cursor2), (cursor2) = (cursor)->prev)
\end{DoxyCode}


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


\begin{DoxyParams}{Parameters}
{\em cursor} & The pointer to be used during the interation. \\
\hline
{\em cursor2} & The auxiliar pointer to be used during the interation. \\
\hline
{\em list} & The list to be interated. \\
\hline
\end{DoxyParams}
\hypertarget{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\-E\-V@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-E\-N\-T\-R\-Y\-\_\-\-R\-E\-V}}
\index{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-E\-N\-T\-R\-Y\-\_\-\-R\-E\-V@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-E\-N\-T\-R\-Y\-\_\-\-R\-E\-V}!Compact List@{Compact List}}
\subsubsection[{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-E\-N\-T\-R\-Y\-\_\-\-R\-E\-V}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-F\-O\-R\-\_\-\-E\-A\-C\-H\-\_\-\-E\-N\-T\-R\-Y\-\_\-\-R\-E\-V(
\begin{DoxyParamCaption}
\item[{}]{elem, }
\item[{}]{list, }
\item[{}]{type, }
\item[{}]{field}
\end{DoxyParamCaption}
)}}\label{group__Eina__CList__Group_gadb0fcb82cad52208c17857739eeb84dc}
{\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}


Iterate through the list in 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}
\hypertarget{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\-E\-V@{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\-E\-V}}
\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\-E\-V@{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\-E\-V}!Compact List@{Compact List}}
\subsubsection[{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\-E\-V}]{\setlength{\rightskip}{0pt plus 5cm}\#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\-E\-V(
\begin{DoxyParamCaption}
\item[{}]{cursor, }
\item[{}]{cursor2, }
\item[{}]{list, }
\item[{}]{type, }
\item[{}]{field}
\end{DoxyParamCaption}
)}}\label{group__Eina__CList__Group_gac827069ff3728630c3f11d00006376ab}
{\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}


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


\begin{DoxyParams}{Parameters}
{\em cursor} & The pointer to be used during the interation. \\
\hline
{\em cursor2} & The auxiliar pointer to be used during the interation. \\
\hline
{\em list} & The list to be interated. \\
\hline
{\em type} & The type of the list. \\
\hline
{\em field} & The field of the element. \\
\hline
\end{DoxyParams}
\hypertarget{group__Eina__CList__Group_ga449d329e372ab46d8ad30dbdc3d245ec}{\index{Compact List@{Compact List}!E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-I\-N\-I\-T@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-I\-N\-I\-T}}
\index{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-I\-N\-I\-T@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-I\-N\-I\-T}!Compact List@{Compact List}}
\subsubsection[{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-I\-N\-I\-T}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-I\-N\-I\-T(
\begin{DoxyParamCaption}
\item[{}]{list}
\end{DoxyParamCaption}
)~\{ \&(list), \&(list) \}}}\label{group__Eina__CList__Group_ga449d329e372ab46d8ad30dbdc3d245ec}


Macros for statically initialized lists. 


\begin{DoxyParams}{Parameters}
{\em list} & The list to be used. \\
\hline
\end{DoxyParams}
\hypertarget{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{\index{Compact List@{Compact List}!E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-E\-N\-T\-R\-Y@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-E\-N\-T\-R\-Y}}
\index{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-E\-N\-T\-R\-Y@{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-E\-N\-T\-R\-Y}!Compact List@{Compact List}}
\subsubsection[{E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-E\-N\-T\-R\-Y}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\-I\-N\-A\-\_\-\-C\-L\-I\-S\-T\-\_\-\-E\-N\-T\-R\-Y(
\begin{DoxyParamCaption}
\item[{}]{elem, }
\item[{}]{type, }
\item[{}]{field}
\end{DoxyParamCaption}
)~((type $\ast$)((char $\ast$)(elem) -\/ (uintptr\-\_\-t)(\&((type $\ast$)0)-\/$>$field)))}}\label{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}


Get pointer to object containing 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}
\hypertarget{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{\index{Compact List@{Compact List}!Eina\-\_\-\-Clist@{Eina\-\_\-\-Clist}}
\index{Eina\-\_\-\-Clist@{Eina\-\_\-\-Clist}!Compact List@{Compact List}}
\subsubsection[{Eina\-\_\-\-Clist}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\-\_\-\-Clist}}}\label{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}


This is the list head and the list entry. 

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


\subsection{Function Documentation}
\hypertarget{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[{eina\-\_\-clist\-\_\-add\-\_\-after}]{\setlength{\rightskip}{0pt plus 5cm}static void eina\-\_\-clist\-\_\-add\-\_\-after (
\begin{DoxyParamCaption}
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{elem, }
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{to\-\_\-add}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_ga493b7f959f88078dff955222a9ef3d93}


Add an element after the specified one. 


\begin{DoxyParams}{Parameters}
{\em elem} & An element in the list \\
\hline
{\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's no need to initialize an element before adding it to the list. 
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\-1.\-0 
\end{DoxySince}
\hypertarget{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[{eina\-\_\-clist\-\_\-add\-\_\-before}]{\setlength{\rightskip}{0pt plus 5cm}static void eina\-\_\-clist\-\_\-add\-\_\-before (
\begin{DoxyParamCaption}
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{elem, }
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{to\-\_\-add}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_ga3aae43d235c9ab26264982c3e9f4e117}


Add an element before the specified one. 


\begin{DoxyParams}{Parameters}
{\em elem} & An element in the list \\
\hline
{\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's no need to initialize an element before adding it to the list. 
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\-1.\-0 
\end{DoxySince}
\hypertarget{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[{eina\-\_\-clist\-\_\-add\-\_\-head}]{\setlength{\rightskip}{0pt plus 5cm}static void eina\-\_\-clist\-\_\-add\-\_\-head (
\begin{DoxyParamCaption}
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{list, }
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{elem}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_ga910366c10f42cf9b121ee1732226e5f6}


Add element at the head of the list. 


\begin{DoxyParams}{Parameters}
{\em list} & The list \\
\hline
{\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's no need to initialize an element before adding it to the list. 
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\-1.\-0 
\end{DoxySince}
\hypertarget{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[{eina\-\_\-clist\-\_\-add\-\_\-tail}]{\setlength{\rightskip}{0pt plus 5cm}static void eina\-\_\-clist\-\_\-add\-\_\-tail (
\begin{DoxyParamCaption}
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{list, }
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{elem}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_ga118547dd84795935ea3851b4ea691376}


Add element at the tail of the list. 


\begin{DoxyParams}{Parameters}
{\em list} & The list \\
\hline
{\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's no need to initialize an element before adding it to the list. 
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\-1.\-0 
\end{DoxySince}
\hypertarget{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[{eina\-\_\-clist\-\_\-element\-\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}static void eina\-\_\-clist\-\_\-element\-\_\-init (
\begin{DoxyParamCaption}
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{elem}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_gaf3553c4de546f4218073a8eec8e6672c}


Init an (unlinked) element. 

Call this function on elements that have not been added to the list if you want \hyperlink{group__Eina__CList__Group_gaf3553c4de546f4218073a8eec8e6672c}{eina\-\_\-clist\-\_\-element\-\_\-init()} to work correctly


\begin{DoxyParams}{Parameters}
{\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}
\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}
\hypertarget{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[{eina\-\_\-clist\-\_\-element\-\_\-is\-\_\-linked}]{\setlength{\rightskip}{0pt plus 5cm}static int eina\-\_\-clist\-\_\-element\-\_\-is\-\_\-linked (
\begin{DoxyParamCaption}
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{elem}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_gae492b328ee374b7e5769dff450782e27}


Check if an element is in a list or not. 


\begin{DoxyParams}{Parameters}
{\em elem} & An element\\
\hline
\end{DoxyParams}
\begin{DoxyPrecond}{Precondition}
Either \hyperlink{group__Eina__CList__Group_gaf3553c4de546f4218073a8eec8e6672c}{eina\-\_\-clist\-\_\-element\-\_\-init()} has been called on {\itshape elem}, it has been added to a list or remove from a list. 
\end{DoxyPrecond}
\begin{DoxySince}{Since}
1.\-1.\-0 
\end{DoxySince}
\hypertarget{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[{eina\-\_\-clist\-\_\-remove}]{\setlength{\rightskip}{0pt plus 5cm}static void eina\-\_\-clist\-\_\-remove (
\begin{DoxyParamCaption}
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{elem}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_ga3170c16d10e787b17f33356948372112}


Remove an element from its list. 


\begin{DoxyParams}{Parameters}
{\em elem} & An element \\
\hline
\end{DoxyParams}
\begin{DoxyPrecond}{Precondition}
The element is in a list already 
\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}
\hypertarget{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[{eina\-\_\-clist\-\_\-next}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Eina\-\_\-\-Clist}$\ast$ eina\-\_\-clist\-\_\-next (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\-\_\-\-Clist} $\ast$}]{list, }
\item[{const {\bf Eina\-\_\-\-Clist} $\ast$}]{elem}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_gaedb8d8985e7e9b849a68049554f0bddf}


Get the next element. 


\begin{DoxyParams}{Parameters}
{\em list} & The list \\
\hline
{\em elem} & An element \\
\hline
\end{DoxyParams}
\begin{DoxyPrecond}{Precondition}
{\itshape elem} is in {\itshape list} 
\end{DoxyPrecond}
\begin{DoxyReturn}{Returns}
The element after {\itshape elem} in {\itshape list} or {\ttfamily N\-U\-L\-L} if {\itshape elem} is last in {\itshape list}. 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\-1.\-0 
\end{DoxySince}
\hypertarget{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[{eina\-\_\-clist\-\_\-prev}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Eina\-\_\-\-Clist}$\ast$ eina\-\_\-clist\-\_\-prev (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\-\_\-\-Clist} $\ast$}]{list, }
\item[{const {\bf Eina\-\_\-\-Clist} $\ast$}]{elem}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_ga3a5ed1654f0cd481d39e6ff03a6905b9}


Get the previous element. 


\begin{DoxyParams}{Parameters}
{\em list} & The list \\
\hline
{\em elem} & An element\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The element before {\itshape elem} or {\ttfamily N\-U\-L\-L} if {\itshape elem} is the first in the list. 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\-1.\-0 
\end{DoxySince}
\hypertarget{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[{eina\-\_\-clist\-\_\-head}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Eina\-\_\-\-Clist}$\ast$ eina\-\_\-clist\-\_\-head (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\-\_\-\-Clist} $\ast$}]{list}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_ga2109d4a0362f2acada10383598cad372}


Get the first element. 


\begin{DoxyParams}{Parameters}
{\em list} & The list \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The first element in {\itshape list} or {\ttfamily N\-U\-L\-L} if {\itshape list} is empty. 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\-1.\-0 
\end{DoxySince}
\hypertarget{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[{eina\-\_\-clist\-\_\-tail}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Eina\-\_\-\-Clist}$\ast$ eina\-\_\-clist\-\_\-tail (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\-\_\-\-Clist} $\ast$}]{list}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_ga884734c528bd98c85ee6613337bd352a}


Get the last element. 


\begin{DoxyParams}{Parameters}
{\em list} & The list \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The last element in {\itshape list} or {\ttfamily N\-U\-L\-L} if {\itshape list} is empty. 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\-1.\-0 
\end{DoxySince}
\hypertarget{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[{eina\-\_\-clist\-\_\-empty}]{\setlength{\rightskip}{0pt plus 5cm}static int eina\-\_\-clist\-\_\-empty (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\-\_\-\-Clist} $\ast$}]{list}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_ga8650dd1db0787807819137f8e3172843}


Check if a list is empty. 


\begin{DoxyParams}{Parameters}
{\em list} & The list \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
non-\/zero if {\itshape list} is empty, zero if it is not 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\-1.\-0 
\end{DoxySince}
\hypertarget{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[{eina\-\_\-clist\-\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}static void eina\-\_\-clist\-\_\-init (
\begin{DoxyParamCaption}
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{list}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_ga84fb214ce4dd6013855311e427f033c4}


Initialize a list. 


\begin{DoxyParams}{Parameters}
{\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't call this function on a list with items 

This function must be called. Don't try do initialize the list by zero'ing out the list head. 
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\-1.\-0 
\end{DoxySince}
\hypertarget{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[{eina\-\_\-clist\-\_\-count}]{\setlength{\rightskip}{0pt plus 5cm}static unsigned int eina\-\_\-clist\-\_\-count (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\-\_\-\-Clist} $\ast$}]{list}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_gaee0c6918f739112ed7e15c976333278b}


Count the elements of a list. 


\begin{DoxyParams}{Parameters}
{\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}
\hypertarget{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[{eina\-\_\-clist\-\_\-move\-\_\-tail}]{\setlength{\rightskip}{0pt plus 5cm}static void eina\-\_\-clist\-\_\-move\-\_\-tail (
\begin{DoxyParamCaption}
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{dst, }
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{src}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_gaf0300bd29b6389aff6f68a4d6036a5f4}


Move all elements from src to the tail of dst. 


\begin{DoxyParams}{Parameters}
{\em dst} & List to be appended to \\
\hline
{\em src} & List to append\\
\hline
\end{DoxyParams}
\begin{DoxyPostcond}{Postcondition}
{\itshape src} is initialized but empty after this operation 
\end{DoxyPostcond}
\begin{DoxySince}{Since}
1.\-1.\-0 
\end{DoxySince}
\hypertarget{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[{eina\-\_\-clist\-\_\-move\-\_\-head}]{\setlength{\rightskip}{0pt plus 5cm}static void eina\-\_\-clist\-\_\-move\-\_\-head (
\begin{DoxyParamCaption}
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{dst, }
\item[{{\bf Eina\-\_\-\-Clist} $\ast$}]{src}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__CList__Group_ga210332124f7d89295e4463cccf5dc6b9}


move all elements from src to the head of dst 


\begin{DoxyParams}{Parameters}
{\em dst} & List to be prepended to \\
\hline
{\em src} & List to prepend\\
\hline
\end{DoxyParams}
\begin{DoxyPostcond}{Postcondition}
{\itshape src} is initialized but empty after this operation 
\end{DoxyPostcond}
\begin{DoxySince}{Since}
1.\-1.\-0 
\end{DoxySince}
