diff options
Diffstat (limited to 'gcc/pointer-set.c')
-rw-r--r-- | gcc/pointer-set.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/gcc/pointer-set.c b/gcc/pointer-set.c index 5daf88bd0bc..cd23d32ded8 100644 --- a/gcc/pointer-set.c +++ b/gcc/pointer-set.c @@ -171,3 +171,30 @@ pointer_set_insert (struct pointer_set_t *pset, void *p) return 0; } + +struct pointer_set_iter_t +pointer_set_begin (struct pointer_set_t *pset) +{ + struct pointer_set_iter_t iter = { 0, -1 }; + + return pointer_set_next (pset, iter); +} + +struct pointer_set_iter_t +pointer_set_next (struct pointer_set_t *pset, struct pointer_set_iter_t it) +{ + struct pointer_set_iter_t res = { 0, -1 }; + size_t pos = (size_t)(it.slot + 1); + + for (; pos < pset->n_slots; ++pos) + { + if (pset->slots[pos]) + { + res.elem = pset->slots[pos]; + res.slot = pos; + break; + } + } + + return res; +} |