diff options
author | Pedro Alves <palves@redhat.com> | 2016-10-13 01:54:07 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2016-10-13 01:54:07 +0100 |
commit | bfd282882d534cd4f48e2fc29d4ce0923c52352b (patch) | |
tree | 9709dac8ade7a9592772de9a6c4bb7d5b542c826 /gdb/thread.c | |
parent | b44fae2f56b0edbecff68c597f7b5718ca3f9f90 (diff) | |
download | gdb-bfd282882d534cd4f48e2fc29d4ce0923c52352b.zip gdb-bfd282882d534cd4f48e2fc29d4ce0923c52352b.tar.gz gdb-bfd282882d534cd4f48e2fc29d4ce0923c52352b.tar.bz2 |
Convert tid_range_parser and get_number_or_range to classes
This converts tid_range_parser and get_number_or_range to be classes.
The various tid_range_parser_* and get_number_or_range_* functions
become methods on the respective classes. Then it updates the users
to follow.
The rationale for the change is that this provides better
encapsulation. For example, this forced me to think of a better
interface between tid_range_parser and get_number_or_range, since the
former peeked into the latter's internals a bit too much. That ended
up resulting mostly in these two not-just-straight-1-1 changes:
void
-tid_range_parser_skip (struct tid_range_parser *parser)
+tid_range_parser::skip_range ()
{
...
- tid_range_parser_init (parser, parser->range_parser.end_ptr,
- parser->default_inferior);
+ m_range_parser.skip_range ();
+ init (m_range_parser.string (), m_default_inferior);
}
and:
/* If we successfully parsed a thread number or finished parsing a
thread range, switch back to assuming the next TID is
inferior-qualified. */
- if (parser->range_parser.end_ptr == NULL
- || parser->range_parser.string == parser->range_parser.end_ptr)
+ if (!m_range_parser.in_range ())
{
For the same reason (encapsulation), this moves the enum
tid_range_state definition to within the tid_parser class's scope,
since that is private implementation detail.
While at it, switch to use "bool" for booleans.
gdb/ChangeLog:
2016-10-13 Pedro Alves <palves@redhat.com>
Tom Tromey <tom@tromey.com>
* tid-parse.h (tid_range_parser): New class.
(enum tid_range_state): Move into tid_range_parser's scope.
Remove TID_RANGE_ prefix from all values.
(tid_range_parser_get_tid, tid_range_parser_get_tid_range)
(tid_range_parser_star_range, tid_range_parser_finished)
(tid_range_parser_skip, tid_range_parser_qualified): Don't
declare.
(tid_is_in_list): Update comment.
* tid-parse.c (tid_range_parser::tid_range_parser): New.
(init, finished, get_string, skip, tid_is_qualified)
(get_tid_or_range, get_tid_range, get_tid, star_range): Rename;
turn into methods.
(tid_is_in_list): Adjust.
* cli/cli-utils.h (number_or_range_parser): New class.
(init_number_or_range, get_number_or_range)
(number_range_setup_range): Don't declare.
* cli/cli-utils.c
(number_or_range_parser::number_or_range_parser): New.
(init_number_or_range, get_number_or_range)
(number_range_setup_range): Rename; turn into methods.
(number_is_in_list): Adjust.
* breakpoint.c (map_breakpoint_numbers): Adjust. Use bool.
(trace_pass_command, get_tracepoint_by_number): Adjust.
* breakpoint.h (get_tracepoint_by_number): Adjust.
* inferior.c (detach_inferior_command, kill_inferior_command)
(remove_inferior_command): Adjust.
* linespec.c (decode_line_2): Adjust.
* memattr.c (mem_enable_command, mem_disable_command)
(mem_delete_command): Adjust.
* printcmd.c (map_display_numbers): Adjust.
* reverse.c (delete_bookmark_command, bookmarks_info): Adjust.
* thread.c (thread_apply_command): Adjust.
Diffstat (limited to 'gdb/thread.c')
-rw-r--r-- | gdb/thread.c | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/gdb/thread.c b/gdb/thread.c index 13449a8..57b20ff 100644 --- a/gdb/thread.c +++ b/gdb/thread.c @@ -1825,20 +1825,19 @@ thread_apply_command (char *tidlist, int from_tty) char *cmd = NULL; struct cleanup *old_chain; char *saved_cmd; - struct tid_range_parser parser; + tid_range_parser parser; if (tidlist == NULL || *tidlist == '\000') error (_("Please specify a thread ID list")); - tid_range_parser_init (&parser, tidlist, current_inferior ()->num); - while (!tid_range_parser_finished (&parser)) + parser.init (tidlist, current_inferior ()->num); + while (!parser.finished ()) { int inf_num, thr_start, thr_end; - if (!tid_range_parser_get_tid_range (&parser, - &inf_num, &thr_start, &thr_end)) + if (!parser.get_tid_range (&inf_num, &thr_start, &thr_end)) { - cmd = (char *) tid_range_parser_string (&parser); + cmd = (char *) parser.cur_tok (); break; } } @@ -1856,32 +1855,31 @@ thread_apply_command (char *tidlist, int from_tty) make_cleanup_restore_current_thread (); - tid_range_parser_init (&parser, tidlist, current_inferior ()->num); - while (!tid_range_parser_finished (&parser) - && tid_range_parser_string (&parser) < cmd) + parser.init (tidlist, current_inferior ()->num); + while (!parser.finished () && parser.cur_tok () < cmd) { struct thread_info *tp = NULL; struct inferior *inf; int inf_num, thr_num; - tid_range_parser_get_tid (&parser, &inf_num, &thr_num); + parser.get_tid (&inf_num, &thr_num); inf = find_inferior_id (inf_num); if (inf != NULL) tp = find_thread_id (inf, thr_num); - if (tid_range_parser_star_range (&parser)) + if (parser.in_star_range ()) { if (inf == NULL) { warning (_("Unknown inferior %d"), inf_num); - tid_range_parser_skip (&parser); + parser.skip_range (); continue; } /* No use looking for threads past the highest thread number the inferior ever had. */ if (thr_num >= inf->highest_thread_num) - tid_range_parser_skip (&parser); + parser.skip_range (); /* Be quiet about unknown threads numbers. */ if (tp == NULL) @@ -1890,8 +1888,7 @@ thread_apply_command (char *tidlist, int from_tty) if (tp == NULL) { - if (show_inferior_qualified_tids () - || tid_range_parser_qualified (&parser)) + if (show_inferior_qualified_tids () || parser.tid_is_qualified ()) warning (_("Unknown thread %d.%d"), inf_num, thr_num); else warning (_("Unknown thread %d"), thr_num); |