module Iterator: sig
.. end
Iterators for ropes. It is more efficient to use an iterator to
perform small steps and get the characters than to use Rope.get
repeatedly.
type
t
Mutable iterator on a rope. Iterators are less efficient than
Rope.get
on small ropes (of length
<= 1024
chars).
val make : Rope.rope -> int -> t
make r i0
returns a new iterator for the rope r
. It is
initially at position i0
.
val get : t -> char
get itr
returns the character of the rope at the current
position. O(1) time. This does not change the current position.
Raises Out_of_bounds
if the position is outside the rope.
val peek : t -> int -> char
peek itr i
returns the character i
of the rope. If i
is
close to the current position of the iterator, this will in
general be more efficient than get rope i
.
val pos : t -> int
pos itr
returns the current position. It may not be a valid
position of the rope. O(1) time.
val incr : t -> unit
incr itr
moves to the next character. O(1) time.
val decr : t -> unit
decr itr
moves to the previous character. O(1) time.
val goto : t -> int -> unit
goto itr i
move to position i
. O(1) time but the next
call to get
may be slower.
val move : t -> int -> unit
mode itr i
move the current position by i
chars (i
may
be negative or null). O(1) time but the next call to get
may be slower.
val rope : t -> Rope.rope
rope itr
returns the rope from which the iterator was
constructed.