This site contains older material on Eiffel. For the main Eiffel page, see http://www.eiffel.com.

EiffelBase class
(HTML page generated by ISE Eiffel 4.2)

Eiffel Class
indexing
	description: "Collection, where each element must be unique.";
	status: "See notice at end of class";
	names: set;
	access: membership;
	contents: generic;
	date: "$Date: 2007-03-30 11:10:11 -0800 (Fri, 30 Mar 2007) $";
	revision: "$Revision: 95354 $"

deferred class SET [G]

inherit
	COLLECTION [G]
		redefine
			changeable_comparison_criterion
		end

feature -- Measurement

	count: INTEGER is
			-- Number of items
		deferred
		end;

feature -- Element change

	extend (v: G) is
			-- Ensure that set includes v.
			-- Was declared in SET as synonym of extend and put.
		deferred
		ensure
			in_set_already: old has (v) implies (count = old count);
			added_to_set: notold has (v) implies (count = old count + 1)
		end;

	put (v: G) is
			-- Ensure that set includes v.
			-- Was declared in SET as synonym of extend and put.
		deferred
		ensure
			in_set_already: old has (v) implies (count = old count);
			added_to_set: notold has (v) implies (count = old count + 1)
		end;

feature -- Removal

	prune (v: G) is
			-- Remove v if present.
		deferred
		ensure
			removed_count_change: old has (v) implies (count = old count - 1);
			not_removed_no_count_change: notold has (v) implies (count = old count);
			item_deleted: nothas (v)
		end;

	changeable_comparison_criterion: BOOLEAN is
			-- May object_comparison be changed?
			-- (Answer: only if set empty; otherwise insertions might
			-- introduce duplicates, destroying the set property.)
		do
			Result := empty
		ensure
			only_on_empty: Result = empty
		end;

end -- class SET