template representation indexed_stream_view[T] isa positionable_stream[T];
method position(v@:indexed_stream_view[`T]):int;
method set_position(v@:indexed_stream_view[`T], p:int,
off_end:&():void):void;
method peek_next(v@:indexed_stream_view[`T], at_end:&():T):T;
method peek_prev(v@:indexed_stream_view[`T], at_start:&():T):T;
method length(v@:indexed_stream_view[`T]):int;
method view_stream(c@:indexed[`T]):positionable_stream[T];
template representation m_indexed_stream_view[T] isa m_positionable_stream[T],
indexed_stream_view[T];
method set_peek_next(v@:m_indexed_stream_view[`T], x:T):void;
method set_peek_prev(v@:m_indexed_stream_view[`T], x:T):void;
method view_stream(c@:m_indexed[`T]):m_positionable_stream[T];
Stream views of indexed collections are fully positionable, but
not insertable, extensible, or removable. (Stream views of arrays
could be made extensible.)
template object list_stream_view[T] isa m_stream[T],
removable_stream[T], insertable_stream[T];
method view_stream(l@:simple_list[`T]):list_stream_view[T];
method is_at_end(s@:list_stream_view[`T]):bool;
method is_at_start(s@:list_stream_view[`T]):bool;
method forward(s@:list_stream_view_before_end[`T], at_end:&():void):void;
method peek_next(s@:list_stream_view_before_end[`T], at_end:&():T):T;
method set_peek_next(s@:list_stream_view_before_end[`T], x:T):void;
method remove_next(s@:list_stream_view_before_end[`T]):void;
method insert(s@:list_stream_view[`T], x:T):void;
template representation m_list_stream_view[T] isa list_stream_view[T];
method view_stream(l@:m_list[`T]):m_list_stream_view[T];
method insert(s@:m_list_stream_view_at_start[`T], x:T):void;
Stream views of lists are not positionable or extensible but are
insertable and removable.