note
	description: "[
		Sequential, one-way linked lists that call add/remove features
		when an item is removed or added.
	]"
	legal: "See notice at end of class."
	status: "See notice at end of class."
	keywords: "event, linked, list"
	date: "$Date: 2018-11-13 12:58:34 +0000 (Tue, 13 Nov 2018) $"
	revision: "$Revision: 102449 $"

deferred class interface
	INTERACTIVE_LIST [G]

feature -- Miscellaneous

	on_item_added_at (an_item: like item; item_index: INTEGER_32)
			-- an_item has just been added at index item_index.
		require
			item_index_valid: (1 <= item_index) and (item_index <= count)

	on_item_removed_at (an_item: like item; item_index: INTEGER_32)
			-- an_item has just been removed from index item_index.
		require
			item_index_valid: (1 <= item_index) and (item_index <= count + 1)
	
feature -- Element Change

	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.

	append (s: SEQUENCE [like item])
			-- Append a copy of s.

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

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

	put_i_th (v: like i_th; i: INTEGER_32)
			-- Replace i-th entry, if in index interval, by v.

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

	remove
			-- Remove current item.
			-- Move cursor to right neighbor
			-- (or after if no right neighbor).

	remove_right
			-- Remove item to the right of cursor position.
			-- Do not move cursor.

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

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

	prune_all (v: like item)
			-- Remove all occurrences of v.
			-- (Reference or object equality,
			-- based on object_comparison.)
		ensure then
			is_after: after

	update_for_added (start_index: INTEGER_32)
			-- Call added_item for all items from index start_index to count
	
feature -- Removal

	wipe_out
			-- Remove all items.
	
note
	library: "EiffelBase: Library of reusable components for Eiffel."
	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 INTERACTIVE_LIST

Generated by ISE EiffelStudio