forked from Imagelibrary/binutils-gdb
2002-11-21 Andrew Cagney <ac131313@redhat.com>
* filter.c: Re-indent. * filter.h, filter_host.h, gen-engine.c, gen-engine.h: Ditto. * gen-icache.c, gen-icache.h, gen-idecode.c: Ditto. * gen-idecode.h, gen-itable.c, gen-itable.h: Ditto. * gen-model.c, gen-model.h, gen-semantics.c: Ditto. * gen-semantics.h, gen-support.c, gen-support.h: Ditto. * gen.c, gen.h, igen.c, igen.h, ld-cache.c, ld-cache.h: Ditto. * ld-decode.c, ld-decode.h, ld-insn.c, ld-insn.h, lf.c: Ditto. * lf.h, misc.c, misc.h, table.c, table.h: Ditto.
This commit is contained in:
131
sim/igen/table.c
131
sim/igen/table.c
@@ -43,7 +43,8 @@
|
||||
#endif
|
||||
|
||||
typedef struct _open_table open_table;
|
||||
struct _open_table {
|
||||
struct _open_table
|
||||
{
|
||||
size_t size;
|
||||
char *buffer;
|
||||
char *pos;
|
||||
@@ -52,13 +53,14 @@ struct _open_table {
|
||||
open_table *parent;
|
||||
table *root;
|
||||
};
|
||||
struct _table {
|
||||
struct _table
|
||||
{
|
||||
open_table *current;
|
||||
};
|
||||
|
||||
|
||||
static line_ref *
|
||||
current_line (open_table *file)
|
||||
current_line (open_table * file)
|
||||
{
|
||||
line_ref *entry = ZALLOC (line_ref);
|
||||
*entry = file->pseudo_line;
|
||||
@@ -66,8 +68,7 @@ current_line (open_table *file)
|
||||
}
|
||||
|
||||
static table_entry *
|
||||
new_table_entry (open_table *file,
|
||||
table_entry_type type)
|
||||
new_table_entry (open_table * file, table_entry_type type)
|
||||
{
|
||||
table_entry *entry;
|
||||
entry = ZALLOC (table_entry);
|
||||
@@ -78,19 +79,16 @@ new_table_entry (open_table *file,
|
||||
}
|
||||
|
||||
static void
|
||||
set_nr_table_entry_fields (table_entry *entry,
|
||||
int nr_fields)
|
||||
set_nr_table_entry_fields (table_entry *entry, int nr_fields)
|
||||
{
|
||||
entry->field = NZALLOC (char*, nr_fields + 1);
|
||||
entry->field = NZALLOC (char *, nr_fields + 1);
|
||||
entry->nr_fields = nr_fields;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
table_push (table *root,
|
||||
line_ref *line,
|
||||
table_include *includes,
|
||||
const char *file_name)
|
||||
line_ref *line, table_include *includes, const char *file_name)
|
||||
{
|
||||
FILE *ff;
|
||||
open_table *file;
|
||||
@@ -115,7 +113,8 @@ table_push (table *root,
|
||||
while (1)
|
||||
{
|
||||
/* save the file name */
|
||||
char *dup_name = NZALLOC (char, strlen (include->dir) + strlen (file_name) + 2);
|
||||
char *dup_name =
|
||||
NZALLOC (char, strlen (include->dir) + strlen (file_name) + 2);
|
||||
if (dup_name == NULL)
|
||||
{
|
||||
perror (file_name);
|
||||
@@ -143,7 +142,7 @@ table_push (table *root,
|
||||
exit (1);
|
||||
}
|
||||
include = include->next;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* determine the size */
|
||||
@@ -152,7 +151,7 @@ table_push (table *root,
|
||||
fseek (ff, 0, SEEK_SET);
|
||||
|
||||
/* allocate this much memory */
|
||||
file->buffer = (char*) zalloc (file->size + 1);
|
||||
file->buffer = (char *) zalloc (file->size + 1);
|
||||
if (file->buffer == NULL)
|
||||
{
|
||||
perror (file_name);
|
||||
@@ -161,15 +160,16 @@ table_push (table *root,
|
||||
file->pos = file->buffer;
|
||||
|
||||
/* read it all in */
|
||||
if (fread (file->buffer, 1, file->size, ff) < file->size) {
|
||||
perror (file_name);
|
||||
exit (1);
|
||||
}
|
||||
if (fread (file->buffer, 1, file->size, ff) < file->size)
|
||||
{
|
||||
perror (file_name);
|
||||
exit (1);
|
||||
}
|
||||
file->buffer[file->size] = '\0';
|
||||
|
||||
/* set the initial line numbering */
|
||||
file->real_line.line_nr = 1; /* specifies current line */
|
||||
file->pseudo_line.line_nr = 1; /* specifies current line */
|
||||
file->real_line.line_nr = 1; /* specifies current line */
|
||||
file->pseudo_line.line_nr = 1; /* specifies current line */
|
||||
|
||||
/* done */
|
||||
fclose (ff);
|
||||
@@ -197,9 +197,7 @@ skip_spaces (char *chp)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
if (*chp == '\0'
|
||||
|| *chp == '\n'
|
||||
|| !isspace (*chp))
|
||||
if (*chp == '\0' || *chp == '\n' || !isspace (*chp))
|
||||
return chp;
|
||||
chp++;
|
||||
}
|
||||
@@ -211,8 +209,7 @@ back_spaces (char *start, char *chp)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
if (chp <= start
|
||||
|| !isspace (chp[-1]))
|
||||
if (chp <= start || !isspace (chp[-1]))
|
||||
return chp;
|
||||
chp--;
|
||||
}
|
||||
@@ -223,17 +220,14 @@ skip_digits (char *chp)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
if (*chp == '\0'
|
||||
|| *chp == '\n'
|
||||
|| !isdigit (*chp))
|
||||
if (*chp == '\0' || *chp == '\n' || !isdigit (*chp))
|
||||
return chp;
|
||||
chp++;
|
||||
}
|
||||
}
|
||||
|
||||
char *
|
||||
skip_to_separator (char *chp,
|
||||
char *separators)
|
||||
skip_to_separator (char *chp, char *separators)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
@@ -258,14 +252,14 @@ skip_to_null (char *chp)
|
||||
|
||||
|
||||
static char *
|
||||
skip_to_nl (char * chp)
|
||||
skip_to_nl (char *chp)
|
||||
{
|
||||
return skip_to_separator (chp, "\n");
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
next_line (open_table *file)
|
||||
next_line (open_table * file)
|
||||
{
|
||||
file->pos = skip_to_nl (file->pos);
|
||||
if (*file->pos == '0')
|
||||
@@ -282,7 +276,7 @@ table_read (table *root)
|
||||
{
|
||||
open_table *file = root->current;
|
||||
table_entry *entry = NULL;
|
||||
while(1)
|
||||
while (1)
|
||||
{
|
||||
|
||||
/* end-of-file? */
|
||||
@@ -301,7 +295,7 @@ table_read (table *root)
|
||||
if (*file->pos == '{')
|
||||
{
|
||||
char *chp;
|
||||
next_line (file); /* discard leading brace */
|
||||
next_line (file); /* discard leading brace */
|
||||
entry = new_table_entry (file, table_code_entry);
|
||||
chp = file->pos;
|
||||
/* determine how many lines are involved - look for <nl> "}" */
|
||||
@@ -368,7 +362,7 @@ table_read (table *root)
|
||||
if (*chp == '\t')
|
||||
entry->field[line_nr] = chp + 1;
|
||||
else
|
||||
entry->field[line_nr] = ""; /* blank */
|
||||
entry->field[line_nr] = ""; /* blank */
|
||||
chp = skip_to_null (chp) + 1;
|
||||
}
|
||||
}
|
||||
@@ -389,27 +383,28 @@ table_read (table *root)
|
||||
char *file_name;
|
||||
file->pos = chp;
|
||||
/* parse the number */
|
||||
line_nr = atoi(file->pos) - 1;
|
||||
line_nr = atoi (file->pos) - 1;
|
||||
/* skip to the file name */
|
||||
while (file->pos[0] != '0'
|
||||
&& file->pos[0] != '"'
|
||||
&& file->pos[0] != '\0')
|
||||
&& file->pos[0] != '"' && file->pos[0] != '\0')
|
||||
file->pos++;
|
||||
if (file->pos[0] != '"')
|
||||
error (&file->real_line, "Missing opening quote in cpp directive\n");
|
||||
error (&file->real_line,
|
||||
"Missing opening quote in cpp directive\n");
|
||||
/* parse the file name */
|
||||
file->pos++;
|
||||
file_name = file->pos;
|
||||
while (file->pos[0] != '"'
|
||||
&& file->pos[0] != '\0')
|
||||
while (file->pos[0] != '"' && file->pos[0] != '\0')
|
||||
file->pos++;
|
||||
if (file->pos[0] != '"')
|
||||
error (&file->real_line, "Missing closing quote in cpp directive\n");
|
||||
error (&file->real_line,
|
||||
"Missing closing quote in cpp directive\n");
|
||||
file->pos[0] = '\0';
|
||||
file->pos++;
|
||||
file->pos = skip_to_nl (file->pos);
|
||||
if (file->pos[0] != '\n')
|
||||
error (&file->real_line, "Missing newline in cpp directive\n");
|
||||
error (&file->real_line,
|
||||
"Missing newline in cpp directive\n");
|
||||
file->pseudo_line.file_name = file_name;
|
||||
file->pseudo_line.line_nr = line_nr;
|
||||
next_line (file);
|
||||
@@ -498,40 +493,35 @@ table_read (table *root)
|
||||
}
|
||||
|
||||
extern void
|
||||
table_print_code (lf *file,
|
||||
table_entry *entry)
|
||||
table_print_code (lf *file, table_entry *entry)
|
||||
{
|
||||
int field_nr;
|
||||
int nr = 0;
|
||||
for (field_nr = 0;
|
||||
field_nr < entry->nr_fields;
|
||||
field_nr++)
|
||||
for (field_nr = 0; field_nr < entry->nr_fields; field_nr++)
|
||||
{
|
||||
char *chp = entry->field[field_nr];
|
||||
int in_bit_field = 0;
|
||||
if (*chp == '#')
|
||||
lf_indent_suppress(file);
|
||||
while (*chp != '\0')
|
||||
lf_indent_suppress (file);
|
||||
while (*chp != '\0')
|
||||
{
|
||||
if (chp[0] == '{'
|
||||
&& !isspace(chp[1])
|
||||
&& chp[1] != '\0')
|
||||
if (chp[0] == '{' && !isspace (chp[1]) && chp[1] != '\0')
|
||||
{
|
||||
in_bit_field = 1;
|
||||
nr += lf_putchr(file, '_');
|
||||
nr += lf_putchr (file, '_');
|
||||
}
|
||||
else if (in_bit_field && chp[0] == ':')
|
||||
{
|
||||
nr += lf_putchr(file, '_');
|
||||
nr += lf_putchr (file, '_');
|
||||
}
|
||||
else if (in_bit_field && *chp == '}')
|
||||
{
|
||||
nr += lf_putchr(file, '_');
|
||||
nr += lf_putchr (file, '_');
|
||||
in_bit_field = 0;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
nr += lf_putchr(file, *chp);
|
||||
nr += lf_putchr (file, *chp);
|
||||
}
|
||||
chp++;
|
||||
}
|
||||
@@ -541,17 +531,14 @@ table_print_code (lf *file,
|
||||
line.line_nr += field_nr;
|
||||
error (&line, "Bit field brace miss match\n");
|
||||
}
|
||||
nr += lf_putchr(file, '\n');
|
||||
nr += lf_putchr (file, '\n');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
dump_line_ref (lf *file,
|
||||
char *prefix,
|
||||
const line_ref *line,
|
||||
char *suffix)
|
||||
dump_line_ref (lf *file, char *prefix, const line_ref *line, char *suffix)
|
||||
{
|
||||
lf_printf (file, "%s(line_ref*) 0x%lx", prefix, (long) line);
|
||||
if (line != NULL)
|
||||
@@ -570,17 +557,17 @@ table_entry_type_to_str (table_entry_type type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case table_code_entry: return "code-entry";
|
||||
case table_colon_entry: return "colon-entry";
|
||||
case table_code_entry:
|
||||
return "code-entry";
|
||||
case table_colon_entry:
|
||||
return "colon-entry";
|
||||
}
|
||||
return "*invalid*";
|
||||
}
|
||||
|
||||
void
|
||||
dump_table_entry(lf *file,
|
||||
char *prefix,
|
||||
const table_entry *entry,
|
||||
char *suffix)
|
||||
dump_table_entry (lf *file,
|
||||
char *prefix, const table_entry *entry, char *suffix)
|
||||
{
|
||||
lf_printf (file, "%s(table_entry*) 0x%lx", prefix, (long) entry);
|
||||
if (entry != NULL)
|
||||
@@ -604,7 +591,7 @@ dump_table_entry(lf *file,
|
||||
|
||||
#ifdef MAIN
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
table *t;
|
||||
table_entry *entry;
|
||||
@@ -613,7 +600,7 @@ main(int argc, char **argv)
|
||||
|
||||
if (argc != 2)
|
||||
{
|
||||
printf("Usage: table <file>\n");
|
||||
printf ("Usage: table <file>\n");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
@@ -625,7 +612,7 @@ main(int argc, char **argv)
|
||||
{
|
||||
char line[10];
|
||||
entry = table_read (t);
|
||||
line_nr ++;
|
||||
line_nr++;
|
||||
sprintf (line, "(%d ", line_nr);
|
||||
dump_table_entry (l, line, entry, ")\n");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user