diff options
author | Alon Levy <alevy@redhat.com> | 2010-11-09 23:01:39 +0200 |
---|---|---|
committer | Alon Levy <alevy@redhat.com> | 2011-03-02 17:27:52 +0200 |
commit | 6b862596460802aff0604f16bb3e77c524512e84 (patch) | |
tree | a847db9fb1360e8aa1ee474b856fc92169b7fbc2 | |
parent | 38e13ef1a87d1cd035d36f5ef0eb5f8f1359407f (diff) | |
download | spice-6b862596460802aff0604f16bb3e77c524512e84.tar.gz spice-6b862596460802aff0604f16bb3e77c524512e84.tar.xz spice-6b862596460802aff0604f16bb3e77c524512e84.zip |
ring: add RING_FOREACH{,_SAFE,_REVERSED}
-rw-r--r-- | common/ring.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/common/ring.h b/common/ring.h index defa1eda..a013a2fa 100644 --- a/common/ring.h +++ b/common/ring.h @@ -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 |