| 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 |