note description: "Simple implementation of {SUGGESTION_PROVIDER} using an {ARRAYED_LIST} as data storage." legal: "See notice at end of class." status: "See notice at end of class." date: "$Date$" revision: "$Revision$" class TABLE_SUGGESTION_PROVIDER inherit SUGGESTION_PROVIDER create make feature {NONE} -- Initialization make (a_data: ARRAYED_LIST [STRING]) -- Initialize storage of current with `a_data'. do data := a_data ensure data_set: data = a_data end feature -- Query query_with_callback_and_cancellation (a_expression: READABLE_STRING_GENERAL; a_termination: detachable PROCEDURE; a_callback: PROCEDURE [SUGGESTION_ITEM]; a_cancel_request: detachable PREDICATE) -- <Precursor> do if a_cancel_request /= Void then across data as l_data until a_cancel_request.item (Void) loop a_callback.call ([create {LABEL_SUGGESTION_ITEM}.make (l_data)]) end else across data as l_data loop a_callback.call ([create {LABEL_SUGGESTION_ITEM}.make (l_data)]) end end if a_termination /= Void then a_termination.call (Void) end end feature -- Status report is_concurrent: BOOLEAN = False -- No concurrency allowed here. is_available: BOOLEAN = True -- Can current perform a query? feature {NONE} -- Implementation data: ARRAYED_LIST [STRING] -- Storage for data. index: INTEGER -- Index of data. invariant note copyright: "Copyright (c) 1984-2023, 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