Module Rope.IteratorSource

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.

Sourcetype t

Mutable iterator on a rope. Iterators are less efficient than Rope.get on small ropes (of length <= 1024 chars).

Sourceval make : rope -> int -> t

make r i0 returns a new iterator for the rope r. It is initially at position i0.

Sourceval 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.

Sourceval 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.

Sourceval pos : t -> int

pos itr returns the current position. It may not be a valid position of the rope. O(1) time.

Sourceval incr : t -> unit

incr itr moves to the next character. O(1) time.

Sourceval decr : t -> unit

decr itr moves to the previous character. O(1) time.

Sourceval goto : t -> int -> unit

goto itr i move to position i. O(1) time but the next call to get may be slower.

Sourceval 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.

Sourceval rope : t -> rope

rope itr returns the rope from which the iterator was constructed.