µEvLoop
A fast and lightweight event loop aimed at embedded platforms in C99.
iterator.h
Go to the documentation of this file.
1 
7 #ifndef UEL_ITERATOR_H
8 #define UEL_ITERATOR_H
9 
11 #include <stdlib.h>
12 #include <limits.h>
14 
16 #include "uevloop/utils/closure.h"
17 
28 typedef struct uel_iterator uel_iterator_t;
29 struct uel_iterator{
41  void * (* next)(uel_iterator_t *, void *);
43  void *collection;
44 };
45 
55 bool uel_iterator_foreach(uel_iterator_t *iterator, uel_closure_t *closure);
56 
73 size_t uel_iterator_map(uel_iterator_t *iterator, uel_closure_t *closure, void **destination, size_t limit);
74 
83 void *uel_iterator_find(uel_iterator_t *iterator, uel_closure_t *closure);
84 
91 size_t uel_iterator_count(uel_iterator_t *iterator, uel_closure_t *closure);
92 
100 bool uel_iterator_all(uel_iterator_t *iterator, uel_closure_t *closure);
101 
109 bool uel_iterator_none(uel_iterator_t *iterator, uel_closure_t *closure);
110 
119 bool uel_iterator_any(uel_iterator_t *iterator, uel_closure_t *closure);
120 
124 typedef struct uel_iterator_array uel_iterator_array_t;
127  uel_iterator_t base;
129  size_t item_count;
131  size_t item_size;
132 };
133 
141 void *uel_iterator_array_next(uel_iterator_array_t *iterator, void *last);
142 
150 uel_iterator_array_t uel_iterator_array_create(void *collection, size_t count, size_t size);
151 
158 typedef uel_iterator_t uel_iterator_llist_t;
159 
167 void *uel_iterator_llist_next(uel_iterator_t *iterator, void *last);
168 
175 
178 #define UEL_ITERATOR_MAP_BOUNDLESS UINT_MAX
179 
180 #endif /* UEL_ITERATOR_H */
uel_iterator_map
size_t uel_iterator_map(uel_iterator_t *iterator, uel_closure_t *closure, void **destination, size_t limit)
Applies a closure to an enumerable collection and stores its results.
uel_iterator_array_create
uel_iterator_array_t uel_iterator_array_create(void *collection, size_t count, size_t size)
Creates a new array iterator.
linked-list.h
Defines a simple implementation of linked lists and functions to manipulate it.
uel_iterator_array::item_size
size_t item_size
The size of each element in the array.
Definition: iterator.h:131
uel_iterator_find
void * uel_iterator_find(uel_iterator_t *iterator, uel_closure_t *closure)
Finds the first element enumerated by an iterator that passes the supplied test.
closure.h
Defines closures, objects that bind functions to creating and calling contexts.
uel_iterator_any
bool uel_iterator_any(uel_iterator_t *iterator, uel_closure_t *closure)
Determines whether any elements enumerated by an iterator pass the supplied test or not.
uel_iterator_array::base
uel_iterator_t base
The base iterator interface.
Definition: iterator.h:127
uel_iterator_array_next
void * uel_iterator_array_next(uel_iterator_array_t *iterator, void *last)
Yields elements in a array.
uel_iterator_count
size_t uel_iterator_count(uel_iterator_t *iterator, uel_closure_t *closure)
Counts elements enumerated by an iterator that pass the supplied test.
uel_iterator_all
bool uel_iterator_all(uel_iterator_t *iterator, uel_closure_t *closure)
Determines whether all elements enumerated by an iterator pass the supplied test or not.
uel_iterator_foreach
bool uel_iterator_foreach(uel_iterator_t *iterator, uel_closure_t *closure)
Applies a closure to an enumerable collection.
uel_iterator_llist_create
uel_iterator_llist_t uel_iterator_llist_create(uel_llist_t *list)
Creates a new linked list iterator.
uel_iterator_llist_t
uel_iterator_t uel_iterator_llist_t
Alias to uel_iterator_t. Iterator suitable to traverse linked lists.
Definition: iterator.h:158
uel_iterator_none
bool uel_iterator_none(uel_iterator_t *iterator, uel_closure_t *closure)
Determines whether all elements enumerated by an iterator fail the supplied test or not.
uel_iterator
Iterators are data structures that wrap arbitrary collections of data and define ways of enumerating ...
Definition: iterator.h:29
uel_iterator::collection
void * collection
A reference to the collection being iterated.
Definition: iterator.h:43
uel_iterator_llist_next
void * uel_iterator_llist_next(uel_iterator_t *iterator, void *last)
Yields elements in a linked list.
uel_iterator_array::item_count
size_t item_count
The number of elements in the array.
Definition: iterator.h:129
uel_iterator_array
A specialised iterator suitable for iterating over arrays of arbitrary data.
Definition: iterator.h:125