

We start by including necessary headers, declaring variables, and initializing eina\+: 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <stdio.h>}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{preprocessor}{\#include <\mbox{\hyperlink{Eina_8h}{Eina.h}}>}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keywordtype}{int}}
\DoxyCodeLine{main(\textcolor{keywordtype}{int} argc \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}}, \textcolor{keywordtype}{char} **argv \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *strings[] = \{}
\DoxyCodeLine{      \textcolor{stringliteral}{"{}even"{}}, \textcolor{stringliteral}{"{}odd"{}}, \textcolor{stringliteral}{"{}even"{}}, \textcolor{stringliteral}{"{}odd"{}}, \textcolor{stringliteral}{"{}even"{}}, \textcolor{stringliteral}{"{}odd"{}}, \textcolor{stringliteral}{"{}even"{}}, \textcolor{stringliteral}{"{}odd"{}}, \textcolor{stringliteral}{"{}even"{}}, \textcolor{stringliteral}{"{}odd"{}}}
\DoxyCodeLine{   \};}
\DoxyCodeLine{   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *more\_strings[] = \{}
\DoxyCodeLine{      \textcolor{stringliteral}{"{}0"{}}, \textcolor{stringliteral}{"{}1"{}}, \textcolor{stringliteral}{"{}2"{}}, \textcolor{stringliteral}{"{}3"{}}, \textcolor{stringliteral}{"{}4"{}}, \textcolor{stringliteral}{"{}5"{}}, \textcolor{stringliteral}{"{}6"{}}, \textcolor{stringliteral}{"{}7"{}}, \textcolor{stringliteral}{"{}8"{}}, \textcolor{stringliteral}{"{}9"{}}}
\DoxyCodeLine{   \};}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Eina__Array}{Eina\_Array}} *array;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Eina__List}{Eina\_List}} *list = NULL;}
\DoxyCodeLine{   \mbox{\hyperlink{struct__Eina__Accessor}{Eina\_Accessor}} *acc;}
\DoxyCodeLine{   \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{short} \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{   \textcolor{keywordtype}{void} *data;}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Main__Group_gafee4bfc0e509b6ffed6598edf6f4b3de}{eina\_init}}();}

\end{DoxyCodeInclude}


Next we populate our array and list\+: 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{}
\DoxyCodeLine{   array = \mbox{\hyperlink{group__Eina__Array__Group_gad671e356ded4049ccff24cc46f6f6f43}{eina\_array\_new}}(10);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{for} (i = 0; i < 10; i++)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Eina__Array__Group_ga97ac1fe353f4cd7a9762af4d4db7b9c4}{eina\_array\_push}}(array, strings[i]);}
\DoxyCodeLine{        list = \mbox{\hyperlink{group__Eina__List__Group_ga92ec14d1a1040a361c4d8cd0ab7b0ecc}{eina\_list\_append}}(list, more\_strings[i]);}
\DoxyCodeLine{     \}}

\end{DoxyCodeInclude}


Now that we have two containers populated we can actually start the example and create an accessor\+: 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{}
\DoxyCodeLine{   acc = \mbox{\hyperlink{group__Eina__Array__Group_ga7bf4c550dd5d2841f2da9d54dd33c24c}{eina\_array\_accessor\_new}}(array);}

\end{DoxyCodeInclude}


Once we have the accessor we can use it to access certain elements in the container\+: 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{   \textcolor{keywordflow}{for}(i = 1; i < 10; i += 2)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Eina__Accessor__Group_gaa94db400cf7d40c96c6a39c20bad1a9d}{eina\_accessor\_data\_get}}(acc, i, \&data);}
\DoxyCodeLine{        printf(\textcolor{stringliteral}{"{}\%s\(\backslash\)n"{}}, (\textcolor{keyword}{const} \textcolor{keywordtype}{char} *)data);}
\DoxyCodeLine{     \}}

\end{DoxyCodeInclude}
 \begin{DoxyNote}{Note}
Unlike iterators accessors allow us non-\/linear access, which allows us to print only the odd elements in the container.
\end{DoxyNote}
As with every other resource we allocate we need to free the accessor(and the array)\+: 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Accessor__Group_gabd6a4c6e20c776a92c5d8426d37f5ac3}{eina\_accessor\_free}}(acc);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Array__Group_gaee9eb6a413ab294a5d69771f14cf3543}{eina\_array\_free}}(array);}

\end{DoxyCodeInclude}


Now we create another accessor, this time for the list\+: 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{}
\DoxyCodeLine{   acc = \mbox{\hyperlink{group__Eina__List__Group_ga6901b2ea29c9bc34a486dae00d3cf608}{eina\_list\_accessor\_new}}(list);}

\end{DoxyCodeInclude}


And now the interesting part, we use the same code we used above, to print parts of the array, to print parts of the list\+: 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{   \textcolor{keywordflow}{for}(i = 1; i < 10; i += 2)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Eina__Accessor__Group_gaa94db400cf7d40c96c6a39c20bad1a9d}{eina\_accessor\_data\_get}}(acc, i, \&data);}
\DoxyCodeLine{        printf(\textcolor{stringliteral}{"{}\%s\(\backslash\)n"{}}, (\textcolor{keyword}{const} \textcolor{keywordtype}{char} *)data);}
\DoxyCodeLine{     \}}

\end{DoxyCodeInclude}


And to free the list we use a gimmick, instead of freeing {\itshape list}, we ask the accessor for its container and we free that\+: 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__List__Group_ga608bd2fbf06293a1b794648990703ab4}{eina\_list\_free}}(\mbox{\hyperlink{group__Eina__Accessor__Group_ga32a38fce194de69627c849dbfa6a35bb}{eina\_accessor\_container\_get}}(acc));}

\end{DoxyCodeInclude}


Finally we shut eina down and leave\+: 
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Accessor__Group_gabd6a4c6e20c776a92c5d8426d37f5ac3}{eina\_accessor\_free}}(acc);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Main__Group_ga2c8b4020427108a30c44707af22c99d3}{eina\_shutdown}}();}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}


The full source code can be found in the examples folder in the \mbox{\hyperlink{eina_accessor_01_c}{eina\+\_\+accessor\+\_\+01.c}} file. 