diff options
author | Tom Tromey <tom@tromey.com> | 2021-03-26 13:44:24 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2021-03-26 13:44:24 -0600 |
commit | 2315bb2d5764527617aef124cbcd52a13395e245 (patch) | |
tree | 3edccb0a2a94e2f1988b8d5f2b119d71420b0d34 /gdb | |
parent | e2cd5ca40c03271aa0bf324cac1f7a66ad3904d8 (diff) | |
download | gdb-2315bb2d5764527617aef124cbcd52a13395e245.zip gdb-2315bb2d5764527617aef124cbcd52a13395e245.tar.gz gdb-2315bb2d5764527617aef124cbcd52a13395e245.tar.bz2 |
Simplify use of map_matching_symbols in ada-lang.c
I noticed that ada-lang.c creates a lambda to call
aux_add_nonlocal_symbols. However, this code can be simplified a bit
by changing match_data to implement operator(), and then simply
passing the object as the callback. That is what this patch
implements.
gdb/ChangeLog
2021-03-26 Tom Tromey <tom@tromey.com>
* ada-lang.c (struct match_data): Add operator().
(match_data::operator()): Rename from aux_add_nonlocal_symbols.
(callback): Remove 'callback'.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/ada-lang.c | 46 |
2 files changed, 24 insertions, 28 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 168cd5b..89b3cf0 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2021-03-26 Tom Tromey <tom@tromey.com> + * ada-lang.c (struct match_data): Add operator(). + (match_data::operator()): Rename from aux_add_nonlocal_symbols. + (callback): Remove 'callback'. + +2021-03-26 Tom Tromey <tom@tromey.com> + * psymtab.c (psymbol_functions::expand_symtabs_matching): Only call make_ignore_params once. diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index d037478..e5fbf74 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -4970,7 +4970,7 @@ ada_add_local_symbols (std::vector<struct block_symbol> &result, add_symbols_from_enclosing_procs (result, lookup_name, domain); } -/* An object of this type is used as the user_data argument when +/* An object of this type is used as the callback argument when calling the map_matching_symbols method. */ struct match_data @@ -4981,48 +4981,43 @@ struct match_data } DISABLE_COPY_AND_ASSIGN (match_data); + bool operator() (struct block_symbol *bsym); + struct objfile *objfile = nullptr; std::vector<struct block_symbol> *resultp; struct symbol *arg_sym = nullptr; bool found_sym = false; }; -/* A callback for add_nonlocal_symbols that adds symbol, found in BSYM, - to a list of symbols. DATA is a pointer to a struct match_data * - containing the vector that collects the symbol list, the file that SYM - must come from, a flag indicating whether a non-argument symbol has - been found in the current block, and the last argument symbol - passed in SYM within the current block (if any). When SYM is null, - marking the end of a block, the argument symbol is added if no - other has been found. */ +/* A callback for add_nonlocal_symbols that adds symbol, found in + BSYM, to a list of symbols. */ -static bool -aux_add_nonlocal_symbols (struct block_symbol *bsym, - struct match_data *data) +bool +match_data::operator() (struct block_symbol *bsym) { const struct block *block = bsym->block; struct symbol *sym = bsym->symbol; if (sym == NULL) { - if (!data->found_sym && data->arg_sym != NULL) - add_defn_to_vec (*data->resultp, - fixup_symbol_section (data->arg_sym, data->objfile), + if (!found_sym && arg_sym != NULL) + add_defn_to_vec (*resultp, + fixup_symbol_section (arg_sym, objfile), block); - data->found_sym = false; - data->arg_sym = NULL; + found_sym = false; + arg_sym = NULL; } else { if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED) return true; else if (SYMBOL_IS_ARGUMENT (sym)) - data->arg_sym = sym; + arg_sym = sym; else { - data->found_sym = true; - add_defn_to_vec (*data->resultp, - fixup_symbol_section (sym, data->objfile), + found_sym = true; + add_defn_to_vec (*resultp, + fixup_symbol_section (sym, objfile), block); } } @@ -5194,16 +5189,11 @@ add_nonlocal_symbols (std::vector<struct block_symbol> &result, bool is_wild_match = lookup_name.ada ().wild_match_p (); - auto callback = [&] (struct block_symbol *bsym) - { - return aux_add_nonlocal_symbols (bsym, &data); - }; - for (objfile *objfile : current_program_space->objfiles ()) { data.objfile = objfile; - objfile->map_matching_symbols (lookup_name, domain, global, callback, + objfile->map_matching_symbols (lookup_name, domain, global, data, is_wild_match ? NULL : compare_names); for (compunit_symtab *cu : objfile->compunits ()) @@ -5226,7 +5216,7 @@ add_nonlocal_symbols (std::vector<struct block_symbol> &result, for (objfile *objfile : current_program_space->objfiles ()) { data.objfile = objfile; - objfile->map_matching_symbols (name1, domain, global, callback, + objfile->map_matching_symbols (name1, domain, global, data, compare_names); } } |