diff options
Diffstat (limited to 'sim/igen/table.h')
-rw-r--r-- | sim/igen/table.h | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/sim/igen/table.h b/sim/igen/table.h deleted file mode 100644 index e0bc81bf38e..00000000000 --- a/sim/igen/table.h +++ /dev/null @@ -1,155 +0,0 @@ -/* This file is part of the program psim. - - Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - */ - - -/* Read a table, line by line, from a file. - - A table line has several forms: - - Field line: - - <text> { ":" <text> } - type == table_colon_entry - - Fields points to a NULL terminated list of pointers. - - Tab indented block: - - <tab> <text> <nl> { <tab> <text> <nl> } - type == table_code_entry - - The leading tab at the start of each line is discarded. - fields[i] is the i'th line with the <nl> discarded. - - - Code block: - - "{" <ignore-text> <nl> { <text> <nl> } "}" <ignore-text> <nl> - type == table_code_entry - - The leading/trailing {/} lines are discarded. - Lines containing two leading spaces have those spaces striped. - fields[i] is the i'th line with the <nl> discarded. - - In addition, the table parser reconises and handles internally the - following (when not in a code block): - - "#" <line-nr> '"' <file> '"' - - As per CPP/CC, treat following lines as if they were taken from - <file> starting at <line-nr> - - No support for CPP's "#if/#else/#endif" style conditions are - planned. */ - -typedef struct _table table; - -typedef enum { - table_colon_entry, - table_code_entry, -} table_entry_type; - - -typedef struct _table_entry table_entry; -struct _table_entry { - table *file; - line_ref *line; - table_entry_type type; - int nr_fields; - char **field; -}; - -/* List of directories to search when opening a pushed file. Current - directory is always searched first */ -typedef struct _table_include table_include; -struct _table_include { - char *dir; - table_include *next; -}; - - -/* Open/read a table file. Since the file is read once during open - (and then closed immediatly) there is no close method. */ - -extern table *table_open -(const char *file_name); - -extern table_entry *table_read -(table *file); - - -/* Push the the state of the current file and open FILE_NAME. When - the end of FILE_NAME is reached, return to the pushed file */ - -extern void table_push -(table *file, - line_ref *line, - table_include *search, - const char *file_name); - - -/* Expand the specified field_nr using the internal expansion table. - A field is only expanded when explicitly specified. */ - -extern void table_expand_field -(table_entry *entry, - int field_nr); - - -/* Given a code entry, write the code to FILE. Since any - leading/trailing braces were striped as part of the read, they are - not written. */ - -extern void table_print_code -(lf *file, - table_entry *entry); - - -/* Debugging */ - -extern void dump_line_ref -(lf *file, - char *prefix, - const line_ref *line, - char *suffix); - -extern void dump_table_entry -(lf *file, - char *prefix, - const table_entry *entry, - char *suffix); - - - -/* Utilities for skipping around text */ - -extern char *skip_digits -(char *chp); - -extern char *skip_spaces -(char *chp); - -extern char *skip_to_separator -(char *chp, - char *separators); - -extern char *back_spaces -(char *start, - char *chp); |