OLD | NEW |
1 /* Definitions for expressions stored in reversed prefix form, for GDB. | 1 /* Definitions for expressions stored in reversed prefix form, for GDB. |
2 | 2 |
3 Copyright (C) 1986, 1989, 1992, 1994, 2000, 2003, 2005, 2007-2012 | 3 Copyright (C) 1986-2013 Free Software Foundation, Inc. |
4 Free Software Foundation, Inc. | |
5 | 4 |
6 This file is part of GDB. | 5 This file is part of GDB. |
7 | 6 |
8 This program is free software; you can redistribute it and/or modify | 7 This program is free software; you can redistribute it and/or modify |
9 it under the terms of the GNU General Public License as published by | 8 it under the terms of the GNU General Public License as published by |
10 the Free Software Foundation; either version 3 of the License, or | 9 the Free Software Foundation; either version 3 of the License, or |
11 (at your option) any later version. | 10 (at your option) any later version. |
12 | 11 |
13 This program is distributed in the hope that it will be useful, | 12 This program is distributed in the hope that it will be useful, |
14 but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 enum exp_opcode opcode; | 65 enum exp_opcode opcode; |
67 struct symbol *symbol; | 66 struct symbol *symbol; |
68 LONGEST longconst; | 67 LONGEST longconst; |
69 DOUBLEST doubleconst; | 68 DOUBLEST doubleconst; |
70 gdb_byte decfloatconst[16]; | 69 gdb_byte decfloatconst[16]; |
71 /* Really sizeof (union exp_element) characters (or less for the last | 70 /* Really sizeof (union exp_element) characters (or less for the last |
72 element of a string). */ | 71 element of a string). */ |
73 char string; | 72 char string; |
74 struct type *type; | 73 struct type *type; |
75 struct internalvar *internalvar; | 74 struct internalvar *internalvar; |
76 struct block *block; | 75 const struct block *block; |
77 struct objfile *objfile; | 76 struct objfile *objfile; |
78 }; | 77 }; |
79 | 78 |
80 struct expression | 79 struct expression |
81 { | 80 { |
82 const struct language_defn *language_defn; /* language it was | 81 const struct language_defn *language_defn; /* language it was |
83 entered in. */ | 82 entered in. */ |
84 struct gdbarch *gdbarch; /* architecture it was parsed in. */ | 83 struct gdbarch *gdbarch; /* architecture it was parsed in. */ |
85 int nelts; | 84 int nelts; |
86 union exp_element elts[1]; | 85 union exp_element elts[1]; |
87 }; | 86 }; |
88 | 87 |
89 /* Macros for converting between number of expression elements and bytes | 88 /* Macros for converting between number of expression elements and bytes |
90 to store that many expression elements. */ | 89 to store that many expression elements. */ |
91 | 90 |
92 #define EXP_ELEM_TO_BYTES(elements) \ | 91 #define EXP_ELEM_TO_BYTES(elements) \ |
93 ((elements) * sizeof (union exp_element)) | 92 ((elements) * sizeof (union exp_element)) |
94 #define BYTES_TO_EXP_ELEM(bytes) \ | 93 #define BYTES_TO_EXP_ELEM(bytes) \ |
95 (((bytes) + sizeof (union exp_element) - 1) / sizeof (union exp_element)) | 94 (((bytes) + sizeof (union exp_element) - 1) / sizeof (union exp_element)) |
96 | 95 |
97 /* From parse.c */ | 96 /* From parse.c */ |
98 | 97 |
99 extern struct expression *parse_expression (char *); | 98 extern struct expression *parse_expression (const char *); |
100 | 99 |
101 extern struct type *parse_field_expression (char *, char **); | 100 extern struct type *parse_expression_for_completion (const char *, char **, |
| 101 » » » » » » enum type_code *); |
102 | 102 |
103 extern struct expression *parse_exp_1 (char **, CORE_ADDR pc, struct block *, | 103 extern struct expression *parse_exp_1 (const char **, CORE_ADDR pc, |
104 » » » » int); | 104 » » » » const struct block *, int); |
105 | 105 |
106 /* For use by parsers; set if we want to parse an expression and | 106 /* For use by parsers; set if we want to parse an expression and |
107 attempt to complete a field name. */ | 107 attempt completion. */ |
108 extern int in_parse_field; | 108 extern int parse_completion; |
109 | 109 |
110 /* The innermost context required by the stack and register variables | 110 /* The innermost context required by the stack and register variables |
111 we've encountered so far. To use this, set it to NULL, then call | 111 we've encountered so far. To use this, set it to NULL, then call |
112 parse_<whatever>, then look at it. */ | 112 parse_<whatever>, then look at it. */ |
113 extern struct block *innermost_block; | 113 extern const struct block *innermost_block; |
114 | 114 |
115 /* From eval.c */ | 115 /* From eval.c */ |
116 | 116 |
117 /* Values of NOSIDE argument to eval_subexp. */ | 117 /* Values of NOSIDE argument to eval_subexp. */ |
118 | 118 |
119 enum noside | 119 enum noside |
120 { | 120 { |
121 EVAL_NORMAL, | 121 EVAL_NORMAL, |
122 EVAL_SKIP, /* Only effect is to increment pos. */ | 122 EVAL_SKIP, /* Only effect is to increment pos. */ |
123 EVAL_AVOID_SIDE_EFFECTS /* Don't modify any variables or | 123 EVAL_AVOID_SIDE_EFFECTS /* Don't modify any variables or |
124 call any functions. The value | 124 call any functions. The value |
125 returned will have the correct | 125 returned will have the correct |
126 type, and will have an | 126 type, and will have an |
127 approximately correct lvalue | 127 approximately correct lvalue |
128 type (inaccuracy: anything that is | 128 type (inaccuracy: anything that is |
129 listed as being in a register in | 129 listed as being in a register in |
130 the function in which it was | 130 the function in which it was |
131 » » » » declared will be lval_register). */ | 131 » » » » declared will be lval_register). |
| 132 » » » » Ideally this would not even read |
| 133 » » » » target memory, but currently it |
| 134 » » » » does in many situations. */ |
132 }; | 135 }; |
133 | 136 |
134 extern struct value *evaluate_subexp_standard | 137 extern struct value *evaluate_subexp_standard |
135 (struct type *, struct expression *, int *, enum noside); | 138 (struct type *, struct expression *, int *, enum noside); |
136 | 139 |
137 /* From expprint.c */ | 140 /* From expprint.c */ |
138 | 141 |
139 extern void print_expression (struct expression *, struct ui_file *); | 142 extern void print_expression (struct expression *, struct ui_file *); |
140 | 143 |
141 extern char *op_name (struct expression *exp, enum exp_opcode opcode); | 144 extern char *op_name (struct expression *exp, enum exp_opcode opcode); |
142 | 145 |
143 extern char *op_string (enum exp_opcode); | 146 extern char *op_string (enum exp_opcode); |
144 | 147 |
145 extern void dump_raw_expression (struct expression *, | 148 extern void dump_raw_expression (struct expression *, |
146 struct ui_file *, char *); | 149 struct ui_file *, char *); |
147 extern void dump_prefix_expression (struct expression *, struct ui_file *); | 150 extern void dump_prefix_expression (struct expression *, struct ui_file *); |
148 | 151 |
149 #endif /* !defined (EXPRESSION_H) */ | 152 #endif /* !defined (EXPRESSION_H) */ |
OLD | NEW |