note
	description: "Circular chains implemented as linked lists"
	library: "Free implementation of ELKS library"
	legal: "See notice at end of class."
	status: "See notice at end of class."
	names: linked_circular, ring, sequence
	representation: linked
	access: index, cursor, membership
	contents: generic
	date: "$Date: 2018-11-14 15:15:17 +0000 (Wed, 14 Nov 2018) $"
	revision: "$Revision: 102463 $"

class interface
	LINKED_CIRCULAR [G]

create 
	make,
	make_from_iterable

feature -- Measurement

	count: INTEGER_32
			-- Number of items
	
feature -- Element change

	replace (v: G)
			-- Replace current item by v.

	merge_right (other: like Current)
			-- Merge other into current structure after cursor
			-- position. Do not move cursor. Empty other.

	put_right (v: like item)
			-- Add v to the right of cursor position.
			-- Do not move cursor.

	put_front (v: like item)
			-- Add v to beginning.
			-- Do not move cursor.

	extend (v: like item)
			-- Add v to end.
			-- Do not move cursor.

	merge_left (other: like Current)
			-- Merge other into current structure before cursor
			-- position. Do not move cursor. Empty other.

	put_left (v: like item)
			-- Add v to the left of cursor position.
			-- Do not move cursor.
	
feature -- Access

	item: G
			-- Current item

	cursor: CIRCULAR_CURSOR
			-- Current cursor position
	
feature -- Status report

	Full: BOOLEAN = False
			-- Is structured filled to capacity? (Answer: no.)

	readable: BOOLEAN
			-- Is there a current item that may be read?

	valid_cursor (p: CURSOR): BOOLEAN
			-- Can the cursor be moved to position p?

	writable: BOOLEAN
			-- Is there a current item that may be written?

	isfirst: BOOLEAN
			-- Is cursor on first item?

	islast: BOOLEAN
			-- Is cursor on last item?
	
feature -- Cursor movement

	go_to (p: CURSOR)
			-- Move cursor to position p.

	set_start
			-- Select current item as the first.

	start
			-- Move to position currently selected as first.
	
feature -- Cursor movement

	l_forth
	
feature -- Removal

	remove_left
			-- Remove item to the left of cursor position.
			-- Do not move cursor.
		require else
				count > 1

	remove_right
			-- Remove item to the right of cursor position.
			-- Do not move cursor.
		require else
				count > 1
	
note
	copyright: "Copyright (c) 1984-2018, Eiffel Software and others"
	license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
	source: "[
		Eiffel Software
		5949 Hollister Ave., Goleta, CA 93117 USA
		Telephone 805-685-1006, Fax 805-685-6869
		Website http://www.eiffel.com
		Customer support http://support.eiffel.com
	]"

end -- class LINKED_CIRCULAR

Generated by ISE EiffelStudio