+ When inheriting from this class you need to implement its two pure virtual
+ methods. This allows to return the results incrementally and may or not be
+ convenient depending on where do they come from. If you prefer to return
+ all the completions at once, you should inherit from wxTextCompleterSimple
+ instead.
+
+ @since 2.9.2
+ */
+class wxTextCompleter
+{
+public:
+ /**
+ Function called to start iteration over the completions for the given
+ prefix.
+
+ This function could start a database query, for example, if the results
+ are read from a database.
+
+ Notice that under some platforms (currently MSW only) it is called from
+ another thread context and so the appropriate synchronization mechanism
+ should be used to access any data also used by the main UI thread.
+
+ @param prefix
+ The prefix for which completions are to be generated.
+ @return
+ @true to continue with calling GetNext() or @false to indicate that
+ there are no matches and GetNext() shouldn't be called at all.
+ */
+ virtual bool Start(const wxString& prefix) = 0;
+
+ /**
+ Called to retrieve the next completion.
+
+ All completions returned by this function should start with the prefix
+ passed to the last call to Start().
+
+ Notice that, as Start(), this method is called from a worker thread
+ context under MSW.
+
+ @return
+ The next completion or an empty string to indicate that there are
+ no more of them.
+ */
+ virtual wxString GetNext() = 0;
+};
+
+/**
+ A simpler base class for custom completer objects.
+
+ This class may be simpler to use than the base wxTextCompleter as it allows
+ to implement only a single virtual method instead of two of them (at the
+ price of storing all completions in a temporary array).
+