\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\+C\+H}(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\+F\+E}(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\+R\+Y}(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\+F\+E}(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\+E\+V}(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\+E\+V}(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\+E\+V}(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\+E\+V}(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\+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 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're in while using O(1) time.
\item Doesn'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'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's no {\ttfamily 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 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}
\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}


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}
\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}


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}
\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}


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}
\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}


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}
\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}


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}
\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}


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}
\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}


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}
\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}


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}
\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}


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}
\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}


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}
\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}


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}
\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}


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}
\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}


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}
\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}


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}
\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}


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}
\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}


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\+U\+E if the element is in a list, else F\+A\+L\+S\+E. 
\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}
\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}


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}
\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}


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\+L\+L} 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}
\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}


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\+L\+L} if {\ttfamily elem} is first in {\ttfamily 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}


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\+L\+L} if {\ttfamily 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}


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\+L\+L} if {\ttfamily 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}


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}
\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}


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't call this function on a list with items 

This function must be called. Don't try to initialize the list by zeroing 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}


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}
\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}


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}
\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}


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}
