aboutsummaryrefslogtreecommitdiff
path: root/gdb/defs.h
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2017-04-05 21:14:09 -0600
committerTom Tromey <tom@tromey.com>2017-04-12 11:16:17 -0600
commit93921405a46c0a58eae19fffb92e02416082801a (patch)
treec3a9c2a4407cb09bc571d5af47dce812a68169b0 /gdb/defs.h
parentffc2605c41d026cf5710704848b7c3b1cdbdcf49 (diff)
downloadgdb-93921405a46c0a58eae19fffb92e02416082801a.zip
gdb-93921405a46c0a58eae19fffb92e02416082801a.tar.gz
gdb-93921405a46c0a58eae19fffb92e02416082801a.tar.bz2
Introduce command_line_up
This introduces command_line_up, a unique_ptr for command_line objects, and changes many places to use it. This removes a number of cleanups. Command lines are funny in that sometimes they are reference counted. Once there is more C++-ification of some of the users, perhaps all of these can be changed to use shared_ptr instead. gdb/ChangeLog 2017-04-12 Tom Tromey <tom@tromey.com> * tracepoint.c (actions_command): Update. * python/python.c (python_command, python_interactive_command): Update. * mi/mi-cmd-break.c (mi_cmd_break_commands): Update. * guile/guile.c (guile_command): Update. * defs.h (read_command_lines, read_command_lines_1): Return command_line_up. (command_lines_deleter): New struct. (command_line_up): New typedef. * compile/compile.c (compile_code_command) (compile_print_command): Update. * cli/cli-script.h (get_command_line, copy_command_lines): Return command_line_up. (make_cleanup_free_command_lines): Remove. * cli/cli-script.c (get_command_line, read_command_lines_1) (copy_command_lines): Return command_line_up. (while_command, if_command, read_command_lines, define_command) (document_command): Update. (do_free_command_lines_cleanup, make_cleanup_free_command_lines): Remove. * breakpoint.h (breakpoint_set_commands): Change type of "commands". * breakpoint.c (breakpoint_set_commands): Change type of "commands". Update. (do_map_commands_command, update_dprintf_command_list) (create_tracepoint_from_upload): Update.
Diffstat (limited to 'gdb/defs.h')
-rw-r--r--gdb/defs.h28
1 files changed, 21 insertions, 7 deletions
diff --git a/gdb/defs.h b/gdb/defs.h
index f689ec5..a0b586f 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -445,15 +445,29 @@ struct command_line
struct command_line **body_list;
};
-extern struct command_line *read_command_lines (char *, int, int,
- void (*)(char *, void *),
- void *);
-extern struct command_line *read_command_lines_1 (char * (*) (void), int,
- void (*)(char *, void *),
- void *);
-
extern void free_command_lines (struct command_line **);
+/* A deleter for command_line that calls free_command_lines. */
+
+struct command_lines_deleter
+{
+ void operator() (command_line *lines) const
+ {
+ free_command_lines (&lines);
+ }
+};
+
+/* A unique pointer to a command_line. */
+
+typedef std::unique_ptr<command_line, command_lines_deleter> command_line_up;
+
+extern command_line_up read_command_lines (char *, int, int,
+ void (*)(char *, void *),
+ void *);
+extern command_line_up read_command_lines_1 (char * (*) (void), int,
+ void (*)(char *, void *),
+ void *);
+
/* * Parameters of the "info proc" command. */
enum info_proc_what