23 #include "filenames.h" 41 #include "readline/readline.h" 111 " \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,";
120 #ifdef HAVE_DOS_BASED_FILE_SYSTEM 145 const char *text,
const char *prefix)
154 const char *text,
const char *word)
162 (rl_filename_completion_function (text, subsequent_name));
172 const char *p = p_rl.get ();
173 if (p[strlen (p) - 1] ==
'~')
185 rl_completer_word_break_characters =
"";
195 const char *text,
const char *word)
204 #define RL_QF_SINGLE_QUOTE 0x01 205 #define RL_QF_DOUBLE_QUOTE 0x02 206 #define RL_QF_BACKSLASH 0x04 207 #define RL_QF_OTHER_QUOTE 0x08 233 const char *line_buffer)
237 const char *brkchars;
238 int point = strlen (line_buffer);
264 for (
scan = pass_next = 0;
278 if (quote_char !=
'\'' && line_buffer[
scan] ==
'\\')
285 if (quote_char !=
'\0')
289 if (line_buffer[
scan] == quote_char)
300 quote_char = line_buffer[
scan];
303 if (quote_char ==
'\'')
305 else if (quote_char ==
'"')
313 if (point == end && quote_char ==
'\0')
320 scan = line_buffer[point];
322 if (strchr (brkchars,
scan) != 0)
328 scan = line_buffer[point];
332 isbrk = strchr (brkchars,
scan) != 0;
340 && (end - point) > 1)
352 return line_buffer + point;
385 if (
strncmp_iw (word, lcd, strlen (lcd)) == 0)
388 size_t wordlen = strlen (word);
389 if (word[wordlen - 1] ==
' ')
408 const char *text,
const char *word)
413 int quoted = *text ==
'\'' || *text ==
'"';
414 int quote_char =
'\0';
415 const char *colon = NULL;
416 char *file_to_match = NULL;
417 const char *symbol_start = text;
418 const char *orig_text = text;
421 for (p = text; *p !=
'\0'; ++p)
423 if (*p ==
'\\' && p[1] ==
'\'')
425 else if (*p ==
'\'' || *p ==
'"')
429 while (*p !=
'\0' && *p != quote_found)
431 if (*p ==
'\\' && p[1] == quote_found)
436 if (*p == quote_found)
441 #if HAVE_DOS_BASED_FILE_SYSTEM 445 else if (p < text + 3 && *p ==
':' && p == text + 1 + quoted)
448 else if (*p ==
':' && !colon)
451 symbol_start = p + 1;
454 symbol_start = p + 1;
465 file_to_match = (
char *)
xmalloc (colon - text + 1);
466 strncpy (file_to_match, text, colon - text);
467 file_to_match[colon - text] =
'\0';
469 for (s = file_to_match + (colon - text);
472 if (*s ==
':' || *s == quote_char)
485 xfree (file_to_match);
489 size_t text_len = strlen (text);
519 for (
const auto &fn_up: fn_list)
521 char *fn = fn_up.get ();
522 memmove (fn, fn + (word - text), strlen (fn) + 1 - (word - text));
544 size_t text_len = strlen (text);
605 return string != NULL ?
string :
"";
622 bool needs_arg =
true;
680 size_t wordlen = strlen (word);
681 const char *
keyword = word + wordlen;
683 if (wordlen > 0 &&
keyword[-1] !=
' ')
699 else if (wordlen > 0 &&
keyword[-1] ==
' ')
720 const char *
const *keywords,
const char **text_p)
722 const char *text = *text_p;
724 size_t len = after - text;
726 if (text[len] !=
' ')
730 for (
int i = 0; keywords[i] != NULL; i++)
732 if (strncmp (keywords[i], text, len) == 0)
763 const char *quoted_arg_start,
764 const char *quoted_arg_end)
779 if (quoted_arg_start != NULL && quoted_arg_end != NULL)
781 if (quoted_arg_end[1] ==
'\0')
805 else if (quoted_arg_end[1] ==
' ')
830 const char *text,
const char * )
832 int found_probe_option = -1;
838 if (text[0] ==
'-' && text[1] ==
'p')
841 const char *option_text = text;
844 const char *copy = text;
899 else if (location != NULL)
932 if ((text[0] ==
'-' || text[0] ==
'\0')
939 if (found_probe_option == -1)
952 const char *word_ignored)
965 char *fieldname,
int namelen)
968 int computed_type_name = 0;
969 const char *type_name = NULL;
976 output, fieldname, namelen);
989 output, fieldname, namelen);
998 if (
name && ! strncmp (
name, fieldname, namelen))
1000 if (!computed_type_name)
1003 computed_type_name = 1;
1006 if (!type_name || strcmp (type_name,
name))
1007 output.emplace_back (xstrdup (
name));
1016 const char *text,
const char *word)
1035 if (fieldname &&
type)
1048 int flen = strlen (fieldname);
1078 const char *text,
const char *word)
1088 rl_completer_word_break_characters = (
char *) break_chars;
1096 const char *break_chars;
1113 const char *text,
const char *word)
1180 const char *command,
const char *word,
1181 const char *cmd_args,
1185 const char *p = cmd_args;
1215 brkchars_fn (c, tracker, p, word);
1236 const char *line_buffer,
int point,
1241 int ignore_help_classes;
1258 tmp_command = (
char *) alloca (point + 1);
1264 strncpy (tmp_command, line_buffer, point);
1265 tmp_command[point] =
'\0';
1276 word = tmp_command + point - strlen (text);
1295 while (*p ==
' ' || *p ==
'\t')
1314 while (*q && (isalnum (*q) || *q ==
'-' || *q ==
'_'))
1316 if (q != tmp_command + point)
1332 word, ignore_help_classes);
1338 ignore_help_classes);
1350 if (p == tmp_command + point)
1355 if (p[-1] ==
' ' || p[-1] ==
'\t')
1365 ignore_help_classes);
1386 tmp_command, word, p,
1400 while (q > tmp_command)
1402 if (isalnum (q[-1]) || q[-1] ==
'-' || q[-1] ==
'_')
1410 ignore_help_classes);
1438 tmp_command, word, p,
1451 const char *line_buffer,
int point,
1471 #define INITIAL_COMPLETION_HTAB_SIZE 200 1478 htab_hash_string, (htab_eq)
streq,
1496 htab_hash_string, (htab_eq)
streq,
1514 const char *text,
const char *word)
1524 slot = htab_find_slot (m_entries_hash,
name.get (), INSERT);
1525 if (*slot == HTAB_EMPTY_ENTRY)
1527 const char *match_for_lcd_str = NULL;
1529 if (match_for_lcd != NULL)
1530 match_for_lcd_str = match_for_lcd->
finish ();
1532 if (match_for_lcd_str == NULL)
1533 match_for_lcd_str =
name.get ();
1538 recompute_lowest_common_denominator (std::move (lcd));
1540 *slot =
name.get ();
1541 m_entries_vec.push_back (std::move (
name));
1552 const char *text,
const char *word)
1563 for (
auto &candidate : list)
1573 const char *text,
const char *word)
1583 else if (word > text)
1586 newobj = xstrdup (match_name + (word - text));
1591 size_t len = strlen (match_name);
1592 newobj = (
char *)
xmalloc (text - word + len + 1);
1593 memcpy (newobj, word, text - word);
1594 memcpy (newobj + (text - word), match_name, len + 1);
1604 const char *text,
const char *word)
1608 newobj = xstrdup (match_name);
1616 const char *text,
const char *word)
1620 return std::move (match_name);
1638 const char *text,
const char *line_buffer,
int point)
1651 const char *text,
const char *word)
1662 const char *text,
const char *word)
1673 const char *text,
const char *word)
1675 size_t len = strlen (word);
1677 const char *signame;
1682 if (signum == GDB_SIGNAL_0)
1688 if (!signame || strcmp (signame,
"?") == 0)
1691 if (strncasecmp (signame, word, len) == 0)
1714 const char *text,
const char *word,
1715 reg_completer_targets targets)
1717 size_t len = strlen (word);
1733 if (*
name !=
'\0' && strncmp (word,
name, len) == 0)
1750 if (strncmp (word,
name, len) == 0)
1764 const char *text,
const char *word)
1776 const char *text,
const char *word)
1787 const char *text,
const char *word)
1844 rl_completer_quote_characters = NULL;
1856 rl_basic_quote_characters = NULL;
1859 return rl_completer_word_break_characters;
1889 size_t point = strlen (text);
1915 if (m_lowest_common_denominator == NULL)
1919 m_lowest_common_denominator = new_match_up.release ();
1920 m_lowest_common_denominator_unique =
true;
1928 const char *new_match = new_match_up.get ();
1931 (new_match[i] !=
'\0' 1932 && new_match[i] == m_lowest_common_denominator[i]);
1935 if (m_lowest_common_denominator[i] != new_match[i])
1937 m_lowest_common_denominator[i] =
'\0';
1938 m_lowest_common_denominator_unique =
false;
1982 const char *p_orig = orig;
1983 const char *orig_end = orig + orig_len;
1984 const char *p_lcd = lcd;
1987 while (p_orig < orig_end)
1991 while (p_orig < orig_end && *p_orig ==
' ')
2010 while (*p_lcd !=
'\0')
2013 return xstrdup (res.c_str ());
2028 char **match_list =
XNEWVEC (
char *, 1 + list.size () + 1);
2043 match_list[0] = reconcat (match_list[0], match_list[0],
2044 buf, (
char *) NULL);
2045 match_list[1] = NULL;
2050 bool completion_suppress_append
2052 || match_list[0][strlen (match_list[0]) - 1] ==
' ');
2060 for (ix = 0; ix < list.size (); ++ix)
2061 match_list[ix + 1] = list[ix].release ();
2062 match_list[ix + 1] = NULL;
2071 : match_list (NULL), number_matches (0),
2072 completion_suppress_append (false)
2078 size_t number_matches_,
2079 bool completion_suppress_append_)
2080 : match_list (match_list_),
2081 number_matches (number_matches_),
2082 completion_suppress_append (completion_suppress_append_)
2101 rhs.match_list = NULL;
2103 rhs.number_matches = 0;
2183 rl_line_buffer, rl_point);
2209 rl_attempted_completion_over = 1;
2236 const char *breakchars)
2238 char quote_char =
'\0';
2241 if (quotechars == NULL)
2244 if (breakchars == NULL)
2249 if (quote_char !=
'\0')
2252 if (*
scan == quote_char)
2259 else if (strchr (quotechars, *
scan))
2264 else if (strchr (breakchars, *
scan))
2289 return _(
"*** List may be truncated, max-completions reached. ***");
2307 #undef VISIBLE_STATS 2309 #if defined (HANDLE_MULTIBYTE) 2310 #define MB_INVALIDCH(x) ((x) == (size_t)-1 || (x) == (size_t)-2) 2311 #define MB_NULLWCH(x) ((x) == 0) 2314 #define ELLIPSIS_LEN 3 2329 RL_SETSTATE (RL_STATE_MOREINPUT);
2330 c = displayer->
read_key (displayer);
2331 RL_UNSETSTATE (RL_STATE_MOREINPUT);
2333 if (c ==
'y' || c ==
'Y' || c ==
' ')
2335 if (c ==
'n' || c ==
'N' || c == RUBOUT)
2337 if (c == ABORT_CHAR || c < 0)
2346 if (for_pager && (c == NEWLINE || c == RETURN))
2348 if (for_pager && (c ==
'q' || c ==
'Q'))
2350 displayer->
beep (displayer);
2368 displayer->
puts (displayer,
"--More--");
2369 displayer->
flush (displayer);
2388 return (stat (filename, &finfo) == 0 && S_ISDIR (finfo.st_mode));
2407 if (rl_filename_completion_desired == 0)
2410 temp = strrchr (pathname,
'/');
2411 #if defined (__MSDOS__) 2412 if (temp == 0 && ISALPHA ((
unsigned char)pathname[0]) && pathname[1] ==
':')
2413 temp = pathname + 1;
2416 if (temp == 0 || *temp ==
'\0')
2422 else if (temp[1] ==
'\0')
2424 for (x = temp - 1; x > pathname; x--)
2427 return ((*x ==
'/') ? x + 1 : pathname);
2440 #if defined (HANDLE_MULTIBYTE) 2446 left = strlen (
string) + 1;
2447 memset (&
ps, 0,
sizeof (mbstate_t));
2453 if (
CTRL_CHAR (
string[pos]) ||
string[pos] == RUBOUT)
2460 #if defined (HANDLE_MULTIBYTE) 2461 clen = mbrtowc (&wc,
string + pos, left - pos, &
ps);
2462 if (MB_INVALIDCH (clen))
2466 memset (&
ps, 0,
sizeof (mbstate_t));
2468 else if (MB_NULLWCH (clen))
2474 width += (w >= 0) ? w : 1;
2496 #if defined (HANDLE_MULTIBYTE) 2503 end = to_print + strlen (to_print) + 1;
2504 memset (&
ps, 0,
sizeof (mbstate_t));
2511 if (to_print[prefix_bytes] ==
'\0')
2518 ellipsis = (to_print[prefix_bytes] ==
'.') ?
'_' :
'.';
2520 displayer->
putch (displayer, ellipsis);
2524 s = to_print + prefix_bytes;
2529 displayer->
putch (displayer,
'^');
2530 displayer->
putch (displayer, UNCTRL (*s));
2533 #if defined (HANDLE_MULTIBYTE) 2534 memset (&
ps, 0,
sizeof (mbstate_t));
2537 else if (*s == RUBOUT)
2539 displayer->
putch (displayer,
'^');
2540 displayer->
putch (displayer,
'?');
2543 #if defined (HANDLE_MULTIBYTE) 2544 memset (&
ps, 0,
sizeof (mbstate_t));
2549 #if defined (HANDLE_MULTIBYTE) 2550 tlen = mbrtowc (&wc, s, end - s, &
ps);
2551 if (MB_INVALIDCH (tlen))
2555 memset (&
ps, 0,
sizeof (mbstate_t));
2557 else if (MB_NULLWCH (tlen))
2562 width = (w >= 0) ? w : 1;
2564 for (w = 0; w < tlen; ++w)
2565 displayer->
putch (displayer, s[w]);
2567 printed_len += width;
2569 displayer->
putch (displayer, *s);
2588 int printed_len, extension_char, slen, tlen;
2589 char *s, c, *new_full_pathname;
2591 extern int _rl_complete_mark_directories;
2594 printed_len =
gdb_fnprint (to_print, prefix_bytes, displayer);
2596 #if defined (VISIBLE_STATS) 2597 if (rl_filename_completion_desired && (rl_visible_stats || _rl_complete_mark_directories))
2599 if (rl_filename_completion_desired && _rl_complete_mark_directories)
2605 if (to_print != full_pathname)
2609 to_print[-1] =
'\0';
2616 if (full_pathname == 0 || *full_pathname == 0)
2618 else if (full_pathname[0] !=
'/')
2620 else if (full_pathname[1] == 0)
2622 else if (full_pathname[1] ==
'/' && full_pathname[2] == 0)
2626 s = tilde_expand (dn);
2627 if (rl_directory_completion_hook)
2628 (*rl_directory_completion_hook) (&s);
2631 tlen = strlen (to_print);
2632 new_full_pathname = (
char *)
xmalloc (slen + tlen + 2);
2633 strcpy (new_full_pathname, s);
2634 if (s[slen - 1] ==
'/')
2637 new_full_pathname[slen] =
'/';
2638 new_full_pathname[slen] =
'/';
2639 strcpy (new_full_pathname + slen + 1, to_print);
2641 #if defined (VISIBLE_STATS) 2642 if (rl_visible_stats)
2643 extension_char = stat_char (new_full_pathname);
2647 extension_char =
'/';
2649 xfree (new_full_pathname);
2654 s = tilde_expand (full_pathname);
2655 #if defined (VISIBLE_STATS) 2656 if (rl_visible_stats)
2657 extension_char = stat_char (s);
2661 extension_char =
'/';
2667 displayer->
putch (displayer, extension_char);
2681 return displayer->
width;
2688 typedef int QSFUNC (
const void *,
const void *);
2698 int count, limit, printed_len, lines, cols;
2699 int i, j, k, l, common_length, sind;
2705 common_length = sind = 0;
2709 temp = strrchr (t,
'/');
2711 sind = temp ? strlen (temp) : strlen (t);
2716 common_length = sind = 0;
2723 if (limit != 1 && (limit * max == cols))
2727 if (cols < displayer->width && limit < 0)
2736 count = (len + (limit - 1)) / limit;
2743 if (rl_ignore_completion_duplicates == 0 && rl_sort_completion_matches)
2746 displayer->
crlf (displayer);
2752 for (i = 1; i <= count; i++)
2754 for (j = 0, l = i; j < limit; j++)
2756 if (l > len || matches[l] == 0)
2765 for (k = 0; k < max - printed_len; k++)
2766 displayer->
putch (displayer,
' ');
2770 displayer->
crlf (displayer);
2772 if (page_completions && lines >= (displayer->
height - 1) && i < count)
2783 for (i = 1; matches[i]; i++)
2790 if (i && (limit > 1) && (i % limit) == 0)
2792 displayer->
crlf (displayer);
2794 if (page_completions && lines >= displayer->
height - 1)
2802 for (k = 0; k < max - printed_len; k++)
2803 displayer->
putch (displayer,
' ');
2806 displayer->
crlf (displayer);
2829 if (rl_completion_query_items > 0 && len >= rl_completion_query_items)
2837 displayer->
crlf (displayer);
2840 "Display all %d possibilities? (y or n)", len);
2841 displayer->
puts (displayer, msg);
2842 displayer->
flush (displayer);
2846 displayer->
crlf (displayer);
2860 displayer->
puts (displayer, message);
2861 displayer->
crlf (displayer);
2871 Set maximum number of completion candidates."),
_(
"\ 2872 Show maximum number of completion candidates."),
_(
"\ 2873 Use this to limit the number of candidates considered\n\ 2874 during completion. Specifying \"unlimited\" or -1\n\ 2875 disables limiting. Note that setting either no limit or\n\ 2876 a very large limit can make completion slow."),
bool suppress_append_ws() const
static const char gdb_completer_file_name_break_characters[]
static const char * gdb_org_rl_basic_quote_characters
const char * user_reg_map_regnum_to_name(struct gdbarch *gdbarch, int regnum)
static char * gdb_printable_part(char *pathname)
const char * quote_characters
static void default_completer_handle_brkchars(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
static int gdb_fnwidth(const char *string)
completion_list make_source_files_completion_list(const char *text, const char *word)
static char * gdb_completion_word_break_characters_throw()
#define TYPE_FIELD_NAME(thistype, n)
#define TYPE_N_BASECLASSES(thistype)
completer_handle_brkchars_ftype * completer_handle_brkchars
static char * make_completion_match_str_1(const char *match_name, const char *text, const char *word)
#define TYPE_NFN_FIELDS(thistype)
completer_handle_brkchars_ftype * completer_handle_brkchars_func_for_completer(completer_ftype *fn)
bool have_completions() const
#define RL_QF_OTHER_QUOTE
static void scan(struct macro_buffer *dest, struct macro_buffer *src, struct macro_name_list *no_loop, macro_lookup_ftype *lookup_func, void *lookup_baton)
void add_completions(completion_list &&list)
const char *const linespec_keywords[]
static gdb_completer_state current_completion
void complete_expression(completion_tracker &tracker, const char *text, const char *word)
void complete_on_cmdlist(struct cmd_list_element *list, completion_tracker &tracker, const char *text, const char *word, int ignore_help_classes)
static bool compare_cstrings(const char *str1, const char *str2)
const char *const * enums
void set_quote_char(int quote_char)
static int gdb_path_isdir(const char *filename)
unsigned int allow_unknown
void collect_file_symbol_completion_matches(completion_tracker &tracker, complete_symbol_mode mode, symbol_name_match_type name_match_type, const char *text, const char *word, const char *srcfile)
static void reg_or_group_completer_1(completion_tracker &tracker, const char *text, const char *word, reg_completer_targets targets)
void complete_on_enum(completion_tracker &tracker, const char *const *enumlist, const char *text, const char *word)
void * memset(T *s, int c, size_t n)=delete
void linespec_complete_label(completion_tracker &tracker, const struct language_defn *language, const char *source_filename, const char *function_name, symbol_name_match_type func_name_match_type, const char *label_name)
void collect_symbol_completion_matches_type(completion_tracker &tracker, const char *text, const char *word, enum type_code code)
const char * advance_to_expression_complete_word_point(completion_tracker &tracker, const char *text)
#define RL_QF_SINGLE_QUOTE
void discard_completions()
bool completes_to_completion_word(const char *word)
struct cmd_list_element * lookup_cmd_1(const char **text, struct cmd_list_element *clist, struct cmd_list_element **result_list, int ignore_help_classes)
void filename_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
void collect_symbol_completion_matches(completion_tracker &tracker, complete_symbol_mode mode, symbol_name_match_type name_match_type, const char *text, const char *word)
static int gdb_print_filename(char *to_print, char *full_pathname, int prefix_bytes, const struct match_list_displayer *displayer)
struct cmd_list_element * cmdlist
char * skip_spaces(char *chp)
void set_rl_completer_word_break_characters(const char *break_chars)
char * gdb_completion_word_break_characters()
static int gdb_display_match_list_pager(int lines, const struct match_list_displayer *displayer)
complete_line_internal_reason
#define TYPE_FIELD_TYPE(thistype, n)
void complete_line(completion_tracker &tracker, const char *text, const char *line_buffer, int point)
mld_read_key_ftype * read_key
#define RL_QF_DOUBLE_QUOTE
const char * skip_quoted_chars(const char *str, const char *quotechars, const char *breakchars)
int custom_word_point() const
#define TYPE_IS_REFERENCE(t)
static const char * gdb_rl_find_completion_word(struct gdb_rl_completion_word_info *info, int *qc, int *dp, const char *line_buffer)
static void add_struct_fields(struct type *type, completion_list &output, char *fieldname, int namelen)
static void complete_explicit_location(completion_tracker &tracker, struct event_location *location, const char *text, const language_defn *language, const char *quoted_arg_start, const char *quoted_arg_end)
#define INITIAL_COMPLETION_HTAB_SIZE
const char * get_max_completions_reached_message(void)
void signal_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
int strncmp_iw(const char *string1, const char *string2, size_t string2_len)
completion_list complete_source_filenames(const char *text)
struct cmd_list_element * setlist
char ** release_match_list()
static char gdb_custom_word_point_brkchars[2]
struct type * check_typedef(struct type *type)
#define CATCH(EXCEPTION, MASK)
void noop_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *prefix)
std::unique_ptr< T, xfree_deleter< T > > unique_xmalloc_ptr
char ** gdb_rl_attempted_completion_function(const char *text, int start, int end)
void linespec_complete_function(completion_tracker &tracker, const char *function, symbol_name_match_type func_match_type, const char *source_filename)
static const char gdb_completer_command_word_break_characters[]
const char * skip_quoted(const char *str)
bool use_custom_word_point() const
std::vector< gdb::unique_xmalloc_ptr< char > > completion_list
static void location_completer_handle_brkchars(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word_ignored)
struct cmd_list_element * showlist
static void collect_explicit_location_matches(completion_tracker &tracker, struct event_location *location, enum explicit_location_match_type what, const char *word, const struct language_defn *language)
int streq(const char *lhs, const char *rhs)
#define gdb_assert_not_reached(message)
const char * quoted_arg_start
void command_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
struct cleanup * make_cleanup(make_cleanup_ftype *function, void *arg)
static char * expand_preserving_ws(const char *orig, size_t orig_len, const char *lcd)
void reggroup_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
static int gdb_get_y_or_n(int for_pager, const struct match_list_displayer *displayer)
static int gdb_complete_get_screenwidth(const struct match_list_displayer *displayer)
void symbol_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
struct gdbarch * get_current_arch(void)
EXTERN_C int _rl_qsort_string_compare(const void *, const void *)
static char ** gdb_rl_attempted_completion_function_throw(const char *text, int start, int end)
static const char gdb_completer_quote_characters[]
#define CMD_LIST_AMBIGUOUS
void _initialize_completer(void)
const char * skip_to_space(const char *chp)
std::unique_ptr< event_location, event_location_deleter > event_location_up
const char * gdb_signal_to_name(enum gdb_signal)
void advance_custom_word_point_by(size_t len)
#define TYPE_BASECLASS(thistype, index)
void completer_ftype(struct cmd_list_element *, completion_tracker &tracker, const char *text, const char *word)
bool completion_suppress_append
int QSFUNC(const void *, const void *)
const char * get_gdb_completer_quote_characters(void)
bool maybe_add_completion(gdb::unique_xmalloc_ptr< char > name, completion_match_for_lcd *match_for_lcd, const char *text, const char *word)
bool m_lowest_common_denominator_unique
const char * completion_find_completion_word(completion_tracker &tracker, const char *text, int *quote_char)
void set_gdb_completion_word_break_characters(completer_ftype *fn)
completion_result build_completion_result(const char *text, int start, int end)
void location_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *)
completion_list m_entries_vec
static void filename_completer_handle_brkchars(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
void throw_exception(struct gdb_exception exception)
DEF_ENUM_FLAGS_TYPE(enum reg_completer_target, reg_completer_targets)
symbol_name_match_type func_name_match_type
static void complete_line_internal_normal_command(completion_tracker &tracker, const char *command, const char *word, const char *cmd_args, complete_line_internal_reason reason, struct cmd_list_element *c)
const struct language_defn * current_language
#define TYPE_TARGET_TYPE(thistype)
int xsnprintf(char *str, size_t size, const char *format,...)
gdb::unique_xmalloc_ptr< char > make_completion_match_str(const char *match_name, const char *text, const char *word)
#define TYPE_CODE(thistype)
static void complete_line_internal(completion_tracker &tracker, const char *text, const char *line_buffer, int point, complete_line_internal_reason reason)
void set_custom_word_point(int point)
const char * quoted_arg_end
completion_tracker * tracker
void expression_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
int _rl_completion_prefix_display_length
#define TYPE_NFIELDS(thistype)
static const char * string_or_empty(const char *string)
void add_completion(gdb::unique_xmalloc_ptr< char > name, completion_match_for_lcd *match_for_lcd=NULL, const char *text=NULL, const char *word=NULL)
mld_erase_entire_line_ftype * erase_entire_line
static int skip_keyword(completion_tracker &tracker, const char *const *keywords, const char **text_p)
int _rl_print_completions_horizontally
static int ignore(struct target_ops *ops, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
const char * basic_quote_characters
void completer_handle_brkchars_ftype(struct cmd_list_element *, completion_tracker &tracker, const char *text, const char *word)
const char *(* la_word_break_characters)(void)
static void complete_address_and_linespec_locations(completion_tracker &tracker, const char *text, symbol_name_match_type match_type)
struct cmd_list_element ** prefixlist
void reg_or_group_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
static void complete_line_internal_1(completion_tracker &tracker, const char *text, const char *line_buffer, int point, complete_line_internal_reason reason)
static const char *const explicit_options[]
event_location_up string_to_explicit_location(const char **argp, const struct language_defn *language, explicit_completion_info *completion_info)
char * m_lowest_common_denominator
struct reggroup * reggroup_next(struct gdbarch *gdbarch, struct reggroup *last)
struct type * parse_expression_for_completion(const char *, char **, enum type_code *)
#define TYPE_FN_FIELDLIST_NAME(thistype, n)
const char * type_name_no_tag(const struct type *type)
static void complete_files_symbols(completion_tracker &tracker, const char *text, const char *word)
void linespec_complete(completion_tracker &tracker, const char *text, symbol_name_match_type match_type)
explicit_location_match_type
static const char *const probe_options[]
static void command_completer_handle_brkchars(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
completer_ftype * completer
void gdb_display_match_list(char **matches, int len, int max, const struct match_list_displayer *displayer)
static int gdb_display_match_list_1(char **matches, int len, int max, const struct match_list_displayer *displayer)
PTR xcalloc(size_t number, size_t size)
const char * word_break_characters
static int gdb_fnprint(const char *to_print, int prefix_bytes, const struct match_list_displayer *displayer)
void add_setshow_zuinteger_unlimited_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
void set_use_custom_word_point(bool enable)
void throw_error(enum errors error, const char *fmt,...)
bool saw_explicit_location_option
const char * reggroup_name(struct reggroup *group)
void do_cleanups(struct cleanup *old_chain)
struct explicit_location * get_explicit_location(struct event_location *location)
void recompute_lowest_common_denominator(gdb::unique_xmalloc_ptr< char > &&new_match)