Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenlib/BLI_listbase.h
| Show First 20 Lines • Show All 165 Lines • ▼ Show 20 Lines | #define LISTBASE_CIRCULAR_BACKWARD_END(lb, lb_iter, lb_init) \ | ||||
| while ((lb_iter = (lb_iter)->prev ? (lb_iter)->prev : (lb)->last), (lb_iter != lb_init)) \ | while ((lb_iter = (lb_iter)->prev ? (lb_iter)->prev : (lb)->last), (lb_iter != lb_init)) \ | ||||
| ; \ | ; \ | ||||
| } \ | } \ | ||||
| ((void)0) | ((void)0) | ||||
| #define LISTBASE_FOREACH(type, var, list) \ | #define LISTBASE_FOREACH(type, var, list) \ | ||||
| for (type var = (type)((list)->first); var != NULL; var = (type)(((Link *)(var))->next)) | for (type var = (type)((list)->first); var != NULL; var = (type)(((Link *)(var))->next)) | ||||
| #define LISTBASE_FOREACH_BACKWARD(type, var, list) \ | |||||
| for (type var = (type)((list)->last); var != NULL; var = (type)(((Link *)(var))->prev)) | |||||
| /** A version of #LISTBASE_FOREACH that supports removing the item we're looping over. */ | /** A version of #LISTBASE_FOREACH that supports removing the item we're looping over. */ | ||||
| #define LISTBASE_FOREACH_MUTABLE(type, var, list) \ | #define LISTBASE_FOREACH_MUTABLE(type, var, list) \ | ||||
| for (type var = (type)((list)->first), *var##_iter_next; \ | for (type var = (type)((list)->first), *var##_iter_next; \ | ||||
| ((var != NULL) ? ((void)(var##_iter_next = (type)(((Link *)(var))->next)), 1) : 0); \ | ((var != NULL) ? ((void)(var##_iter_next = (type)(((Link *)(var))->next)), 1) : 0); \ | ||||
| var = var##_iter_next) | var = var##_iter_next) | ||||
| /** A version of #LISTBASE_FOREACH_BACKWARD that supports removing the item we're looping over. */ | |||||
| #define LISTBASE_FOREACH_BACKWARD_MUTABLE(type, var, list) \ | |||||
| for (type var = (type)((list)->last), *var##_iter_prev; \ | |||||
| ((var != NULL) ? ((void)(var##_iter_prev = (type)(((Link *)(var))->prev)), 1) : 0); \ | |||||
| var = var##_iter_prev) | |||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||
| } | } | ||||
| #endif | #endif | ||||
| #endif /* __BLI_LISTBASE_H__ */ | #endif /* __BLI_LISTBASE_H__ */ | ||||