mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2025-12-31 11:28:31 +00:00
ring: add RING_FOREACH{,_SAFE,_REVERSED}
This commit is contained in:
parent
38e13ef1a8
commit
6b86259646
@ -19,6 +19,8 @@
|
||||
#ifndef _H_RING2
|
||||
#define _H_RING2
|
||||
|
||||
#include "spice_common.h"
|
||||
|
||||
typedef struct Ring RingItem;
|
||||
typedef struct Ring {
|
||||
RingItem *prev;
|
||||
@ -129,5 +131,24 @@ static inline RingItem *ring_prev(Ring *ring, RingItem *pos)
|
||||
return (ret == ring) ? NULL : ret;
|
||||
}
|
||||
|
||||
#define RING_FOREACH_SAFE(var, next, ring) \
|
||||
for ((var) = ring_get_head(ring), \
|
||||
(next) = (var) ? ring_next(ring, (var)) : NULL; \
|
||||
(var); \
|
||||
(var) = (next), \
|
||||
(next) = (var) ? ring_next(ring, (var)) : NULL)
|
||||
|
||||
|
||||
#define RING_FOREACH(var, ring) \
|
||||
for ((var) = ring_get_head(ring); \
|
||||
(var); \
|
||||
(var) = ring_next(ring, var))
|
||||
|
||||
#define RING_FOREACH_REVERSED(var, ring) \
|
||||
for ((var) = ring_get_tail(ring); \
|
||||
(var); \
|
||||
(var) = ring_prev(ring, var))
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user