elogger API
Overview Classes Cluster Class Index          Top Features

structure.container

Class DS_LINEAR_CURSOR


Direct ancestors

DS_CURSOR

Known direct descendants

DS_BILINEAR_CURSOR, DS_SET_CURSOR

Features

Invariants

indexing

description

Cursors for data structures that can be traversed forward

library

Gobo Eiffel Structure Library

copyright

Copyright (c) 1999-2001, Eric Bezault and others

license

Eiffel Forum License v2 (see forum.txt)

deferred class DS_LINEAR_CURSOR [G]

inherit

DS_CURSOR
KL_IMPORTED_ANY_ROUTINES

feature -- Access

ANY_: KL_ANY_ROUTINES

-- Routines that ought to be in class ANY
-- (From KL_IMPORTED_ANY_ROUTINES)

ensure

any_routines_not_void: Result /= Void

item: G

-- Item at cursor position
-- (From DS_CURSOR)

require

not_off: not off

container: DS_LINEAR[G]

-- Data structure traversed
-- (From DS_CURSOR)

deferred

feature -- Comparison

is_equal (other: like Current): BOOLEAN

-- Are other and current cursor at the same position?
-- (From ANY)

require

other_not_void: other /= Void

ensure

symmetric: Result implies other.is_equal (Current)
consistent: standard_is_equal (other) implies Result

feature -- Status report

is_valid: BOOLEAN

-- Is cursor valid?
-- (From DS_CURSOR)

obsolete

Backward compatibility with Gobo 1.4

ensure

definition: Result = True

off: BOOLEAN

-- Is there no item at cursor position?
-- (From DS_CURSOR)

same_position (other: like Current): BOOLEAN

-- Is current cursor at same position as other?
-- (From DS_CURSOR)

require

other_not_void: other /= Void

valid_cursor (other: like Current): BOOLEAN

-- Is other a valid cursor according
-- to current traversal strategy?
-- (From DS_CURSOR)

require

other_not_void: other /= Void

ensure

Result implies container.valid_cursor (other)

after: BOOLEAN

-- Is there no valid position to right of cursor?

is_first: BOOLEAN

-- Is cursor on first item?

ensure

not_empty: Result implies not container.is_empty
not_off: Result implies not off

feature -- Cursor movement

forth

-- Move cursor to next position.

require

not_after: not after

go_after

-- Move cursor to after position.

ensure

after: after

search_forth (v: G)

-- Move to first position at or after current
-- position where item and v are equal.
-- (Use equality_tester's criterion from container
-- if not void, use = criterion otherwise.)
-- Move after if not found.

require

not_off: not off or after

start

-- Move cursor to first position.

ensure

empty_behavior: container.is_empty implies after
first_or_after: is_first xor after

go_to (other: like Current)

-- Move cursor to other's position.
-- (From DS_CURSOR)

require

other_not_void: other /= Void
other_valid: valid_cursor (other)

ensure

same_position: same_position (other)

feature -- Duplication

copy (other: like Current)

-- Copy other to current cursor.
-- (From ANY)

require

other_not_void: other /= Void
type_identity: same_type (other)

ensure

is_equal: is_equal (other)

feature {DS_TRAVERSABLE} -- Implementation

set_next_cursor (a_cursor: like next_cursor)

-- Set next_cursor to a_cursor.
-- (From DS_CURSOR)

ensure

next_cursor_set: next_cursor = a_cursor

feature {DS_LINEAR} -- Implementation

next_cursor: DS_LINEAR_CURSOR[G]

-- Next cursor
-- (Used by container to keep track of traversing
-- cursors (i.e. cursors associated with container
-- and which are not currently off).)
-- (From DS_CURSOR)

invariant

after_constraint: after implies off

-- From DS_CURSOR
container_not_void: container /= Void
empty_constraint: container.is_empty implies off

-- From ANY
reflexive_equality: standard_is_equal (Current)
reflexive_conformance: conforms_to (Current)

Documentation generated by edoc