\hypertarget{eina_inlist_03_8c-example}{}\doxysection{eina\+\_\+inlist\+\_\+03.\+c}

\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{comment}{// Compile with:}}
\DoxyCodeLine{\textcolor{comment}{// gcc -\/g eina\_inlist\_03.c -\/o eina\_inlist\_03 `pkg-\/config -\/-\/cflags -\/-\/libs eina`}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <\mbox{\hyperlink{Eina_8h}{Eina.h}}>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <stdio.h>}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{struct }my\_struct \{}
\DoxyCodeLine{     \mbox{\hyperlink{group__Eina__Inline__List__Group_gab30a76fcfa50307c797491705d60136a}{EINA\_INLIST}};}
\DoxyCodeLine{     \mbox{\hyperlink{struct__Eina__Inlist}{Eina\_Inlist}} even;}
\DoxyCodeLine{     \textcolor{keywordtype}{int} a, b;}
\DoxyCodeLine{\};}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{preprocessor}{\#define EVEN\_INLIST\_GET(Inlist) (\& ((Inlist)-\/>even))}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{preprocessor}{\#define EVEN\_INLIST\_CONTAINER\_GET(ptr, type) \(\backslash\)}}
\DoxyCodeLine{\textcolor{preprocessor}{   ((type *)((char *)ptr -\/ offsetof(type, even)))}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keywordtype}{int}}
\DoxyCodeLine{main(\textcolor{keywordtype}{void})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keyword}{struct }my\_struct *d, *cur;}
\DoxyCodeLine{   \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Eina__Inlist}{Eina\_Inlist}} *list = NULL, *list\_even = NULL, *itr;}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Main__Group_gafee4bfc0e509b6ffed6598edf6f4b3de}{eina\_init}}();}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{for} (i = 0; i < 100; i++)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        d = malloc(\textcolor{keyword}{sizeof}(*d));}
\DoxyCodeLine{        d-\/>a = i;}
\DoxyCodeLine{        d-\/>b = i * 10;}
\DoxyCodeLine{        list = \mbox{\hyperlink{group__Eina__Inline__List__Group_ga095c6abf8b0122e30271ce98c26c0524}{eina\_inlist\_append}}(list, \mbox{\hyperlink{group__Eina__Inline__List__Group_ga5bc991428e75557c6195f6b9e38321fb}{EINA\_INLIST\_GET}}(d));}
\DoxyCodeLine{        \textcolor{keywordflow}{if} ((i \% 2) == 0)}
\DoxyCodeLine{          list\_even = \mbox{\hyperlink{group__Eina__Inline__List__Group_ga9b05113628965ac5865c35c8ace6562d}{eina\_inlist\_prepend}}(list\_even, EVEN\_INLIST\_GET(d));}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"{}list=\%p\(\backslash\)n"{}}, list);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Inline__List__Group_ga65e496b9b16d527d23c1d735652b4e62}{EINA\_INLIST\_FOREACH}}(list, cur)}
\DoxyCodeLine{     printf(\textcolor{stringliteral}{"{}\(\backslash\)ta=\%d, b=\%d\(\backslash\)n"{}}, cur-\/>a, cur-\/>b);}
\DoxyCodeLine{}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"{}list\_even=\%p\(\backslash\)n"{}}, list\_even);}
\DoxyCodeLine{   \textcolor{keywordflow}{for} (itr = list\_even; itr != NULL; itr = itr-\/>next)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        cur = EVEN\_INLIST\_CONTAINER\_GET(itr, \textcolor{keyword}{struct} my\_struct);}
\DoxyCodeLine{        printf(\textcolor{stringliteral}{"{}\(\backslash\)ta=\%d, b=\%d\(\backslash\)n"{}}, cur-\/>a, cur-\/>b);}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"{}list count=\%d\(\backslash\)n"{}}, \mbox{\hyperlink{group__Eina__Inline__List__Group_ga20d6e4482cda609591cb504c7f0463f5}{eina\_inlist\_count}}(list));}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"{}list\_even count=\%d\(\backslash\)n\(\backslash\)n"{}}, \mbox{\hyperlink{group__Eina__Inline__List__Group_ga20d6e4482cda609591cb504c7f0463f5}{eina\_inlist\_count}}(list\_even));}
\DoxyCodeLine{}
\DoxyCodeLine{   itr = list\_even;}
\DoxyCodeLine{   \textcolor{keywordflow}{while} (itr)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{struct__Eina__Inlist}{Eina\_Inlist}} *next = itr-\/>\mbox{\hyperlink{struct__Eina__Inlist_ae95deba8e271f94f8ad8aecf7fdb5dde}{next}};}
\DoxyCodeLine{        cur = EVEN\_INLIST\_CONTAINER\_GET(itr, \textcolor{keyword}{struct} my\_struct);}
\DoxyCodeLine{        \textcolor{keywordflow}{if} ((cur-\/>a \% 3) == 0)}
\DoxyCodeLine{          list\_even = \mbox{\hyperlink{group__Eina__Inline__List__Group_gad84d4a8ad4c3392df4be8278ce10a274}{eina\_inlist\_remove}}(list\_even, itr);}
\DoxyCodeLine{        itr = next;}
\DoxyCodeLine{     \}}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"{}list count=\%d\(\backslash\)n"{}}, \mbox{\hyperlink{group__Eina__Inline__List__Group_ga20d6e4482cda609591cb504c7f0463f5}{eina\_inlist\_count}}(list));}
\DoxyCodeLine{   printf(\textcolor{stringliteral}{"{}list\_even count=\%d\(\backslash\)n\(\backslash\)n"{}}, \mbox{\hyperlink{group__Eina__Inline__List__Group_ga20d6e4482cda609591cb504c7f0463f5}{eina\_inlist\_count}}(list\_even));}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{while} (list)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \textcolor{keyword}{struct }my\_struct *aux = \mbox{\hyperlink{group__Eina__Inline__List__Group_ga8c4e6011e7caa9ec5c22b003c4950338}{EINA\_INLIST\_CONTAINER\_GET}}(list,}
\DoxyCodeLine{                                                          \textcolor{keyword}{struct} my\_struct);}
\DoxyCodeLine{        list = \mbox{\hyperlink{group__Eina__Inline__List__Group_gad84d4a8ad4c3392df4be8278ce10a274}{eina\_inlist\_remove}}(list, list);}
\DoxyCodeLine{        free(aux);}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Main__Group_ga2c8b4020427108a30c44707af22c99d3}{eina\_shutdown}}();}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}
 