# lv_iter.h (/api/misc/lv_iter_h)



<ApiSummary functions="9" typedefs="2" />

Functions [#functions]

<ApiTabs items="[&#x22;Getters (1)&#x22;,&#x22;Other (8)&#x22;]">
  <ApiTab value="Getters (1)">
    <ApiMember kind="function" name="lv_iter_get_context" file="misc/lv_iter.h" line="51" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_iter.h#L51">
      lv_iter_get_context [#lv_iter_get_context]

      Get the context of the iterator. You can use it to store some temporary variables associated with current iterator..

      ```c title=" " lineNumbers=1
      void * lv_iter_get_context(const lv_iter_t *iter)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name   | Type                                                     | Description                      |
      | ------ | -------------------------------------------------------- | -------------------------------- |
      | `iter` | <ApiLink name="lv_iter_t" display="const lv_iter_t *" /> | `lv_iter_t` object create before |

      **Returns:** `void *` — the iter context
    </ApiMember>
  </ApiTab>

  <ApiTab value="Other (8)">
    <ApiMember kind="function" name="lv_iter_create" file="misc/lv_iter.h" line="44" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_iter.h#L44">
      lv_iter_create [#lv_iter_create]

      Create an iterator based on an instance, and then the next element of the iterator can be obtained through lv\_iter\_next, In order to obtain the next operation in a unified and abstract way.

      ```c title=" " lineNumbers=1
      lv_iter_t * lv_iter_create(void *instance, uint32_t elem_size, uint32_t context_size, lv_iter_next_cb next_cb)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name           | Type                               | Description                                                   |
      | -------------- | ---------------------------------- | ------------------------------------------------------------- |
      | `instance`     | `void *`                           | The instance to be iterated                                   |
      | `elem_size`    | <ApiLink name="uint32_t" />        | The size of the element to be iterated in bytes               |
      | `context_size` | <ApiLink name="uint32_t" />        | The size of the context to be passed to the next\_cb in bytes |
      | `next_cb`      | <ApiLink name="lv_iter_next_cb" /> | The callback function to get the next element                 |

      **Returns:** <ApiLink name="lv_iter_t" display="lv_iter_t *" /> — The iterator object
    </ApiMember>

    <ApiMember kind="function" name="lv_iter_destroy" file="misc/lv_iter.h" line="58" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_iter.h#L58">
      lv_iter_destroy [#lv_iter_destroy]

      Destroy the iterator object, and release the context. Other resources allocated by the user are not released. The user needs to release it by itself.

      ```c title=" " lineNumbers=1
      void lv_iter_destroy(lv_iter_t *iter)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name   | Type                                               | Description                      |
      | ------ | -------------------------------------------------- | -------------------------------- |
      | `iter` | <ApiLink name="lv_iter_t" display="lv_iter_t *" /> | `lv_iter_t` object create before |
    </ApiMember>

    <ApiMember kind="function" name="lv_iter_next" file="misc/lv_iter.h" line="67" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_iter.h#L67">
      lv_iter_next [#lv_iter_next]

      Get the next element of the iterator.

      ```c title=" " lineNumbers=1
      lv_result_t lv_iter_next(lv_iter_t *iter, void *elem)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name   | Type                                               | Description                           |
      | ------ | -------------------------------------------------- | ------------------------------------- |
      | `iter` | <ApiLink name="lv_iter_t" display="lv_iter_t *" /> | `lv_iter_t` object create before      |
      | `elem` | `void *`                                           | The pointer to store the next element |

      **Returns:** <ApiLink name="lv_result_t" /> — LV\_RESULT\_OK: Get the next element successfully LV\_RESULT\_INVALID: The next element is invalid
    </ApiMember>

    <ApiMember kind="function" name="lv_iter_make_peekable" file="misc/lv_iter.h" line="74" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_iter.h#L74">
      lv_iter_make_peekable [#lv_iter_make_peekable]

      Make the iterator peekable, which means that the user can peek the next element without advancing the iterator.

      ```c title=" " lineNumbers=1
      void lv_iter_make_peekable(lv_iter_t *iter, uint32_t capacity)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name       | Type                                               | Description                      |
      | ---------- | -------------------------------------------------- | -------------------------------- |
      | `iter`     | <ApiLink name="lv_iter_t" display="lv_iter_t *" /> | `lv_iter_t` object create before |
      | `capacity` | <ApiLink name="uint32_t" />                        | The capacity of the peek buffer  |
    </ApiMember>

    <ApiMember kind="function" name="lv_iter_peek" file="misc/lv_iter.h" line="83" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_iter.h#L83">
      lv_iter_peek [#lv_iter_peek]

      Peek the next element of the iterator without advancing the iterator.

      ```c title=" " lineNumbers=1
      lv_result_t lv_iter_peek(lv_iter_t *iter, void *elem)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name   | Type                                               | Description                           |
      | ------ | -------------------------------------------------- | ------------------------------------- |
      | `iter` | <ApiLink name="lv_iter_t" display="lv_iter_t *" /> | `lv_iter_t` object create before      |
      | `elem` | `void *`                                           | The pointer to store the next element |

      **Returns:** <ApiLink name="lv_result_t" /> — LV\_RESULT\_OK: Peek the next element successfully LV\_RESULT\_INVALID: The next element is invalid
    </ApiMember>

    <ApiMember kind="function" name="lv_iter_peek_advance" file="misc/lv_iter.h" line="91" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_iter.h#L91">
      lv_iter_peek_advance [#lv_iter_peek_advance]

      Only advance the iterator without getting the next element.

      ```c title=" " lineNumbers=1
      lv_result_t lv_iter_peek_advance(lv_iter_t *iter)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name   | Type                                               | Description                      |
      | ------ | -------------------------------------------------- | -------------------------------- |
      | `iter` | <ApiLink name="lv_iter_t" display="lv_iter_t *" /> | `lv_iter_t` object create before |

      **Returns:** <ApiLink name="lv_result_t" /> — LV\_RESULT\_OK: Peek the next element successfully LV\_RESULT\_INVALID: The next element is invalid
    </ApiMember>

    <ApiMember kind="function" name="lv_iter_peek_reset" file="misc/lv_iter.h" line="99" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_iter.h#L99">
      lv_iter_peek_reset [#lv_iter_peek_reset]

      Reset the peek cursor to the `next` cursor.

      ```c title=" " lineNumbers=1
      lv_result_t lv_iter_peek_reset(lv_iter_t *iter)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name   | Type                                               | Description                      |
      | ------ | -------------------------------------------------- | -------------------------------- |
      | `iter` | <ApiLink name="lv_iter_t" display="lv_iter_t *" /> | `lv_iter_t` object create before |

      **Returns:** <ApiLink name="lv_result_t" /> — LV\_RESULT\_OK: Reset the peek buffer successfully LV\_RESULT\_INVALID: The peek buffer is invalid
    </ApiMember>

    <ApiMember kind="function" name="lv_iter_inspect" file="misc/lv_iter.h" line="106" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_iter.h#L106">
      lv_iter_inspect [#lv_iter_inspect]

      Inspect the element of the iterator. The callback function will be called for each element of the iterator.

      ```c title=" " lineNumbers=1
      void lv_iter_inspect(lv_iter_t *iter, lv_iter_inspect_cb inspect_cb)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name         | Type                                               | Description                                  |
      | ------------ | -------------------------------------------------- | -------------------------------------------- |
      | `iter`       | <ApiLink name="lv_iter_t" display="lv_iter_t *" /> | `lv_iter_t` object create before             |
      | `inspect_cb` | <ApiLink name="lv_iter_inspect_cb" />              | The callback function to inspect the element |
    </ApiMember>
  </ApiTab>
</ApiTabs>

Typedefs [#typedefs]

<ApiMember kind="typedef" name="lv_iter_next_cb" file="misc/lv_iter.h" line="28" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_iter.h#L28">
  lv_iter_next_cb [#lv_iter_next_cb]

  ```c title=" " lineNumbers=1
  typedef lv_result_t(* lv_iter_next_cb) (void *instance, void *context, void *elem)
  ```
</ApiMember>

<TypeUsedBy name="lv_iter_next_cb" count="1">
  * `lv_iter_create` — param `next_cb`
</TypeUsedBy>

<ApiMember kind="typedef" name="lv_iter_inspect_cb" file="misc/lv_iter.h" line="29" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_iter.h#L29">
  lv_iter_inspect_cb [#lv_iter_inspect_cb]

  ```c title=" " lineNumbers=1
  typedef void(* lv_iter_inspect_cb) (void *elem)
  ```
</ApiMember>

<TypeUsedBy name="lv_iter_inspect_cb" count="1">
  * `lv_iter_inspect` — param `inspect_cb`
</TypeUsedBy>

Dependencies [#dependencies]

<FileIncludes includes="[&#x22;lv_types.h&#x22;]" transitiveIncludes="[&#x22;lv_conf_internal.h&#x22;, &#x22;lv_conf_kconfig.h&#x22;]" />
