Eiffel Media API
Overview Cluster Class Classes Index      Previous Next      Top Features

structure.container

Class DS_CURSOR


Direct ancestors

KL_IMPORTED_ANY_ROUTINES

Known direct descendants

DS_LINEAR_CURSOR, DS_DYNAMIC_CURSOR, DS_INDEXED_CURSOR

Features

Invariants

indexing

description

Cursors for data structure traversals

library

Gobo Eiffel Structure Library

copyright

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

license

Eiffel Forum License v2 (see forum.txt)

date

$Date: 2005/02/07 16:31:07 $

revision

$Revision: 1.6 $

deferred class

DS_CURSOR [G]

inherit

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
container: DS_TRAVERSABLE [G]

-- Data structure traversed

item: G

-- Item at cursor position

require
not_off: not off

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?

obsolete

Backward compatibility with Gobo 1.4

ensure
definition: Result = True
off: BOOLEAN

-- Is there no item at cursor position?

same_position (other: like Current): BOOLEAN

-- Is current cursor at same position as other?

require
other_not_void: other /= Void
valid_cursor (other: like Current): BOOLEAN

-- Is other a valid cursor according
-- to current traversal strategy?

require
other_not_void: other /= Void
ensure
Result implies container.valid_cursor (other)

feature -- Cursor movement

go_to (other: like Current)

-- Move cursor to other's position.

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

next_cursor: DS_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).)

set_next_cursor (a_cursor: like next_cursor)

-- Set next_cursor to a_cursor.

ensure
next_cursor_set: next_cursor = a_cursor

invariant

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)

end