[PATCH 08/40] completion_list_add_name wrapper functions

Pedro Alves
2017-06-02T12:22:48Z

I've had to adjust these macros numerous times while working on this
series, adding/removing parameters while experimenting with designs.
At some point, I got fed up with fighting the preprocessor, and
decided to make them proper functions.

gdb/ChangeLog:
yyyy-mm-dd Pedro Alves <palves@redhat.com>

* symtab.c (COMPLETION_LIST_ADD_SYMBOL)
(MCOMPLETION_LIST_ADD_SYMBOL): Delete macros, replace with ...
(completion_list_add_symbol, completion_list_add_msymbol):
... these new functions.
(add_symtab_completions)
(default_make_symbol_completion_list_break_on_1): Adjust.
---
gdb/symtab.c | 40 ++++++++++++++++++++++++++--------------
1 file changed, 26 insertions(+), 14 deletions(-)

diff --git a/gdb/symtab.c b/gdb/symtab.c
index 4414d71..183164d 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -4779,18 +4779,8 @@ do_free_completion_list (void *list)
free_completion_list ((VEC (char_ptr) **) list);
}

-/* Helper routine for make_symbol_completion_list. */
-
static VEC (char_ptr) *return_val;

-#define COMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \
- completion_list_add_name \
- (SYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word))
-
-#define MCOMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \
- completion_list_add_name \
- (MSYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word))
-
/* Tracker for how many unique completions have been generated. Used
to terminate completion list generation early if the list has grown
to a size so large as to be useless. This helps avoid GDB seeming
@@ -4860,6 +4850,28 @@ completion_list_add_name (const char *symname,
}
}

+/* completion_list_add_name wrapper for struct symbol. */
+
+static void
+completion_list_add_symbol (symbol *sym,
+ const char *sym_text, int sym_text_len,
+ const char *text, const char *word)
+{
+ completion_list_add_name (SYMBOL_NATURAL_NAME (sym),
+ sym_text, sym_text_len, text, word);
+}
+
+/* completion_list_add_name wrapper for struct minimal_symbol. */
+
+static void
+completion_list_add_msymbol (minimal_symbol *sym,
+ const char *sym_text, int sym_text_len,
+ const char *text, const char *word)
+{
+ completion_list_add_name (MSYMBOL_NATURAL_NAME (sym),
+ sym_text, sym_text_len, text, word);
+}
+
/* ObjC: In case we are completing on a selector, look as the msymbol
again and feed all the selectors into the mill. */

@@ -5010,7 +5022,7 @@ add_symtab_completions (struct compunit_symtab *cust,
if (code == TYPE_CODE_UNDEF
|| (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
&& TYPE_CODE (SYMBOL_TYPE (sym)) == code))
- COMPLETION_LIST_ADD_SYMBOL (sym,
+ completion_list_add_symbol (sym,
sym_text, sym_text_len,
text, word);
}
@@ -5121,7 +5133,7 @@ default_make_symbol_completion_list_break_on_1 (const char *text,
ALL_MSYMBOLS (objfile, msymbol)
{
QUIT;
- MCOMPLETION_LIST_ADD_SYMBOL (msymbol, sym_text, sym_text_len, text,
+ completion_list_add_msymbol (msymbol, sym_text, sym_text_len, text,
word);

completion_list_objc_symbol (msymbol, sym_text, sym_text_len, text,
@@ -5168,14 +5180,14 @@ default_make_symbol_completion_list_break_on_1 (const char *text,
{
if (code == TYPE_CODE_UNDEF)
{
- COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text,
+ completion_list_add_symbol (sym, sym_text, sym_text_len, text,
word);
completion_list_add_fields (sym, sym_text, sym_text_len, text,
word);
}
else if (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
&& TYPE_CODE (SYMBOL_TYPE (sym)) == code)
- COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text,
+ completion_list_add_symbol (sym, sym_text, sym_text_len, text,
word);
}

--
2.5.5