aboutsummaryrefslogtreecommitdiff
path: root/gdb/cli
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-04-18 16:53:07 -0600
committerTom Tromey <tom@tromey.com>2018-05-04 15:58:08 -0600
commit60b3cef2e49ba72dea55181a8ad0cb8dbf3f8a5b (patch)
tree1fecc6fa000b666ff29bd42d66d80ff1901db6e5 /gdb/cli
parent7a2c85f25977ff9b11728ba85b1417538e22c246 (diff)
downloadgdb-60b3cef2e49ba72dea55181a8ad0cb8dbf3f8a5b.zip
gdb-60b3cef2e49ba72dea55181a8ad0cb8dbf3f8a5b.tar.gz
gdb-60b3cef2e49ba72dea55181a8ad0cb8dbf3f8a5b.tar.bz2
Use function_view in cli-script.c
This changes some functions in cli-script.c to use function_view rather than a function pointer and closure argument. This simplifies the code a bit and is useful in a subsequent patch. ChangeLog 2018-05-04 Tom Tromey <tom@tromey.com> * tracepoint.c (actions_command): Update. * mi/mi-cmd-break.c (mi_command_line_array) (mi_command_line_array_cnt, mi_command_line_array_ptr) (mi_read_next_line): Remove. (mi_cmd_break_commands): Update. * cli/cli-script.h (read_command_lines, read_command_lines_1): Use function_view. * cli/cli-script.c (get_command_line): Update. (process_next_line): Use function_view. Constify. (recurse_read_control_structure, read_command_lines) (read_command_lines_1): Change argument types to function_view. (do_define_command, document_command): Update. * breakpoint.h (check_tracepoint_command): Don't declare. * breakpoint.c (check_tracepoint_command): Remove. (commands_command_1, create_tracepoint_from_upload): Update.
Diffstat (limited to 'gdb/cli')
-rw-r--r--gdb/cli/cli-script.c51
-rw-r--r--gdb/cli/cli-script.h11
2 files changed, 31 insertions, 31 deletions
diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c
index d679e04..e336c58 100644
--- a/gdb/cli/cli-script.c
+++ b/gdb/cli/cli-script.c
@@ -39,10 +39,10 @@
/* Prototypes for local functions. */
static enum command_control_type
-recurse_read_control_structure (char * (*read_next_line_func) (void),
- struct command_line *current_cmd,
- void (*validator)(char *, void *),
- void *closure);
+recurse_read_control_structure
+ (gdb::function_view<const char * ()> read_next_line_func,
+ struct command_line *current_cmd,
+ gdb::function_view<void (const char *)> validator);
static void do_define_command (const char *comname, int from_tty,
const counted_command_line *commands);
@@ -163,7 +163,7 @@ get_command_line (enum command_control_type type, const char *arg)
command_lines_deleter ());
/* Read in the body of this command. */
- if (recurse_read_control_structure (read_next_line, cmd.get (), 0, 0)
+ if (recurse_read_control_structure (read_next_line, cmd.get (), 0)
== invalid_control)
{
warning (_("Error reading in canned sequence of commands."));
@@ -897,11 +897,13 @@ line_first_arg (const char *p)
Otherwise, only "end" is recognized. */
static enum misc_command_type
-process_next_line (char *p, struct command_line **command, int parse_commands,
- void (*validator)(char *, void *), void *closure)
+process_next_line (const char *p, struct command_line **command,
+ int parse_commands,
+ gdb::function_view<void (const char *)> validator)
+
{
- char *p_end;
- char *p_start;
+ const char *p_end;
+ const char *p_start;
int not_handled = 0;
/* Not sure what to do here. */
@@ -1013,10 +1015,9 @@ process_next_line (char *p, struct command_line **command, int parse_commands,
if (validator)
{
-
TRY
{
- validator ((*command)->line, closure);
+ validator ((*command)->line);
}
CATCH (ex, RETURN_MASK_ALL)
{
@@ -1035,10 +1036,9 @@ process_next_line (char *p, struct command_line **command, int parse_commands,
obtain lines of the command. */
static enum command_control_type
-recurse_read_control_structure (char * (*read_next_line_func) (void),
+recurse_read_control_structure (gdb::function_view<const char * ()> read_next_line_func,
struct command_line *current_cmd,
- void (*validator)(char *, void *),
- void *closure)
+ gdb::function_view<void (const char *)> validator)
{
enum misc_command_type val;
enum command_control_type ret;
@@ -1061,7 +1061,7 @@ recurse_read_control_structure (char * (*read_next_line_func) (void),
current_cmd->control_type != python_control
&& current_cmd->control_type != guile_control
&& current_cmd->control_type != compile_control,
- validator, closure);
+ validator);
/* Just skip blanks and comments. */
if (val == nop_command)
@@ -1114,7 +1114,7 @@ recurse_read_control_structure (char * (*read_next_line_func) (void),
{
control_level++;
ret = recurse_read_control_structure (read_next_line_func, next,
- validator, closure);
+ validator);
control_level--;
if (ret != simple_control)
@@ -1140,7 +1140,7 @@ recurse_read_control_structure (char * (*read_next_line_func) (void),
counted_command_line
read_command_lines (const char *prompt_arg, int from_tty, int parse_commands,
- void (*validator)(char *, void *), void *closure)
+ gdb::function_view<void (const char *)> validator)
{
if (from_tty && input_interactive_p (current_ui))
{
@@ -1163,13 +1163,13 @@ read_command_lines (const char *prompt_arg, int from_tty, int parse_commands,
counted_command_line head (nullptr, command_lines_deleter ());
if (current_interp_named_p (INTERP_CONSOLE))
head = read_command_lines_1 (read_next_line, parse_commands,
- validator, closure);
+ validator);
else
{
scoped_restore_interp interp_restorer (INTERP_CONSOLE);
head = read_command_lines_1 (read_next_line, parse_commands,
- validator, closure);
+ validator);
}
if (from_tty && input_interactive_p (current_ui)
@@ -1184,8 +1184,9 @@ read_command_lines (const char *prompt_arg, int from_tty, int parse_commands,
obtained using READ_NEXT_LINE_FUNC. */
counted_command_line
-read_command_lines_1 (char * (*read_next_line_func) (void), int parse_commands,
- void (*validator)(char *, void *), void *closure)
+read_command_lines_1 (gdb::function_view<const char * ()> read_next_line_func,
+ int parse_commands,
+ gdb::function_view<void (const char *)> validator)
{
struct command_line *tail, *next;
counted_command_line head (nullptr, command_lines_deleter ());
@@ -1199,7 +1200,7 @@ read_command_lines_1 (char * (*read_next_line_func) (void), int parse_commands,
{
dont_repeat ();
val = process_next_line (read_next_line_func (), &next, parse_commands,
- validator, closure);
+ validator);
/* Ignore blank lines or comments. */
if (val == nop_command)
@@ -1221,7 +1222,7 @@ read_command_lines_1 (char * (*read_next_line_func) (void), int parse_commands,
{
control_level++;
ret = recurse_read_control_structure (read_next_line_func, next,
- validator, closure);
+ validator);
control_level--;
if (ret == invalid_control)
@@ -1407,7 +1408,7 @@ do_define_command (const char *comname, int from_tty,
{
std::string prompt
= string_printf ("Type commands for definition of \"%s\".", comfull);
- cmds = read_command_lines (prompt.c_str (), from_tty, 1, 0, 0);
+ cmds = read_command_lines (prompt.c_str (), from_tty, 1, 0);
}
else
cmds = *commands;
@@ -1464,7 +1465,7 @@ document_command (const char *comname, int from_tty)
std::string prompt = string_printf ("Type documentation for \"%s\".",
comfull);
counted_command_line doclines = read_command_lines (prompt.c_str (),
- from_tty, 0, 0, 0);
+ from_tty, 0, 0);
if (c->doc)
xfree ((char *) c->doc);
diff --git a/gdb/cli/cli-script.h b/gdb/cli/cli-script.h
index 0bd0d59..3bebd0e 100644
--- a/gdb/cli/cli-script.h
+++ b/gdb/cli/cli-script.h
@@ -106,12 +106,11 @@ private:
}
};
-extern counted_command_line read_command_lines (const char *, int, int,
- void (*)(char *, void *),
- void *);
-extern counted_command_line read_command_lines_1 (char * (*) (void), int,
- void (*)(char *, void *),
- void *);
+extern counted_command_line read_command_lines
+ (const char *, int, int, gdb::function_view<void (const char *)>);
+extern counted_command_line read_command_lines_1
+ (gdb::function_view<const char * ()>, int,
+ gdb::function_view<void (const char *)>);
/* Exported to cli/cli-cmds.c */