Iterator - Parrot Iterator Class
Iterators are used in combination with other classes (mainly aggregates) to visit all entries in that aggregate.
Iterate from the beginning of the aggregate:
.include "iterator.pasm" new P0, .Iterator, P1 # setup iterator for aggregate P1 set P0, .ITERATE_FROM_START # reset iterator, begin at start iter_loop: unless P0, iter_end # while (entries) ... shift P2, P0 # get entry ... branch iter_loop
The two lines of iterator creation can be short written as:
iter P0, P1 # create new iterator P0 for aggregate P1
This creates a new iterator and resets it.
Iterate from the end of the aggregate (Array like classes only):
.include "iterator.pasm" new P0, .Iterator, P1 # setup iterator for aggregate P1 set P0, .ITERATE_FROM_END # reset iterator, begin at end iter_loop: unless P0, iter_end # while (entries) ... pop P2, P0 # get entry ... branch iter_loop
.include "datatypes.pasm" # type constants .include "iterator.pasm" new P0, .Iterator, P1 # setup iterator for hash P1 set P0, .ITERATE_FROM_START # reset iterator, begin at start iter_loop: unless P0, iter_end # while (entries) ... shift S2, P0 # get key for next entry typeof I0, P0[S2] # get type of entry at key S2 ne I0, .DATATYPE_INTVAL, no_int set I1, P0[S2] # extract integer no_int: ... branch iter_loop
classes/iterator.pmc, t/pmc/iter.t
Leopold Toetsch <lt@toetsch.at>
To install Ruby, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Ruby
CPAN shell
perl -MCPAN -e shell install Ruby
For more information on module installation, please visit the detailed CPAN module installation guide.