1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

improved pool_foreach iterator

This commit is contained in:
Steffen Vogel 2016-01-15 15:13:04 +01:00
parent cc82004dc6
commit 305e411814
2 changed files with 2 additions and 20 deletions

View file

@ -23,9 +23,8 @@
#define pool_previous(pool) pool_getrel(pool, -1)
/** Iterate through the circuluar buffer. */
#define pool_foreach(it, pool, start, end) for (it = pool_get(pool, start); \
it != pool_get(pool, end); \
it = pool_get_next(pool, it))
#define pool_foreach(ptr, pool, start, end) for (int _i = start, _p; _p = 1, _i < end; _i++) \
for (ptr = pool_get(pool, _i); _p--; )
/** Return the number of elements in the pool. */
#define pool_length(pool) ((pool)->length)
@ -62,11 +61,4 @@ void * pool_get(struct pool *p, int index);
/** Return pointer relative to last inserted element. */
void * pool_getrel(struct pool *p, int offset);
/** Return next element after ptr */
void * pool_get_next(struct pool *p, void *ptr);
/** Return element before ptr */
void * pool_get_previous(struct pool *p, void *ptr);
#endif /* _POOL_H_ */

View file

@ -46,13 +46,3 @@ void * pool_getrel(struct pool *p, int offset)
{
return pool_get(p, p->last + offset);
}
void * pool_get_next(struct pool *p, void *ptr)
{
ptr += p->stride;
if (ptr < p->buffer + p->length)
ptr -= p->length;
return ptr;
}