OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [VER_5_3/] [gdb-5.3/] [sim/] [igen/] [table.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1181 sfurman
/* The IGEN simulator generator for GDB, the GNU Debugger.
2
 
3
   Copyright 2002 Free Software Foundation, Inc.
4
 
5
   Contributed by Andrew Cagney.
6
 
7
   This file is part of GDB.
8
 
9
   This program is free software; you can redistribute it and/or modify
10
   it under the terms of the GNU General Public License as published by
11
   the Free Software Foundation; either version 2 of the License, or
12
   (at your option) any later version.
13
 
14
   This program is distributed in the hope that it will be useful,
15
   but WITHOUT ANY WARRANTY; without even the implied warranty of
16
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
   GNU General Public License for more details.
18
 
19
   You should have received a copy of the GNU General Public License
20
   along with this program; if not, write to the Free Software
21
   Foundation, Inc., 59 Temple Place - Suite 330,
22
   Boston, MA 02111-1307, USA.  */
23
 
24
 
25
/* Read a table, line by line, from a file.
26
 
27
   A table line has several forms:
28
 
29
   Field line:
30
 
31
       <text> { ":" <text> }
32
       type == table_colon_entry
33
 
34
       Fields points to a NULL terminated list of pointers.
35
 
36
   Tab indented block:
37
 
38
     <tab> <text> <nl> { <tab> <text> <nl> }
39
     type == table_code_entry
40
 
41
     The leading tab at the start of each line is discarded.
42
     fields[i] is the i'th line with the <nl> discarded.
43
 
44
 
45
   Code block:
46
 
47
     "{" <ignore-text> <nl> { <text> <nl> } "}" <ignore-text> <nl>
48
     type == table_code_entry
49
 
50
     The leading/trailing {/} lines are discarded.
51
     Lines containing two leading spaces have those spaces striped.
52
     fields[i] is the i'th line with the <nl> discarded.
53
 
54
   In addition, the table parser reconises and handles internally the
55
   following (when not in a code block):
56
 
57
     "#" <line-nr> '"' <file> '"'
58
 
59
     As per CPP/CC, treat following lines as if they were taken from
60
     <file> starting at <line-nr>
61
 
62
   No support for CPP's "#if/#else/#endif" style conditions are
63
   planned. */
64
 
65
typedef struct _table table;
66
 
67
typedef enum
68
{
69
  table_colon_entry,
70
  table_code_entry,
71
}
72
table_entry_type;
73
 
74
 
75
typedef struct _table_entry table_entry;
76
struct _table_entry
77
{
78
  table *file;
79
  line_ref *line;
80
  table_entry_type type;
81
  int nr_fields;
82
  char **field;
83
};
84
 
85
/* List of directories to search when opening a pushed file.  Current
86
   directory is always searched first */
87
typedef struct _table_include table_include;
88
struct _table_include
89
{
90
  char *dir;
91
  table_include *next;
92
};
93
 
94
 
95
/* Open/read a table file.  Since the file is read once during open
96
   (and then closed immediatly) there is no close method. */
97
 
98
extern table *table_open (const char *file_name);
99
 
100
extern table_entry *table_read (table *file);
101
 
102
 
103
/* Push the the state of the current file and open FILE_NAME.  When
104
   the end of FILE_NAME is reached, return to the pushed file */
105
 
106
extern void table_push
107
  (table *file, line_ref *line, table_include *search, const char *file_name);
108
 
109
 
110
/* Expand the specified field_nr using the internal expansion table.
111
   A field is only expanded when explicitly specified.  */
112
 
113
extern void table_expand_field (table_entry *entry, int field_nr);
114
 
115
 
116
/* Given a code entry, write the code to FILE.  Since any
117
   leading/trailing braces were striped as part of the read, they are
118
   not written. */
119
 
120
extern void table_print_code (lf *file, table_entry *entry);
121
 
122
 
123
/* Debugging */
124
 
125
extern void dump_line_ref
126
  (lf *file, char *prefix, const line_ref *line, char *suffix);
127
 
128
extern void dump_table_entry
129
  (lf *file, char *prefix, const table_entry *entry, char *suffix);
130
 
131
 
132
 
133
/* Utilities for skipping around text */
134
 
135
extern char *skip_digits (char *chp);
136
 
137
extern char *skip_spaces (char *chp);
138
 
139
extern char *skip_to_separator (char *chp, char *separators);
140
 
141
extern char *back_spaces (char *start, char *chp);

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.