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


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


\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{struct__Eina__Clist}{\+\_\+\+Eina\+\_\+\+Clist}}
\begin{DoxyCompactList}\small\item\em The structure type for a compact list type. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{group__Eina__CList__Group_gaf45901a38d6f762fa1a9aab5b638822a}{EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH}}(cursor,  list)~    for ((cursor) = (list)-\/$>$next; (cursor) != (list); (cursor) = (cursor)-\/$>$next)
\begin{DoxyCompactList}\small\item\em Iterates through the list. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__CList__Group_ga48eca25b9697171656fd627dc938dce9}{EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+SAFE}}(cursor,  cursor2,  list)
\begin{DoxyCompactList}\small\item\em Iterates through the list, with safety against removal. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__CList__Group_ga4fda72f086ac725847ee8f4698143bdb}{EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+ENTRY}}(elem,  list,  type,  field)
\begin{DoxyCompactList}\small\item\em Iterates through the list using a list entry. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__CList__Group_gaea87b09ce58cf213deafb68656e5b38a}{EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+ENTRY\+\_\+\+SAFE}}(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 \mbox{\hyperlink{group__Eina__CList__Group_gacdcec93933377ba0b577032c5599b7eb}{EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+REV}}(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 \mbox{\hyperlink{group__Eina__CList__Group_ga4f6cefba0003753f55c8969d3a011c6d}{EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+SAFE\+\_\+\+REV}}(cursor,  cursor2,  list)
\begin{DoxyCompactList}\small\item\em Iterates through the list in the reverse order, with safety against removal. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__CList__Group_gadb0fcb82cad52208c17857739eeb84dc}{EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+ENTRY\+\_\+\+REV}}(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 \mbox{\hyperlink{group__Eina__CList__Group_gac827069ff3728630c3f11d00006376ab}{EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+ENTRY\+\_\+\+SAFE\+\_\+\+REV}}(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 \mbox{\hyperlink{group__Eina__CList__Group_ga449d329e372ab46d8ad30dbdc3d245ec}{EINA\+\_\+\+CLIST\+\_\+\+INIT}}(list)~\{ \&(list), \&(list) \}
\begin{DoxyCompactList}\small\item\em Macros for statically initialized lists. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\+\_\+\+CLIST\+\_\+\+ENTRY}}(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}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \mbox{\hyperlink{struct__Eina__Clist}{\+\_\+\+Eina\+\_\+\+Clist}} \mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}}
\begin{DoxyCompactList}\small\item\em Type for \mbox{\hyperlink{struct__Eina__Clist}{\+\_\+\+Eina\+\_\+\+Clist}} structure containing the list head and the list entry. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static void \mbox{\hyperlink{group__Eina__CList__Group_ga493b7f959f88078dff955222a9ef3d93}{eina\+\_\+clist\+\_\+add\+\_\+after}} (\mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$elem, \mbox{\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 \mbox{\hyperlink{group__Eina__CList__Group_ga3aae43d235c9ab26264982c3e9f4e117}{eina\+\_\+clist\+\_\+add\+\_\+before}} (\mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$elem, \mbox{\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 \mbox{\hyperlink{group__Eina__CList__Group_ga910366c10f42cf9b121ee1732226e5f6}{eina\+\_\+clist\+\_\+add\+\_\+head}} (\mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$list, \mbox{\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 \mbox{\hyperlink{group__Eina__CList__Group_ga118547dd84795935ea3851b4ea691376}{eina\+\_\+clist\+\_\+add\+\_\+tail}} (\mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$list, \mbox{\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 \mbox{\hyperlink{group__Eina__CList__Group_gaf3553c4de546f4218073a8eec8e6672c}{eina\+\_\+clist\+\_\+element\+\_\+init}} (\mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$elem)
\begin{DoxyCompactList}\small\item\em Inits an (unlinked) element. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{group__Eina__CList__Group_gae492b328ee374b7e5769dff450782e27}{eina\+\_\+clist\+\_\+element\+\_\+is\+\_\+linked}} (\mbox{\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 \mbox{\hyperlink{group__Eina__CList__Group_ga3170c16d10e787b17f33356948372112}{eina\+\_\+clist\+\_\+remove}} (\mbox{\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 \mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$ \mbox{\hyperlink{group__Eina__CList__Group_gaf56dc71bd94d1077a14502b10564e52a}{eina\+\_\+clist\+\_\+next}} (const \mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$list, const \mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$elem)
\begin{DoxyCompactList}\small\item\em Gets the next element. \end{DoxyCompactList}\item 
static \mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$ \mbox{\hyperlink{group__Eina__CList__Group_ga1c852c74fc6e1776e5f8fd26ac6316d7}{eina\+\_\+clist\+\_\+prev}} (const \mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$list, const \mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$elem)
\begin{DoxyCompactList}\small\item\em Gets the previous element. \end{DoxyCompactList}\item 
static \mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$ \mbox{\hyperlink{group__Eina__CList__Group_ga6874b00ed6b42ff0d71cb6e6c9b7c062}{eina\+\_\+clist\+\_\+head}} (const \mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$list)
\begin{DoxyCompactList}\small\item\em Gets the first element. \end{DoxyCompactList}\item 
static \mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$ \mbox{\hyperlink{group__Eina__CList__Group_gab552085dba832c87c5a313d91528256b}{eina\+\_\+clist\+\_\+tail}} (const \mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$list)
\begin{DoxyCompactList}\small\item\em Gets the last element. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{group__Eina__CList__Group_ga8650dd1db0787807819137f8e3172843}{eina\+\_\+clist\+\_\+empty}} (const \mbox{\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 \mbox{\hyperlink{group__Eina__CList__Group_ga84fb214ce4dd6013855311e427f033c4}{eina\+\_\+clist\+\_\+init}} (\mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$list)
\begin{DoxyCompactList}\small\item\em Initializes a list. \end{DoxyCompactList}\item 
static unsigned int \mbox{\hyperlink{group__Eina__CList__Group_gaee0c6918f739112ed7e15c976333278b}{eina\+\_\+clist\+\_\+count}} (const \mbox{\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 \mbox{\hyperlink{group__Eina__CList__Group_gaf0300bd29b6389aff6f68a4d6036a5f4}{eina\+\_\+clist\+\_\+move\+\_\+tail}} (\mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$dst, \mbox{\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 \mbox{\hyperlink{group__Eina__CList__Group_ga210332124f7d89295e4463cccf5dc6b9}{eina\+\_\+clist\+\_\+move\+\_\+head}} (\mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$dst, \mbox{\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}


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

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

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

List heads must be initialized with EINA\+\_\+\+CLIST\+\_\+\+INIT or by calling eina\+\_\+clist\+\_\+element\+\_\+init.
\end{DoxyNote}
Define a list as follows\+:


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

\end{DoxyCode}


or


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{struct\ }some\_global\_thing}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \ \mbox{\hyperlink{struct__Eina__Clist}{Eina\_Clist}}\ gadgets;}
\DoxyCodeLine{\};}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__CList__Group_ga84fb214ce4dd6013855311e427f033c4}{eina\_clist\_init}}(\ \&some\_global\_thing-\/>gadgets\ );}

\end{DoxyCode}


Manipulate it like this\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__CList__Group_ga910366c10f42cf9b121ee1732226e5f6}{eina\_clist\_add\_head}}(\ \&global\_gadgets,\ \&new\_gadget-\/>entry\ );}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__CList__Group_ga3170c16d10e787b17f33356948372112}{eina\_clist\_remove}}(\ \&new\_gadget-\/>entry\ );}
\DoxyCodeLine{\mbox{\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}{0}
\DoxyCodeLine{\textcolor{keyword}{struct\ }gadget\ *gadget;}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__CList__Group_ga4fda72f086ac725847ee8f4698143bdb}{EINA\_CLIST\_FOR\_EACH\_ENTRY}}(\ gadget,\ \&global\_gadgets,\ \textcolor{keyword}{struct}\ gadget,\ entry\ )}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \ ...}
\DoxyCodeLine{\}}

\end{DoxyCode}
 

\doxysubsection{Macro Definition Documentation}
\mbox{\Hypertarget{group__Eina__CList__Group_gaf45901a38d6f762fa1a9aab5b638822a}\label{group__Eina__CList__Group_gaf45901a38d6f762fa1a9aab5b638822a}} 
\index{Compact List@{Compact List}!EINA\_CLIST\_FOR\_EACH@{EINA\_CLIST\_FOR\_EACH}}
\index{EINA\_CLIST\_FOR\_EACH@{EINA\_CLIST\_FOR\_EACH}!Compact List@{Compact List}}
\doxysubsubsection{\texorpdfstring{EINA\_CLIST\_FOR\_EACH}{EINA\_CLIST\_FOR\_EACH}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH(\begin{DoxyParamCaption}\item[{}]{cursor,  }\item[{}]{list }\end{DoxyParamCaption})~    for ((cursor) = (list)-\/$>$next; (cursor) != (list); (cursor) = (cursor)-\/$>$next)}



Iterates through the list. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em cursor} & The pointer to be used during the interaction \\
\hline
\mbox{\texttt{ in}}  & {\em list} & The list to be interacted with \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_ga48eca25b9697171656fd627dc938dce9}\label{group__Eina__CList__Group_ga48eca25b9697171656fd627dc938dce9}} 
\index{Compact List@{Compact List}!EINA\_CLIST\_FOR\_EACH\_SAFE@{EINA\_CLIST\_FOR\_EACH\_SAFE}}
\index{EINA\_CLIST\_FOR\_EACH\_SAFE@{EINA\_CLIST\_FOR\_EACH\_SAFE}!Compact List@{Compact List}}
\doxysubsubsection{\texorpdfstring{EINA\_CLIST\_FOR\_EACH\_SAFE}{EINA\_CLIST\_FOR\_EACH\_SAFE}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+SAFE(\begin{DoxyParamCaption}\item[{}]{cursor,  }\item[{}]{cursor2,  }\item[{}]{list }\end{DoxyParamCaption})}

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

\end{DoxyCode}


Iterates through the list, with safety against removal. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em cursor} & The pointer to be used during the interaction \\
\hline
\mbox{\texttt{ out}}  & {\em cursor2} & The auxiliary pointer to be used during the interaction \\
\hline
\mbox{\texttt{ in}}  & {\em list} & The list to be interacted with \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_ga4fda72f086ac725847ee8f4698143bdb}\label{group__Eina__CList__Group_ga4fda72f086ac725847ee8f4698143bdb}} 
\index{Compact List@{Compact List}!EINA\_CLIST\_FOR\_EACH\_ENTRY@{EINA\_CLIST\_FOR\_EACH\_ENTRY}}
\index{EINA\_CLIST\_FOR\_EACH\_ENTRY@{EINA\_CLIST\_FOR\_EACH\_ENTRY}!Compact List@{Compact List}}
\doxysubsubsection{\texorpdfstring{EINA\_CLIST\_FOR\_EACH\_ENTRY}{EINA\_CLIST\_FOR\_EACH\_ENTRY}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+ENTRY(\begin{DoxyParamCaption}\item[{}]{elem,  }\item[{}]{list,  }\item[{}]{type,  }\item[{}]{field }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\ \ \ \ \textcolor{keywordflow}{for}\ ((elem)\ =\ \mbox{\hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}}((list)-\/>next,\ type,\ field);\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \&(elem)-\/>field\ !=\ (list);\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ (elem)\ =\ \mbox{\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}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em elem} & The element to be used \\
\hline
\mbox{\texttt{ in}}  & {\em list} & The list to be iterated \\
\hline
\mbox{\texttt{ in}}  & {\em type} & The type of the list \\
\hline
\mbox{\texttt{ in}}  & {\em field} & The field of the element \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_gaea87b09ce58cf213deafb68656e5b38a}\label{group__Eina__CList__Group_gaea87b09ce58cf213deafb68656e5b38a}} 
\index{Compact List@{Compact List}!EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE@{EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE}}
\index{EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE@{EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE}!Compact List@{Compact List}}
\doxysubsubsection{\texorpdfstring{EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE}{EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+ENTRY\+\_\+\+SAFE(\begin{DoxyParamCaption}\item[{}]{cursor,  }\item[{}]{cursor2,  }\item[{}]{list,  }\item[{}]{type,  }\item[{}]{field }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\ \ \ \ \textcolor{keywordflow}{for}\ ((cursor)\ =\ \mbox{\hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}}((list)-\/>next,\ type,\ field),\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ (cursor2)\ =\ \mbox{\hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}}((cursor)-\/>field.next,\ type,\ field);\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \&(cursor)-\/>field\ !=\ (list);\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ (cursor)\ =\ (cursor2),\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ (cursor2)\ =\ \mbox{\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}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em cursor} & The pointer to be used during the interaction \\
\hline
\mbox{\texttt{ out}}  & {\em cursor2} & The auxiliary pointer to be used during the interaction \\
\hline
\mbox{\texttt{ in}}  & {\em list} & The list to be interacted with \\
\hline
\mbox{\texttt{ in}}  & {\em type} & The type of the list \\
\hline
\mbox{\texttt{ in}}  & {\em field} & The field of the element \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_gacdcec93933377ba0b577032c5599b7eb}\label{group__Eina__CList__Group_gacdcec93933377ba0b577032c5599b7eb}} 
\index{Compact List@{Compact List}!EINA\_CLIST\_FOR\_EACH\_REV@{EINA\_CLIST\_FOR\_EACH\_REV}}
\index{EINA\_CLIST\_FOR\_EACH\_REV@{EINA\_CLIST\_FOR\_EACH\_REV}!Compact List@{Compact List}}
\doxysubsubsection{\texorpdfstring{EINA\_CLIST\_FOR\_EACH\_REV}{EINA\_CLIST\_FOR\_EACH\_REV}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+REV(\begin{DoxyParamCaption}\item[{}]{cursor,  }\item[{}]{list }\end{DoxyParamCaption})~    for ((cursor) = (list)-\/$>$prev; (cursor) != (list); (cursor) = (cursor)-\/$>$prev)}



Iterates through the list in the reverse order. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em cursor} & The pointer to be used during the interaction \\
\hline
\mbox{\texttt{ in}}  & {\em list} & The list to be interacted with \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_ga4f6cefba0003753f55c8969d3a011c6d}\label{group__Eina__CList__Group_ga4f6cefba0003753f55c8969d3a011c6d}} 
\index{Compact List@{Compact List}!EINA\_CLIST\_FOR\_EACH\_SAFE\_REV@{EINA\_CLIST\_FOR\_EACH\_SAFE\_REV}}
\index{EINA\_CLIST\_FOR\_EACH\_SAFE\_REV@{EINA\_CLIST\_FOR\_EACH\_SAFE\_REV}!Compact List@{Compact List}}
\doxysubsubsection{\texorpdfstring{EINA\_CLIST\_FOR\_EACH\_SAFE\_REV}{EINA\_CLIST\_FOR\_EACH\_SAFE\_REV}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+SAFE\+\_\+\+REV(\begin{DoxyParamCaption}\item[{}]{cursor,  }\item[{}]{cursor2,  }\item[{}]{list }\end{DoxyParamCaption})}

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

\end{DoxyCode}


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


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em cursor} & The pointer to be used during the interaction \\
\hline
\mbox{\texttt{ out}}  & {\em cursor2} & The auxiliary pointer to be used during the interaction \\
\hline
\mbox{\texttt{ in}}  & {\em list} & The list to be interacted with \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_gadb0fcb82cad52208c17857739eeb84dc}\label{group__Eina__CList__Group_gadb0fcb82cad52208c17857739eeb84dc}} 
\index{Compact List@{Compact List}!EINA\_CLIST\_FOR\_EACH\_ENTRY\_REV@{EINA\_CLIST\_FOR\_EACH\_ENTRY\_REV}}
\index{EINA\_CLIST\_FOR\_EACH\_ENTRY\_REV@{EINA\_CLIST\_FOR\_EACH\_ENTRY\_REV}!Compact List@{Compact List}}
\doxysubsubsection{\texorpdfstring{EINA\_CLIST\_FOR\_EACH\_ENTRY\_REV}{EINA\_CLIST\_FOR\_EACH\_ENTRY\_REV}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+ENTRY\+\_\+\+REV(\begin{DoxyParamCaption}\item[{}]{elem,  }\item[{}]{list,  }\item[{}]{type,  }\item[{}]{field }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\ \ \ \ \textcolor{keywordflow}{for}\ ((elem)\ =\ \mbox{\hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}}((list)-\/>prev,\ type,\ field);\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \&(elem)-\/>field\ !=\ (list);\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ (elem)\ =\ \mbox{\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}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em elem} & The element to be used \\
\hline
\mbox{\texttt{ in}}  & {\em list} & The list to be iterated \\
\hline
\mbox{\texttt{ in}}  & {\em type} & The type of the list \\
\hline
\mbox{\texttt{ in}}  & {\em field} & The field of the element \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_gac827069ff3728630c3f11d00006376ab}\label{group__Eina__CList__Group_gac827069ff3728630c3f11d00006376ab}} 
\index{Compact List@{Compact List}!EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE\_REV@{EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE\_REV}}
\index{EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE\_REV@{EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE\_REV}!Compact List@{Compact List}}
\doxysubsubsection{\texorpdfstring{EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE\_REV}{EINA\_CLIST\_FOR\_EACH\_ENTRY\_SAFE\_REV}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+CLIST\+\_\+\+FOR\+\_\+\+EACH\+\_\+\+ENTRY\+\_\+\+SAFE\+\_\+\+REV(\begin{DoxyParamCaption}\item[{}]{cursor,  }\item[{}]{cursor2,  }\item[{}]{list,  }\item[{}]{type,  }\item[{}]{field }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\ \ \ \ \textcolor{keywordflow}{for}\ ((cursor)\ =\ \mbox{\hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}}((list)-\/>prev,\ type,\ field),\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ (cursor2)\ =\ \mbox{\hyperlink{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}{EINA\_CLIST\_ENTRY}}((cursor)-\/>field.prev,\ type,\ field);\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \&(cursor)-\/>field\ !=\ (list);\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ (cursor)\ =\ (cursor2),\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ (cursor2)\ =\ \mbox{\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}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em cursor} & The pointer to be used during the interaction \\
\hline
\mbox{\texttt{ out}}  & {\em cursor2} & The auxiliary pointer to be used during the interaction \\
\hline
\mbox{\texttt{ in}}  & {\em list} & The list to be interacted with \\
\hline
\mbox{\texttt{ in}}  & {\em type} & The type of the list \\
\hline
\mbox{\texttt{ in}}  & {\em field} & The field of the element \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_ga449d329e372ab46d8ad30dbdc3d245ec}\label{group__Eina__CList__Group_ga449d329e372ab46d8ad30dbdc3d245ec}} 
\index{Compact List@{Compact List}!EINA\_CLIST\_INIT@{EINA\_CLIST\_INIT}}
\index{EINA\_CLIST\_INIT@{EINA\_CLIST\_INIT}!Compact List@{Compact List}}
\doxysubsubsection{\texorpdfstring{EINA\_CLIST\_INIT}{EINA\_CLIST\_INIT}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+CLIST\+\_\+\+INIT(\begin{DoxyParamCaption}\item[{}]{list }\end{DoxyParamCaption})~\{ \&(list), \&(list) \}}



Macros for statically initialized lists. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em list} & The list to be used \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}\label{group__Eina__CList__Group_gac91682e9d005db9959889a632e235441}} 
\index{Compact List@{Compact List}!EINA\_CLIST\_ENTRY@{EINA\_CLIST\_ENTRY}}
\index{EINA\_CLIST\_ENTRY@{EINA\_CLIST\_ENTRY}!Compact List@{Compact List}}
\doxysubsubsection{\texorpdfstring{EINA\_CLIST\_ENTRY}{EINA\_CLIST\_ENTRY}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+CLIST\+\_\+\+ENTRY(\begin{DoxyParamCaption}\item[{}]{elem,  }\item[{}]{type,  }\item[{}]{field }\end{DoxyParamCaption})~    ((type $\ast$)((char $\ast$)(elem) -\/ (uintptr\+\_\+t)(\&((type $\ast$)0)-\/$>$field)))}



Gets a pointer to the object containing the list element. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em elem} & The element to be used \\
\hline
\mbox{\texttt{ in}}  & {\em type} & The type of the element \\
\hline
\mbox{\texttt{ in}}  & {\em field} & The field of the element \\
\hline
\end{DoxyParams}


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



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

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


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



Adds an element after the specified one. 


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

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



Adds an element before the specified one. 


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

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



Adds an element to the head of the list. 


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

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



Adds an element at the tail of the list. 


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

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



Inits an (unlinked) element. 

This function is called on elements that have not been added to the list so that \mbox{\hyperlink{group__Eina__CList__Group_gaf3553c4de546f4218073a8eec8e6672c}{eina\+\_\+clist\+\_\+element\+\_\+init()}} works correctly.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\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}
\mbox{\Hypertarget{group__Eina__CList__Group_gae492b328ee374b7e5769dff450782e27}\label{group__Eina__CList__Group_gae492b328ee374b7e5769dff450782e27}} 
\index{Compact List@{Compact List}!eina\_clist\_element\_is\_linked@{eina\_clist\_element\_is\_linked}}
\index{eina\_clist\_element\_is\_linked@{eina\_clist\_element\_is\_linked}!Compact List@{Compact List}}
\doxysubsubsection{\texorpdfstring{eina\_clist\_element\_is\_linked()}{eina\_clist\_element\_is\_linked()}}
{\footnotesize\ttfamily static int eina\+\_\+clist\+\_\+element\+\_\+is\+\_\+linked (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__CList__Group_gaf88073d3e25bbe2f9eaad50ccabe8ba8}{Eina\+\_\+\+Clist}} $\ast$}]{elem }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Checks whether an element is in a list. 


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



Removes an element from its list. 


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



Gets the next element. 


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



Gets the previous element. 


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



Gets the first element. 


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



Gets the last element. 


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



Checks whether a list is empty. 


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



Initializes a list. 


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

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



Counts the elements of a list. 


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



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


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



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


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em dst} & The list to be prepended to \\
\hline
\mbox{\texttt{ 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}
