PebbleOS
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Functions
Iterator

Generic bidirectional iterator over caller-defined state. More...

Data Structures

struct  Iterator
 Iterator. More...
 

Macros

#define ITERATOR_EMPTY   ((Iterator){0, 0, 0})
 Iterator without callbacks or state.
 

Typedefs

typedef void * IteratorState
 Iterator state, owned by the caller.
 
typedef bool(* IteratorCallback) (IteratorState state)
 Step function of an iterator.
 

Functions

void iter_init (Iterator *iter, IteratorCallback next, IteratorCallback prev, IteratorState state)
 Initialize an iterator.
 
bool iter_next (Iterator *iter)
 Move to the next element.
 
bool iter_prev (Iterator *iter)
 Move to the previous element.
 

Detailed Description

Generic bidirectional iterator over caller-defined state.

Gives iteration a consistent shape and lets unit tests drive it.


Data Structure Documentation

◆ Iterator

struct Iterator
Data Fields
IteratorCallback next Moves to the next element.
IteratorCallback prev Moves to the previous element.
IteratorState state State passed to the callbacks.

Macro Definition Documentation

◆ ITERATOR_EMPTY

#define ITERATOR_EMPTY   ((Iterator){0, 0, 0})

Iterator without callbacks or state.

Typedef Documentation

◆ IteratorCallback

typedef bool(* IteratorCallback) (IteratorState state)

Step function of an iterator.

Parameters
stateIterator state, updated in place.
Returns
true if the iterator moved.

◆ IteratorState

typedef void* IteratorState

Iterator state, owned by the caller.

Function Documentation

◆ iter_init()

void iter_init ( Iterator *  iter,
IteratorCallback  next,
IteratorCallback  prev,
IteratorState  state 
)

Initialize an iterator.

Parameters
[out]iterIterator.
nextStep forward.
prevStep backward.
stateIterator state.

◆ iter_next()

bool iter_next ( Iterator *  iter)

Move to the next element.

Parameters
iterIterator, with a next callback.
Returns
true if the iterator moved.

◆ iter_prev()

bool iter_prev ( Iterator *  iter)

Move to the previous element.

Parameters
iterIterator, with a prev callback.
Returns
true if the iterator moved.