indexing
	description: "Nested list flatteners: machines that make sure that all items accessible remotely in some given nested lists are also kept locally. The nested list flatteners take care of possible cycles in the di-graph of nested lists."
	library: "Gobo Eiffel Structure Library"
	author: "Eric Bezault <ericb@gobo.demon.co.uk>"
	copyright: "Copyright (c) 1998, Eric Bezault"

class interface
	DS_NESTED_LIST_FLATTENER [G]

create 

	make

feature -- Basic operations

	flatten (nested_lists: DS_LIST [DS_NESTED_LIST [G]])
			-- Make sure that for each list in nested_lists
			-- all items are held locally, even those that
			-- could be accessed remotely.
		require
			nested_lists_not_void: nested_lists /= void;
			no_void_nested_list: not nested_lists.has (void)
	
invariant

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

end -- class DS_NESTED_LIST_FLATTENER