+private class RopeStringChars
+ super SequenceRead[Char]
+
+ var tgt: Rope
+
+ redef fun [](pos)
+ do
+ assert pos < tgt.length
+ var path = tgt.node_at(pos)
+ return path.leaf.str.chars[path.offset]
+ end
+
+ redef fun iterator do return iterator_from(0)
+
+ redef fun iterator_from(pos) do return new RopeCharIterator(tgt, pos)
+
+ redef fun reverse_iterator do return reverse_iterator_from(tgt.length-1)
+
+ redef fun reverse_iterator_from(pos) do return new ReverseRopeCharIterator(tgt, pos)
+end
+