cvs -q diff -u
Index: docs/pmc/iterator.pod
===================================================================
RCS file: /cvs/public/parrot/docs/pmc/iterator.pod,v
retrieving revision 1.1
diff -u -r1.1 iterator.pod
--- docs/pmc/iterator.pod	6 Jul 2003 15:22:38 -0000	1.1
+++ docs/pmc/iterator.pod	6 Mar 2004 12:43:06 -0000
@@ -11,8 +11,9 @@
 
 Iterate from the beginning of the aggregate:
 
+  .include "iterator.pasm"
     new P0, .Iterator, P1	# setup iterator for aggregate P1
-    set P0, 0			# reset iterator, begin at start
+    set P0, .ITERATE_FROM_START	# reset iterator, begin at start
   iter_loop:
     unless P0, iter_end		# while (entries) ...
       shift P2, P0		# get entry
@@ -21,8 +22,9 @@
 
 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, 3			# reset iterator, begin at end
+    set P0, .ITERATE_FROM_END   # reset iterator, begin at end
   iter_loop:
     unless P0, iter_end		# while (entries) ...
       pop P2, P0		# get entry
@@ -31,9 +33,10 @@
 
 =head2 Iterating over hashes
 
-    .include "datatypes.pasm"	# type constants
+  .include "datatypes.pasm"	# type constants
+  .include "iterator.pasm"
     new P0, .Iterator, P1	# setup iterator for hash P1
-    set P0, 0			# reset iterator, begin at start
+    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
Index: t/pmc/iter.t
===================================================================
RCS file: /cvs/public/parrot/t/pmc/iter.t,v
retrieving revision 1.10
diff -u -r1.10 iter.t
--- t/pmc/iter.t	22 Feb 2004 22:55:29 -0000	1.10
+++ t/pmc/iter.t	6 Mar 2004 12:43:25 -0000
@@ -4,11 +4,11 @@
 
 =head1 NAME
 
-t/pmc/iter.t - Iteratation
+t/pmc/iter.t - Iteration
 
 =head1 SYNOPSIS
 
-	% perl t/pmc/iter.t
+	% perl -I lib t/pmc/iter.t
 
 =head1 DECSRIPTION
 
@@ -16,7 +16,7 @@
 
 =cut
 
-use Parrot::Test tests => 9;
+use Parrot::Test tests => 10;
 use Test::More qw(skip);
 output_is(<<'CODE', <<'OUTPUT', "new iter");
 	new P2, .PerlArray
@@ -285,6 +285,44 @@
 CODE
 676665
 ABC
+OUTPUT
+
+
+output_is(<< 'CODE', << 'OUTPUT', "PerlString iterator in PIR");
+##PIR##
+.include "iterator.pasm"
+.sub _main
+    .local pmc string_1
+    string_1 = new PerlString
+    string_1 = "abcd\x65\x66\x67"
+    print string_1
+    print "\n"
+
+    .local pmc iter_1
+    iter_1 = new Iterator, string_1
+    iter_1 = .ITERATE_FROM_START
+
+    .local int code_point_1
+ITER_LOOP:
+    unless iter_1 goto ITER_END
+    shift code_point_1, iter_1
+    print code_point_1
+    print "\n"
+    branch ITER_LOOP
+ITER_END:
+    print "reached end\n"
+    end
+.end
+CODE
+abcdefg
+97
+98
+99
+100
+101
+102
+103
+reached end
 OUTPUT
 
 SKIP: {
