summaryrefslogtreecommitdiff
path: root/pages/eina-programming-guide/iterator-functions.md.txt
blob: bebf3f10102f2f1f54ca5384594560f52d1ae43f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
---
~~Title: Iterator Functions~~
~~NOCACHE~~
---

# Iterator Functions #

Eina provides a set of iterator functions to manipulate data types, such as arrays.

These functions allow access to container elements in a generic way, without knowing which container is used (similar to iterators in the C++ STL). Iterators only allow sequential access (that is, from one element to the next one). For random access, Eina provides accessor functions.

Getting an iterator to access elements of a given container is done through the functions of that particular container. There is no function to create a generic iterator as iterators absolutely depend on the container. Note that all iterators, regardless of the container type, are always deleted with the same ``eina_iterator_free()`` function.

To get the data and iterate, use the ``eina_iterator_next()`` function. To call a function on every single element of a container, use the ``eina_iterator_foreach()`` function. 

In addition to iterator functions, each data type also owns a set of macros that provide the iterators, such as ``FOREACH`` or ``REVERSE_FOREACH``.

## Further Reading ##

[Iterator Functions API](https://build.enlightenment.org/job/nightly_efl_gcc_x86_64/lastSuccessfulBuild/artifact/doc/html/group__Eina__Iterator__Group.html)
:    The functions that manage iterators on containers. 

* [Eina Iterator Example](https://build.enlightenment.org/job/nightly_efl_gcc_x86_64/lastSuccessfulBuild/artifact/doc/html/eina_iterator_01_8c-example.html)
:    An example using iterator functions.