Allocate cmd_list_element with new
This adds a constructor and destructor to cmd_list_element and changes it to be allocated with new. This will be useful in a subsequent patch. ChangeLog 2018-05-04 Tom Tromey <tom@tromey.com> * cli/cli-decode.h (cmd_list_element): New constructor. (~cmd_list_element): New destructor. (struct cmd_list_element): Add initializers. * cli/cli-decode.c (do_add_cmd): Use "new". (delete_cmd): Use "delete".
This commit is contained in:
parent
a3b60e4588
commit
e2fc72e2c5
3 changed files with 62 additions and 55 deletions
|
@ -45,8 +45,35 @@ cmd_types;
|
|||
|
||||
struct cmd_list_element
|
||||
{
|
||||
cmd_list_element (const char *name_, enum command_class theclass_,
|
||||
const char *doc_)
|
||||
: name (name_),
|
||||
theclass (theclass_),
|
||||
cmd_deprecated (0),
|
||||
deprecated_warn_user (0),
|
||||
malloced_replacement (0),
|
||||
doc_allocated (0),
|
||||
hook_in (0),
|
||||
allow_unknown (0),
|
||||
abbrev_flag (0),
|
||||
type (not_set_cmd),
|
||||
var_type (var_boolean),
|
||||
doc (doc_)
|
||||
{
|
||||
memset (&function, 0, sizeof (function));
|
||||
}
|
||||
|
||||
~cmd_list_element ()
|
||||
{
|
||||
if (doc && doc_allocated)
|
||||
xfree ((char *) doc);
|
||||
}
|
||||
|
||||
DISABLE_COPY_AND_ASSIGN (cmd_list_element);
|
||||
|
||||
|
||||
/* Points to next command in this list. */
|
||||
struct cmd_list_element *next;
|
||||
struct cmd_list_element *next = nullptr;
|
||||
|
||||
/* Name of this command. */
|
||||
const char *name;
|
||||
|
@ -107,7 +134,8 @@ struct cmd_list_element
|
|||
cagney/2002-02-02: This function signature is evolving. For
|
||||
the moment suggest sticking with either set_cmd_cfunc() or
|
||||
set_cmd_sfunc(). */
|
||||
void (*func) (struct cmd_list_element *c, const char *args, int from_tty);
|
||||
void (*func) (struct cmd_list_element *c, const char *args, int from_tty)
|
||||
= nullptr;
|
||||
/* The command's real callback. At present func() bounces through
|
||||
to one of the below. */
|
||||
union
|
||||
|
@ -121,7 +149,7 @@ struct cmd_list_element
|
|||
function;
|
||||
|
||||
/* Local state (context) for this command. This can be anything. */
|
||||
void *context;
|
||||
void *context = nullptr;
|
||||
|
||||
/* Documentation of this command (or help topic).
|
||||
First line is brief documentation; remaining lines form, with it,
|
||||
|
@ -131,37 +159,37 @@ struct cmd_list_element
|
|||
|
||||
/* For set/show commands. A method for printing the output to the
|
||||
specified stream. */
|
||||
show_value_ftype *show_value_func;
|
||||
show_value_ftype *show_value_func = nullptr;
|
||||
|
||||
/* If this command is deprecated, this is the replacement name. */
|
||||
const char *replacement;
|
||||
const char *replacement = nullptr;
|
||||
|
||||
/* If this command represents a show command, then this function
|
||||
is called before the variable's value is examined. */
|
||||
void (*pre_show_hook) (struct cmd_list_element *c);
|
||||
void (*pre_show_hook) (struct cmd_list_element *c) = nullptr;
|
||||
|
||||
/* Hook for another command to be executed before this command. */
|
||||
struct cmd_list_element *hook_pre;
|
||||
struct cmd_list_element *hook_pre = nullptr;
|
||||
|
||||
/* Hook for another command to be executed after this command. */
|
||||
struct cmd_list_element *hook_post;
|
||||
struct cmd_list_element *hook_post = nullptr;
|
||||
|
||||
/* Nonzero identifies a prefix command. For them, the address
|
||||
of the variable containing the list of subcommands. */
|
||||
struct cmd_list_element **prefixlist;
|
||||
struct cmd_list_element **prefixlist = nullptr;
|
||||
|
||||
/* For prefix commands only:
|
||||
String containing prefix commands to get here: this one
|
||||
plus any others needed to get to it. Should end in a space.
|
||||
It is used before the word "command" in describing the
|
||||
commands reached through this prefix. */
|
||||
const char *prefixname;
|
||||
const char *prefixname = nullptr;
|
||||
|
||||
/* The prefix command of this command. */
|
||||
struct cmd_list_element *prefix;
|
||||
struct cmd_list_element *prefix = nullptr;
|
||||
|
||||
/* Completion routine for this command. */
|
||||
completer_ftype *completer;
|
||||
completer_ftype *completer = symbol_completer;
|
||||
|
||||
/* Handle the word break characters for this completer. Usually
|
||||
this function need not be defined, but for some types of
|
||||
|
@ -169,47 +197,47 @@ struct cmd_list_element
|
|||
a class) the word break chars may need to be redefined
|
||||
depending on the completer type (e.g., for filename
|
||||
completers). */
|
||||
completer_handle_brkchars_ftype *completer_handle_brkchars;
|
||||
completer_handle_brkchars_ftype *completer_handle_brkchars = nullptr;
|
||||
|
||||
/* Destruction routine for this command. If non-NULL, this is
|
||||
called when this command instance is destroyed. This may be
|
||||
used to finalize the CONTEXT field, if needed. */
|
||||
void (*destroyer) (struct cmd_list_element *self, void *context);
|
||||
void (*destroyer) (struct cmd_list_element *self, void *context) = nullptr;
|
||||
|
||||
/* Pointer to variable affected by "set" and "show". Doesn't
|
||||
matter if type is not_set. */
|
||||
void *var;
|
||||
void *var = nullptr;
|
||||
|
||||
/* Pointer to NULL terminated list of enumerated values (like
|
||||
argv). */
|
||||
const char *const *enums;
|
||||
const char *const *enums = nullptr;
|
||||
|
||||
/* Pointer to command strings of user-defined commands */
|
||||
struct command_line *user_commands;
|
||||
struct command_line *user_commands = nullptr;
|
||||
|
||||
/* Pointer to command that is hooked by this one, (by hook_pre)
|
||||
so the hook can be removed when this one is deleted. */
|
||||
struct cmd_list_element *hookee_pre;
|
||||
struct cmd_list_element *hookee_pre = nullptr;
|
||||
|
||||
/* Pointer to command that is hooked by this one, (by hook_post)
|
||||
so the hook can be removed when this one is deleted. */
|
||||
struct cmd_list_element *hookee_post;
|
||||
struct cmd_list_element *hookee_post = nullptr;
|
||||
|
||||
/* Pointer to command that is aliased by this one, so the
|
||||
aliased command can be located in case it has been hooked. */
|
||||
struct cmd_list_element *cmd_pointer;
|
||||
struct cmd_list_element *cmd_pointer = nullptr;
|
||||
|
||||
/* Start of a linked list of all aliases of this command. */
|
||||
struct cmd_list_element *aliases;
|
||||
struct cmd_list_element *aliases = nullptr;
|
||||
|
||||
/* Link pointer for aliases on an alias list. */
|
||||
struct cmd_list_element *alias_chain;
|
||||
struct cmd_list_element *alias_chain = nullptr;
|
||||
|
||||
/* If non-null, the pointer to a field in 'struct
|
||||
cli_suppress_notification', which will be set to true in cmd_func
|
||||
when this command is being executed. It will be set back to false
|
||||
when the command has been executed. */
|
||||
int *suppress_notification;
|
||||
int *suppress_notification = nullptr;
|
||||
};
|
||||
|
||||
extern void help_cmd_list (struct cmd_list_element *, enum command_class,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue