indexing
	description: "Linkable cells with a reference to their right neighbor"
	library: "Gobo Eiffel Structure Library"
	author: "Eric Bezault <ericb@gobo.demon.co.uk>"
	copyright: "Copyright (c) 1997, Eric Bezault"

class interface
	DS_LINKABLE [G]

create 

	make (v: G)
			-- Insert v in cell.
			-- Was declared in DS_CELL as synonym of make and put.
			-- (from DS_CELL)
		ensure -- from DS_CELL
			inserted: item = v

feature -- Access

	item: G
			-- Content of cell
			-- (from DS_CELL)

	right: like Current
			-- Right neighbor
	
feature -- Element change

	forget_right
			-- Remove right neighbor.
		ensure
			forgotten: right = void

	make (v: G)
			-- Insert v in cell.
			-- Was declared in DS_CELL as synonym of make and put.
			-- (from DS_CELL)
		ensure -- from DS_CELL
			inserted: item = v

	put (v: G)
			-- Insert v in cell.
			-- Was declared in DS_CELL as synonym of make and put.
			-- (from DS_CELL)
		ensure -- from DS_CELL
			inserted: item = v

	put_right (other: like Current)
			-- Put other to right of cell.
		require
			other_not_void: other /= void
		ensure
			linked: right = other
	
invariant

		-- from GENERAL
	reflexive_equality: standard_is_equal (Current);
	reflexive_conformance: conforms_to (Current);

end -- class DS_LINKABLE