From: Tom Tromey <tom@tromey.com>
To: gdb-patches@sourceware.org
Cc: Tom Tromey <tom@tromey.com>
Subject: [RFA 1/3] Use VEC for filename_language_table
Date: Sat, 04 Jun 2016 14:49:00 -0000 [thread overview]
Message-ID: <1465051760-25840-2-git-send-email-tom@tromey.com> (raw)
In-Reply-To: <1465051760-25840-1-git-send-email-tom@tromey.com>
This patch changes filename_language_table to be a VEC. This seemed
like a reasonable cleanup over the old code.
2016-06-04 Tom Tromey <tom@tromey.com>
* symfile.c (filename_language_table): Now a VEC.
(fl_table_size, fl_table_next): Remove.
(add_filename_language): Use VEC_safe_push.
(set_ext_lang_command, info_ext_lang_command)
(deduce_language_from_filename): Use VEC_iterate.
(init_filename_language_table): Use VEC_empty.
---
gdb/ChangeLog | 9 ++++++++
gdb/symfile.c | 70 +++++++++++++++++++++++++++++++----------------------------
2 files changed, 46 insertions(+), 33 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index af4ddcc..b8f52bf 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2016-06-04 Tom Tromey <tom@tromey.com>
+
+ * symfile.c (filename_language_table): Now a VEC.
+ (fl_table_size, fl_table_next): Remove.
+ (add_filename_language): Use VEC_safe_push.
+ (set_ext_lang_command, info_ext_lang_command)
+ (deduce_language_from_filename): Use VEC_iterate.
+ (init_filename_language_table): Use VEC_empty.
+
2016-06-02 Jon Turney <jon.turney@dronecode.org.uk>
* windows-nat.c (handle_output_debug_string): Return type of
diff --git a/gdb/symfile.c b/gdb/symfile.c
index b244332..f7f56c6 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -2713,26 +2713,21 @@ typedef struct
{
char *ext;
enum language lang;
-}
-filename_language;
+} filename_language;
+
+DEF_VEC_O (filename_language);
-static filename_language *filename_language_table;
-static int fl_table_size, fl_table_next;
+static VEC (filename_language) *filename_language_table;
static void
add_filename_language (char *ext, enum language lang)
{
- if (fl_table_next >= fl_table_size)
- {
- fl_table_size += 10;
- filename_language_table = XRESIZEVEC (filename_language,
- filename_language_table,
- fl_table_size);
- }
+ filename_language entry;
+
+ entry.ext = xstrdup (ext);
+ entry.lang = lang;
- filename_language_table[fl_table_next].ext = xstrdup (ext);
- filename_language_table[fl_table_next].lang = lang;
- fl_table_next++;
+ VEC_safe_push (filename_language, filename_language_table, &entry);
}
static char *ext_args;
@@ -2752,6 +2747,7 @@ set_ext_lang_command (char *args, int from_tty, struct cmd_list_element *e)
int i;
char *cp = ext_args;
enum language lang;
+ filename_language *entry;
/* First arg is filename extension, starting with '.' */
if (*cp != '.')
@@ -2781,11 +2777,15 @@ set_ext_lang_command (char *args, int from_tty, struct cmd_list_element *e)
lang = language_enum (cp);
/* Now lookup the filename extension: do we already know it? */
- for (i = 0; i < fl_table_next; i++)
- if (0 == strcmp (ext_args, filename_language_table[i].ext))
- break;
+ for (i = 0;
+ VEC_iterate (filename_language, filename_language_table, i, entry);
+ ++i)
+ {
+ if (0 == strcmp (ext_args, entry->ext))
+ break;
+ }
- if (i >= fl_table_next)
+ if (entry == NULL)
{
/* New file extension. */
add_filename_language (ext_args, lang);
@@ -2798,9 +2798,9 @@ set_ext_lang_command (char *args, int from_tty, struct cmd_list_element *e)
/* query ("Really make files of type %s '%s'?", */
/* ext_args, language_str (lang)); */
- xfree (filename_language_table[i].ext);
- filename_language_table[i].ext = xstrdup (ext_args);
- filename_language_table[i].lang = lang;
+ xfree (entry->ext);
+ entry->ext = xstrdup (ext_args);
+ entry->lang = lang;
}
}
@@ -2808,24 +2808,22 @@ static void
info_ext_lang_command (char *args, int from_tty)
{
int i;
+ filename_language *entry;
printf_filtered (_("Filename extensions and the languages they represent:"));
printf_filtered ("\n\n");
- for (i = 0; i < fl_table_next; i++)
- printf_filtered ("\t%s\t- %s\n",
- filename_language_table[i].ext,
- language_str (filename_language_table[i].lang));
+ for (i = 0;
+ VEC_iterate (filename_language, filename_language_table, i, entry);
+ ++i)
+ printf_filtered ("\t%s\t- %s\n", entry->ext, language_str (entry->lang));
}
static void
init_filename_language_table (void)
{
- if (fl_table_size == 0) /* Protect against repetition. */
+ /* Protect against repetition. */
+ if (VEC_empty (filename_language, filename_language_table))
{
- fl_table_size = 20;
- fl_table_next = 0;
- filename_language_table = XNEWVEC (filename_language, fl_table_size);
-
add_filename_language (".c", language_c);
add_filename_language (".d", language_d);
add_filename_language (".C", language_cplus);
@@ -2876,9 +2874,15 @@ deduce_language_from_filename (const char *filename)
if (filename != NULL)
if ((cp = strrchr (filename, '.')) != NULL)
- for (i = 0; i < fl_table_next; i++)
- if (strcmp (cp, filename_language_table[i].ext) == 0)
- return filename_language_table[i].lang;
+ {
+ filename_language *entry;
+
+ for (i = 0;
+ VEC_iterate (filename_language, filename_language_table, i, entry);
+ ++i)
+ if (strcmp (cp, entry->ext) == 0)
+ return entry->lang;
+ }
return language_unknown;
}
--
2.5.5
next prev parent reply other threads:[~2016-06-04 14:49 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-04 14:49 [RFA 0/3] minor language cleanups Tom Tromey
2016-06-04 14:49 ` [RFA 2/3] Move filename extensions into language_defn Tom Tromey
2016-06-06 13:23 ` Yao Qi
2016-06-06 21:04 ` Tom Tromey
2016-06-07 15:51 ` Yao Qi
2016-06-04 14:49 ` [RFA 3/3] Move logic out of symbol_find_demangled_name Tom Tromey
2016-06-06 14:15 ` Yao Qi
2016-06-07 11:41 ` Tom Tromey
2016-06-07 14:27 ` Pedro Alves
2016-06-07 15:12 ` Tom Tromey
2016-06-13 13:35 ` Pedro Alves
2016-06-17 8:28 ` Tom Tromey
2016-06-17 12:25 ` Pedro Alves
2016-06-17 12:36 ` Tom Tromey
2016-06-17 13:50 ` Pedro Alves
2016-06-24 3:15 ` Tom Tromey
2016-06-07 14:03 ` Pedro Alves
2016-06-08 2:14 ` Tom Tromey
2016-06-08 4:03 ` Tom Tromey
2016-06-13 13:35 ` Pedro Alves
2016-06-17 8:41 ` Tom Tromey
2016-06-17 12:28 ` Pedro Alves
2016-06-04 14:49 ` Tom Tromey [this message]
2016-06-06 13:06 ` [RFA 1/3] Use VEC for filename_language_table Yao Qi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1465051760-25840-2-git-send-email-tom@tromey.com \
--to=tom@tromey.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox