note description: "External iteration cursor on READABLE_STRING_GENERAL based on CHARACTER_32 item." date: "$Date: 2016-04-16 10:44:12 +0000 (Sat, 16 Apr 2016) $" revision: "$Revision: 98623 $" class STRING_ITERATION_CURSOR inherit ITERATION_CURSOR [CHARACTER_32] ITERABLE [CHARACTER_32] create make, make_from_substring feature -- Initialization make (t: like target) -- Initialize cursor for target t. require t_attached: t /= Void do make_from_substring (t, 1, t.count) end make_from_substring (t: like target; start_pos, end_pos: INTEGER_32) -- Initialize cursor for target t, with a substring containing all characters at indices -- between start_pos and end_pos. require t_attached: t /= Void start_position_big_enough: start_pos >= 1 end_position_big_enough: start_pos <= end_pos + 1 do target := t start_index := start_pos end_index := end_pos target_index := start_index ensure target_set: target = t starting_index_set: start_index = start_pos target_index_set: target_index = start_index end_index_set: end_index = end_pos end feature -- Access item: CHARACTER_32 -- Item at current cursor position. do Result := target [target_index] end target_index: INTEGER_32 -- Index position of target for current iteration. new_cursor: STRING_ITERATION_CURSOR -- Restarted copy of Current. do Result := twin; Result.start end feature -- Status Report after: BOOLEAN -- Are there no more items to iterate over? do Result := target_index > end_index end feature -- Cursor movement start -- Move to first position. do target_index := start_index ensure target_index_set_to_one: target_index = start_index end forth -- Move to next position. do target_index := target_index + 1 ensure then target_index_advanced: target_index = old target_index + 1 end feature {ITERABLE, ITERATION_CURSOR} -- Implementation target: READABLE_STRING_GENERAL -- Associated structure used for iteration. start_index: INTEGER_32 -- First position. end_index: INTEGER_32 -- Last position. invariant target_attached: target /= Void target_index_big_enough: target_index >= start_index target_index_small_enough: target_index <= end_index + 1 note copyright: "Copyright (c) 1984-2016, 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 STRING_ITERATION_CURSOR
Generated by ISE EiffelStudio