1 /* This file is part of the program psim. 2 3 Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au> 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program; if not, see <http://www.gnu.org/licenses/>. 17 18 */ 19 20 21 /* load a table into memory */ 22 23 typedef struct _table table; 24 25 typedef struct _table_model_entry table_model_entry; 26 struct _table_model_entry { 27 table_model_entry *next; 28 int line_nr; 29 int nr_fields; 30 char *fields[0]; /* User defined */ 31 }; 32 33 typedef struct _table_entry table_entry; 34 struct _table_entry { 35 int line_nr; 36 int nr_fields; 37 char *file_name; 38 table_model_entry *model_first; 39 table_model_entry *model_last; 40 char *annex; 41 char *fields[0]; /* User defined */ 42 }; 43 44 /* List of directories to search when opening a pushed file. Current 45 directory is always searched first */ 46 typedef struct _table_include table_include; 47 struct _table_include { 48 char *dir; 49 table_include *next; 50 }; 51 52 extern table *table_open 53 (const char *file_name, 54 int max_nr_fields, 55 int max_nr_model_fields); 56 57 extern table_entry *table_entry_read 58 (table *file); 59 60 /* Push the the state of the current file and open FILE_NAME. When 61 the end of FILE_NAME is reached, return to the pushed file */ 62 63 extern void table_push 64 (table *file, 65 table_include *search, 66 const char *file_name, 67 int nr_fields, 68 int nr_model_fields); 69 70 extern void dump_table_entry 71 (table_entry *entry, 72 int indent); 73 74 extern void table_entry_print_cpp_line_nr 75 (lf *file, 76 table_entry *entry); 77