note
	description: "[
		Lists implemented as sequences of arrays, the last of which may
		be non-full. No limit on size (a new array is allocated if list
		outgrows its initial allocation).
	]"
	library: "Free implementation of ELKS library"
	legal: "See notice at end of class."
	status: "See notice at end of class."
	names: list, sequence
	representation: array, linked
	access: index, cursor, membership
	contents: generic
	date: "$Date: 2018-12-15 18:06:16 +0000 (Sat, 15 Dec 2018) $"
	revision: "$Revision: 102608 $"

class interface
	MULTI_ARRAY_LIST [G]

create 
	make

feature -- Access

	item: G
			-- Item at cursor position

	first: like item
			-- Item at first position

	last: like item
			-- Item at last position

	has (v: like item): BOOLEAN
			-- Does list include v?
			-- (Reference or object equality,
			-- based on object_comparison.)

	index: INTEGER_32
			-- Current cursor index

	cursor: MULTAR_LIST_CURSOR [G]
			-- Current cursor position

	first_element: BI_LINKABLE [ARRAYED_LIST [G]]
			-- First array_sequence element of the list

	last_element: BI_LINKABLE [ARRAYED_LIST [G]]
			-- Last array_sequence element of the list

	block_size: INTEGER_32
	
feature -- Measurement

	count: INTEGER_32
			-- Number of items
	
feature -- Status report

	full: BOOLEAN
			-- Is structure filled to capacity?

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

	start
			-- Move cursor to first position.
			-- (No effect if empty)

	finish
			-- Move cursor to last position.
			-- (No effect if empty)

	forth
			-- Move cursor to next position, if any.

	back
			-- Move cursor to previous position, if any.

	move (i: INTEGER_32)
			-- Move cursor i positions. The cursor
			-- may end up off if the offset is too big.

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

	search (v: like item)
			-- Move cursor to first position (at or after current
			-- cursor position) where item and v are equal.
			-- (Reference or object equality,
			-- based on object_comparison.)
	
feature -- Element change

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

	extend (v: like item)
			-- Add v to end.

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

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

	put_right (v: like item)
			-- Add v to the left of current position.
			-- Do not move cursor.
	
feature -- Removal

	wipe_out
			-- Remove all items.

	remove
			-- Remove current item

	remove_left
			-- Remove item to the left of cursor position.
			-- Do not move cursor.

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

	prune_all (v: like item)
			-- Remove all occurrences of v.
			-- (Reference or object equality,
			-- based on object_comparison.)
			-- Leave structure exhausted.
	
invariant
	writable_definition: writable = not off
	readable_definition: readable = not off
	extendible_definition: extendible

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 MULTI_ARRAY_LIST

Generated by ISE EiffelStudio