NAME
src/pmc/hashiterator.pmc - Implementation of Iterator for Hashes.
DESCRIPTION
Generic iterator for traversing Hash.
SYNOPSIS
default usage
    .local pmc iterator, hash, key, entry
    iterator = iter hash
  iter_loop:
    unless iterator, iter_end  # while (more values)
    key   = shift iterator     # get the key. Some key
    entry = hash[key]
    ...
    goto iter_loop
  iter_end:
C++-style usage
    .local pmc iterator, hash, iter_key, key, entry
    iterator = iter hash
  iter_loop:
    unless iterator, iter_end  # while (more values)
    iter_key = shift iterator     # get the key
    key = iter_key.'key'()        # get an original key used to put value
    key = iter_key.'value'()      # get an entry
    ...
    goto iter_loop
  iter_end:
Methods
- static void advance_to_next(PMC *self)Advance to next position. Return found (if any) HashBucket.
- void init_pmc(PMC *initializer)Initializes the iterator with an aggregate PMC. Defaults iteration mode to iterate from start.
- void mark()Marks the hash as live.
- PMC *clone()
- void set_integer_native()
- PMC *get_pmc()Returns this Iterator's Hash.
- INTVAL get_bool()Returns true if there is more elements to iterate over.
- INTVAL elements()Returns the number of remaining elements in the Hash.
- PMC *shift_pmc()Returns the HashIteratorKey for the current position and advance the next one.
