#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. */
struct cmd_list_element;
typedef void cmd_cfunc_ftype (char *args, int from_tty);
+typedef void cmd_const_cfunc_ftype (const char *args, int from_tty);
/* This structure specifies notifications to be suppressed by a cli
command interpreter. */
const char *,
struct cmd_list_element **);
+/* Const-correct variant of the above. */
+
+extern struct cmd_list_element *add_cmd (const char *, enum command_class,
+ cmd_const_cfunc_ftype *fun,
+ const char *,
+ struct cmd_list_element **);
+
+/* Like add_cmd, but no command function is specified. */
+
+extern struct cmd_list_element *add_cmd (const char *, enum command_class,
+ const char *,
+ struct cmd_list_element **);
+
extern struct cmd_list_element *add_alias_cmd (const char *, const char *,
enum command_class, int,
struct cmd_list_element **);
extern struct cmd_list_element *add_prefix_cmd (const char *, enum command_class,
- cmd_cfunc_ftype *fun,
+ cmd_const_cfunc_ftype *fun,
const char *,
struct cmd_list_element **,
const char *, int,
extern void set_cmd_cfunc (struct cmd_list_element *cmd,
cmd_cfunc_ftype *cfunc);
+/* Const-correct variant of the above. */
+
+extern void set_cmd_cfunc (struct cmd_list_element *cmd,
+ cmd_const_cfunc_ftype *cfunc);
+
typedef void cmd_sfunc_ftype (char *args, int from_tty,
struct cmd_list_element *c);
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
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 *);
around in cmd objects to test the value of the commands sfunc(). */
extern int cmd_cfunc_eq (struct cmd_list_element *cmd,
cmd_cfunc_ftype *cfun);
+extern int cmd_cfunc_eq (struct cmd_list_element *cmd,
+ cmd_const_cfunc_ftype *cfun);
/* Each command object has a local context attached to it. */
extern void set_cmd_context (struct cmd_list_element *cmd,
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. */
function field NULL, the command is interpreted as a help topic, or
as a class of commands. */
-extern void not_just_help_class_command (char *, int);
+extern void not_just_help_class_command (const char *, int);
/* Check function pointer. */
extern int cmd_func_p (struct cmd_list_element *cmd);