Mercurial > hg > CbC > CbC_gcc
annotate gcc/gengtype.h @ 55:77e2b8dfacca gcc-4.4.5
update it from 4.4.3 to 4.5.0
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 12 Feb 2010 23:39:51 +0900 |
parents | a06113de4d67 |
children | b7f97abdc517 |
rev | line source |
---|---|
0 | 1 /* Process source files and output type information. |
2 Copyright (C) 2002, 2003, 2004, 2007, 2008 Free Software Foundation, Inc. | |
3 | |
4 This file is part of GCC. | |
5 | |
6 GCC is free software; you can redistribute it and/or modify it under | |
7 the terms of the GNU General Public License as published by the Free | |
8 Software Foundation; either version 3, or (at your option) any later | |
9 version. | |
10 | |
11 GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with GCC; see the file COPYING3. If not see | |
18 <http://www.gnu.org/licenses/>. */ | |
19 | |
20 #ifndef GCC_GENGTYPE_H | |
21 #define GCC_GENGTYPE_H | |
22 | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
23 /* A file position, mostly for error messages. |
0 | 24 The FILE element may be compared using pointer equality. */ |
25 struct fileloc { | |
26 const char *file; | |
27 int line; | |
28 }; | |
29 | |
30 /* Data types handed around within, but opaque to, the lexer and parser. */ | |
31 typedef struct pair *pair_p; | |
32 typedef struct type *type_p; | |
33 typedef const struct type *const_type_p; | |
34 typedef struct options *options_p; | |
35 | |
36 /* Variables used to communicate between the lexer and the parser. */ | |
37 extern int lexer_toplevel_done; | |
38 extern struct fileloc lexer_line; | |
39 | |
40 /* Print an error message. */ | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
41 extern void error_at_line |
0 | 42 (struct fileloc *pos, const char *msg, ...) ATTRIBUTE_PRINTF_2; |
43 | |
44 /* Like asprintf, but calls fatal() on out of memory. */ | |
45 extern char *xasprintf(const char *, ...) ATTRIBUTE_PRINTF_1; | |
46 | |
47 /* Constructor routines for types. */ | |
48 extern void do_typedef (const char *s, type_p t, struct fileloc *pos); | |
49 extern void do_scalar_typedef (const char *s, struct fileloc *pos); | |
50 extern type_p resolve_typedef (const char *s, struct fileloc *pos); | |
51 extern type_p new_structure (const char *name, int isunion, | |
52 struct fileloc *pos, pair_p fields, | |
53 options_p o); | |
54 extern type_p find_structure (const char *s, int isunion); | |
55 extern type_p create_scalar_type (const char *name); | |
56 extern type_p create_pointer (type_p t); | |
57 extern type_p create_array (type_p t, const char *len); | |
58 extern options_p create_option (options_p, const char *name, const void *info); | |
59 extern options_p create_nested_ptr_option (options_p, type_p t, | |
60 const char *from, const char *to); | |
61 extern pair_p create_field_at (pair_p next, type_p type, const char *name, | |
62 options_p opt, struct fileloc *pos); | |
63 extern pair_p nreverse_pairs (pair_p list); | |
64 extern type_p adjust_field_type (type_p, options_p); | |
65 extern void note_variable (const char *s, type_p t, options_p o, | |
66 struct fileloc *pos); | |
67 extern void note_def_vec (const char *type_name, bool is_scalar, | |
68 struct fileloc *pos); | |
69 extern void note_def_vec_alloc (const char *type, const char *astrat, | |
70 struct fileloc *pos); | |
71 | |
72 /* Lexer and parser routines. */ | |
73 extern int yylex (const char **yylval); | |
74 extern void yybegin (const char *fname); | |
75 extern void yyend (void); | |
76 extern void parse_file (const char *name); | |
77 extern bool hit_error; | |
78 | |
79 /* Token codes. */ | |
80 enum { | |
81 EOF_TOKEN = 0, | |
82 | |
83 /* Per standard convention, codes in the range (0, UCHAR_MAX] | |
84 represent single characters with those character codes. */ | |
85 | |
86 CHAR_TOKEN_OFFSET = UCHAR_MAX + 1, | |
87 GTY_TOKEN = CHAR_TOKEN_OFFSET, | |
88 TYPEDEF, | |
89 EXTERN, | |
90 STATIC, | |
91 UNION, | |
92 STRUCT, | |
93 ENUM, | |
94 VEC_TOKEN, | |
95 DEFVEC_OP, | |
96 DEFVEC_I, | |
97 DEFVEC_ALLOC, | |
98 ELLIPSIS, | |
99 PTR_ALIAS, | |
100 NESTED_PTR, | |
101 PARAM_IS, | |
102 NUM, | |
103 SCALAR, | |
104 ID, | |
105 STRING, | |
106 CHAR, | |
107 ARRAY, | |
108 | |
109 /* print_token assumes that any token >= FIRST_TOKEN_WITH_VALUE may have | |
110 a meaningful value to be printed. */ | |
111 FIRST_TOKEN_WITH_VALUE = PARAM_IS | |
112 }; | |
113 #endif |