Introduce class completion_tracker & rewrite completion<->readline interaction
[external/binutils.git] / gdb / command.h
index 2a190d4..3a4a449 100644 (file)
@@ -21,6 +21,8 @@
 #include "gdb_vecs.h"
 #include "common/scoped_restore.h"
 
+struct completion_tracker;
+
 /* This file defines the public interface for any code wanting to
    create commands.  */
 
@@ -174,7 +176,7 @@ typedef void cmd_sfunc_ftype (char *args, int from_tty,
 extern void set_cmd_sfunc (struct cmd_list_element *cmd,
                           cmd_sfunc_ftype *sfunc);
 
-/* A completion routine.  Return a list of possible completions.
+/* A completion routine.  Add possible completions to tracker.
 
    TEXT is the text beyond what was matched for the command itself
    (leading whitespace is skipped).  It stops where we are supposed to
@@ -183,11 +185,13 @@ extern void set_cmd_sfunc (struct cmd_list_element *cmd,
    relative to this position.  For example, suppose TEXT is "foo" and
    we want to complete to "foobar".  If WORD is "oo", return "oobar";
    if WORD is "baz/foo", return "baz/foobar".  */
-typedef VEC (char_ptr) *completer_ftype (struct cmd_list_element *,
-                                        const char *text, const char *word);
+typedef void completer_ftype (struct cmd_list_element *,
+                             completion_tracker &tracker,
+                             const char *text, const char *word);
 
 /* Same, but for set_cmd_completer_handle_brkchars.  */
 typedef void completer_handle_brkchars_ftype (struct cmd_list_element *,
+                                             completion_tracker &tracker,
                                              const char *text, const char *word);
 
 extern void set_cmd_completer (struct cmd_list_element *, completer_ftype *);
@@ -259,11 +263,13 @@ extern struct cmd_list_element *add_info (const char *,
 extern struct cmd_list_element *add_info_alias (const char *, const char *,
                                                int);
 
-extern VEC (char_ptr) *complete_on_cmdlist (struct cmd_list_element *,
-                                           const char *, const char *, int);
+extern void complete_on_cmdlist (struct cmd_list_element *,
+                                completion_tracker &tracker,
+                                const char *, const char *, int);
 
-extern VEC (char_ptr) *complete_on_enum (const char *const *enumlist,
-                                        const char *, const char *);
+extern void complete_on_enum (completion_tracker &tracker,
+                             const char *const *enumlist,
+                             const char *, const char *);
 
 /* Functions that implement commands about CLI commands.  */