23 #define BLI_ITERATOR_INIT(iter) \
25 (iter)->skip = false; \
26 (iter)->valid = true; \
30 #define ITER_BEGIN(callback_begin, callback_next, callback_end, _data_in, _type, _instance) \
33 IteratorCb callback_end_func = callback_end; \
34 BLI_Iterator iter_macro; \
35 BLI_ITERATOR_INIT(&iter_macro); \
36 for (callback_begin(&iter_macro, (_data_in)); iter_macro.valid; callback_next(&iter_macro)) { \
37 if (iter_macro.skip) { \
38 iter_macro.skip = false; \
41 _instance = (_type)iter_macro.current;
45 callback_end_func(&iter_macro); \
void(* IteratorCb)(BLI_Iterator *iter)
struct BLI_Iterator BLI_Iterator
void(* IteratorBeginCb)(BLI_Iterator *iter, void *data_in)
SyclQueue void void size_t num_bytes void