note
	description: "Subsets that are traversable sequentially"
	library: "Free implementation of ELKS library"
	legal: "See notice at end of class."
	status: "See notice at end of class."
	names: traversable_subset, set, subset
	access: sequential
	contents: generic
	date: "$Date: 2019-07-05 15:26:16 +0000 (Fri, 05 Jul 2019) $"
	revision: "$Revision: 103325 $"

deferred class interface
	TRAVERSABLE_SUBSET [G]

feature -- Access

	item: G
			-- Current item
		require
			not_off: not off
	
feature -- Measurement

	count: INTEGER_32
			-- Number of items
	
feature -- Comparison

	disjoint (other: TRAVERSABLE_SUBSET [G]): BOOLEAN
			-- Do current set and other have no
			-- items in common?

	is_subset alias "" (other: TRAVERSABLE_SUBSET [G]): BOOLEAN
			-- Is current set a subset of other?
	
feature -- Status report

	after: BOOLEAN
			-- Is cursor behind last item?

	off: BOOLEAN
			-- Is cursor off the active items?

	is_empty: BOOLEAN
			-- Is container empty?
	
feature -- Cursor movement

	start
			-- Move cursor to first item.

	forth
			-- Move cursor to next element.
		require
			not_after: not after
	
feature -- Element change

	merge (other: CONTAINER [G])
			-- Add all items of other.
	
feature -- Removal

	remove
			-- Remove current item.
		require
			not_off: not off
	
feature -- Basic operations

	symdif (other: TRAVERSABLE_SUBSET [G])
			-- Remove all items also in other, and add all
			-- items of other not already present.

	intersect (other: TRAVERSABLE_SUBSET [G])
			-- Remove all items not in other.
			-- No effect if other is_empty.

	subtract (other: TRAVERSABLE_SUBSET [G])
			-- Remove all items also in other.
	
invariant
	empty_definition: is_empty = (count = 0)
	count_range: count >= 0

note
	copyright: "Copyright (c) 1984-2019, 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 TRAVERSABLE_SUBSET

Generated by ISE EiffelStudio