note description: "Sequential lists, without commitment to a particular representation" library: "Free implementation of ELKS library" legal: "See notice at end of class." status: "See notice at end of class." names: list, sequence access: index, cursor, membership contents: generic date: "$Date: 2017-03-23 19:18:26 +0000 (Thu, 23 Mar 2017) $" revision: "$Revision: 100033 $" deferred class LIST [G] inherit CHAIN [G] export {ANY} remove redefine forth, is_equal end feature -- Comparison is_equal (other: like Current): BOOLEAN -- Does other contain the same elements? do if Current = other then Result := True else Result := (is_empty = other.is_empty) and (object_comparison = other.object_comparison) and (count = other.count) if Result and not is_empty then if attached cursor as c1 and then attached other.cursor as c2 then from start; other.start until after or not Result loop if object_comparison then Result := item ~ other.item else Result := item = other.item end forth; other.forth end go_to (c1); other.go_to (c2) else check cursors_exist: False end end elseif is_empty and other.is_empty and object_comparison = other.object_comparison then Result := True end end ensure then indices_unchanged: index = old index and other.index = old other.index true_implies_same_size: Result implies count = other.count end feature -- Status report after: BOOLEAN -- Is there no valid cursor position to the right of cursor? do Result := index = count + 1 end before: BOOLEAN -- Is there no valid cursor position to the left of cursor? do Result := index = 0 end feature -- Cursor movement forth -- Move to next position; if no next position, -- ensure that exhausted will be true. deferred ensure then moved_forth: index = old index + 1 end invariant before_definition: before = (index = 0) after_definition: after = (index = count + 1) note copyright: "Copyright (c) 1984-2017, 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 LIST
Generated by ISE EiffelStudio