gdb
[deliverable/binutils-gdb.git] / gdb / language.h
CommitLineData
c906108c 1/* Source-language-related definitions for GDB.
1bac305b 2
6aba47ca 3 Copyright (C) 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2003, 2004,
9b254dd1 4 2007, 2008 Free Software Foundation, Inc.
1bac305b 5
c906108c
SS
6 Contributed by the Department of Computer Science at the State University
7 of New York at Buffalo.
8
c5aa993b 9 This file is part of GDB.
c906108c 10
c5aa993b
JM
11 This program is free software; you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
a9762ec7 13 the Free Software Foundation; either version 3 of the License, or
c5aa993b 14 (at your option) any later version.
c906108c 15
c5aa993b
JM
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
c906108c 20
c5aa993b 21 You should have received a copy of the GNU General Public License
a9762ec7 22 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
23
24#if !defined (LANGUAGE_H)
25#define LANGUAGE_H 1
26
104c1213 27/* Forward decls for prototypes */
c906108c
SS
28struct value;
29struct objfile;
52f729a7 30struct frame_info;
c906108c 31struct expression;
da3331ec 32struct ui_file;
62dfaa9c 33
c5aa993b 34#define MAX_FORTRAN_DIMS 7 /* Maximum number of F77 array dims */
c906108c
SS
35
36/* range_mode ==
37 range_mode_auto: range_check set automatically to default of language.
38 range_mode_manual: range_check set manually by user. */
39
c5aa993b
JM
40extern enum range_mode
41 {
42 range_mode_auto, range_mode_manual
43 }
44range_mode;
c906108c
SS
45
46/* range_check ==
47 range_check_on: Ranges are checked in GDB expressions, producing errors.
48 range_check_warn: Ranges are checked, producing warnings.
49 range_check_off: Ranges are not checked in GDB expressions. */
50
51extern enum range_check
c5aa993b
JM
52 {
53 range_check_off, range_check_warn, range_check_on
54 }
55range_check;
c906108c
SS
56
57/* type_mode ==
58 type_mode_auto: type_check set automatically to default of language
59 type_mode_manual: type_check set manually by user. */
60
c5aa993b
JM
61extern enum type_mode
62 {
63 type_mode_auto, type_mode_manual
64 }
65type_mode;
c906108c
SS
66
67/* type_check ==
68 type_check_on: Types are checked in GDB expressions, producing errors.
69 type_check_warn: Types are checked, producing warnings.
70 type_check_off: Types are not checked in GDB expressions. */
71
72extern enum type_check
c5aa993b
JM
73 {
74 type_check_off, type_check_warn, type_check_on
75 }
76type_check;
63872f9d
JG
77
78/* case_mode ==
79 case_mode_auto: case_sensitivity set upon selection of scope
80 case_mode_manual: case_sensitivity set only by user. */
81
82extern enum case_mode
83 {
84 case_mode_auto, case_mode_manual
85 }
86case_mode;
87
7ca2d3a3
DL
88/* array_ordering ==
89 array_row_major: Arrays are in row major order
90 array_column_major: Arrays are in column major order.*/
91
92extern enum array_ordering
93 {
94 array_row_major, array_column_major
95 }
96array_ordering;
97
98
63872f9d
JG
99/* case_sensitivity ==
100 case_sensitive_on: Case sensitivity in name matching is used
101 case_sensitive_off: Case sensitivity in name matching is not used */
102
103extern enum case_sensitivity
104 {
105 case_sensitive_on, case_sensitive_off
106 }
107case_sensitivity;
9a044a89
TT
108
109
110/* macro_expansion ==
111 macro_expansion_no: No macro expansion is available
112 macro_expansion_c: C-like macro expansion is available */
113
114enum macro_expansion
115 {
116 macro_expansion_no, macro_expansion_c
117 };
118
c906108c 119\f
f290d38e
AC
120/* Per architecture (OS/ABI) language information. */
121
122struct language_arch_info
123{
5a44ea29 124 /* Its primitive types. This is a vector ended by a NULL pointer.
f290d38e
AC
125 These types can be specified by name in parsing types in
126 expressions, regardless of whether the program being debugged
127 actually defines such a type. */
5a44ea29 128 struct type **primitive_type_vector;
f290d38e
AC
129 /* Type of elements of strings. */
130 struct type *string_char_type;
fbb06eb1
UW
131
132 /* Symbol name of type to use as boolean type, if defined. */
133 const char *bool_type_symbol;
134 /* Otherwise, this is the default boolean builtin type. */
135 struct type *bool_type_default;
f290d38e
AC
136};
137
c906108c
SS
138/* Structure tying together assorted information about a language. */
139
140struct language_defn
c5aa993b
JM
141 {
142 /* Name of the language */
c906108c 143
c5aa993b 144 char *la_name;
c906108c 145
c5aa993b 146 /* its symtab language-enum (defs.h) */
c906108c 147
c5aa993b 148 enum language la_language;
c906108c 149
c5aa993b 150 /* Default range checking */
c906108c 151
c5aa993b 152 enum range_check la_range_check;
c906108c 153
c5aa993b 154 /* Default type checking */
c906108c 155
c5aa993b 156 enum type_check la_type_check;
c906108c 157
63872f9d
JG
158 /* Default case sensitivity */
159 enum case_sensitivity la_case_sensitivity;
160
7ca2d3a3
DL
161 /* Multi-dimensional array ordering */
162 enum array_ordering la_array_ordering;
163
9a044a89
TT
164 /* Style of macro expansion, if any, supported by this language. */
165 enum macro_expansion la_macro_expansion;
166
5f9769d1
PH
167 /* Definitions related to expression printing, prefixifying, and
168 dumping */
169
170 const struct exp_descriptor *la_exp_desc;
171
c5aa993b 172 /* Parser function. */
c906108c 173
507f3c78 174 int (*la_parser) (void);
c906108c 175
c5aa993b 176 /* Parser error function */
c906108c 177
507f3c78 178 void (*la_error) (char *);
c906108c 179
e85c3284
PH
180 /* Given an expression *EXPP created by prefixifying the result of
181 la_parser, perform any remaining processing necessary to complete
182 its translation. *EXPP may change; la_post_parser is responsible
183 for releasing its previous contents, if necessary. If
184 VOID_CONTEXT_P, then no value is expected from the expression. */
185
186 void (*la_post_parser) (struct expression ** expp, int void_context_p);
187
d9fcf2fb 188 void (*la_printchar) (int ch, struct ui_file * stream);
c906108c 189
fc1a4b47 190 void (*la_printstr) (struct ui_file * stream, const gdb_byte *string,
d9fcf2fb
JM
191 unsigned int length, int width,
192 int force_ellipses);
c906108c 193
d9fcf2fb 194 void (*la_emitchar) (int ch, struct ui_file * stream, int quoter);
c906108c 195
c5aa993b 196 /* Print a type using syntax appropriate for this language. */
c906108c 197
d9fcf2fb
JM
198 void (*la_print_type) (struct type *, char *, struct ui_file *, int,
199 int);
c906108c 200
5c6ce71d
TT
201 /* Print a typedef using syntax appropriate for this language.
202 TYPE is the underlying type. NEW_SYMBOL is the symbol naming
203 the type. STREAM is the output stream on which to print. */
204
205 void (*la_print_typedef) (struct type *type, struct symbol *new_symbol,
206 struct ui_file *stream);
207
c5aa993b 208 /* Print a value using syntax appropriate for this language. */
c906108c 209
fc1a4b47 210 int (*la_val_print) (struct type *, const gdb_byte *, int, CORE_ADDR,
d9fcf2fb
JM
211 struct ui_file *, int, int, int,
212 enum val_prettyprint);
c906108c 213
c5aa993b 214 /* Print a top-level value using syntax appropriate for this language. */
c906108c 215
d9fcf2fb
JM
216 int (*la_value_print) (struct value *, struct ui_file *,
217 int, enum val_prettyprint);
c906108c 218
f636b87d
AF
219 /* PC is possibly an unknown languages trampoline.
220 If that PC falls in a trampoline belonging to this language,
221 return the address of the first pc in the real function, or 0
222 if it isn't a language tramp for this language. */
52f729a7 223 CORE_ADDR (*skip_trampoline) (struct frame_info *, CORE_ADDR);
f636b87d 224
5f9a71c3
DC
225 /* Now come some hooks for lookup_symbol. */
226
2b2d9e11
VP
227 /* If this is non-NULL, specifies the name that of the implicit
228 local variable that refers to the current object instance. */
5f9a71c3 229
2b2d9e11 230 char *la_name_of_this;
5f9a71c3
DC
231
232 /* This is a function that lookup_symbol will call when it gets to
233 the part of symbol lookup where C looks up static and global
234 variables. */
235
236 struct symbol *(*la_lookup_symbol_nonlocal) (const char *,
237 const char *,
238 const struct block *,
21b556f4 239 const domain_enum);
5f9a71c3 240
b368761e
DC
241 /* Find the definition of the type with the given name. */
242 struct type *(*la_lookup_transparent_type) (const char *);
243
9a3d7dfd
AF
244 /* Return demangled language symbol, or NULL. */
245 char *(*la_demangle) (const char *mangled, int options);
246
31c27f77
JJ
247 /* Return class name of a mangled method name or NULL. */
248 char *(*la_class_name_from_physname) (const char *physname);
249
c5aa993b 250 /* Table for printing expressions */
c906108c 251
c5aa993b 252 const struct op_print *la_op_print_tab;
c906108c 253
c5aa993b
JM
254 /* Zero if the language has first-class arrays. True if there are no
255 array values, and array objects decay to pointers, as in C. */
c906108c 256
c5aa993b 257 char c_style_arrays;
c906108c 258
c5aa993b
JM
259 /* Index to use for extracting the first element of a string. */
260 char string_lower_bound;
c906108c 261
6084f43a
JB
262 /* The list of characters forming word boundaries. */
263 char *(*la_word_break_characters) (void);
264
41d27058
JB
265 /* Should return a NULL terminated array of all symbols which
266 are possible completions for TEXT. WORD is the entire command
267 on which the completion is being made. */
268 char **(*la_make_symbol_completion_list) (char *text, char *word);
269
f290d38e
AC
270 /* The per-architecture (OS/ABI) language information. */
271 void (*la_language_arch_info) (struct gdbarch *,
272 struct language_arch_info *);
273
e79af960
JB
274 /* Print the index of an element of an array. */
275 void (*la_print_array_index) (struct value *index_value,
276 struct ui_file *stream,
277 int format,
278 enum val_prettyprint pretty);
279
41f1b697
DJ
280 /* Return non-zero if TYPE should be passed (and returned) by
281 reference at the language level. */
282 int (*la_pass_by_reference) (struct type *type);
283
c5aa993b
JM
284 /* Add fields above this point, so the magic number is always last. */
285 /* Magic number for compat checking */
286
287 long la_magic;
288
289 };
c906108c
SS
290
291#define LANG_MAGIC 910823L
292
293/* Pointer to the language_defn for our current language. This pointer
294 always points to *some* valid struct; it can be used without checking
295 it for validity.
296
297 The current language affects expression parsing and evaluation
298 (FIXME: it might be cleaner to make the evaluation-related stuff
299 separate exp_opcodes for each different set of semantics. We
300 should at least think this through more clearly with respect to
301 what happens if the language is changed between parsing and
302 evaluation) and printing of things like types and arrays. It does
303 *not* affect symbol-reading-- each source file in a symbol-file has
304 its own language and we should keep track of that regardless of the
305 language when symbols are read. If we want some manual setting for
306 the language of symbol files (e.g. detecting when ".c" files are
7e73cedf 307 C++), it should be a separate setting from the current_language. */
c906108c
SS
308
309extern const struct language_defn *current_language;
310
311/* Pointer to the language_defn expected by the user, e.g. the language
312 of main(), or the language we last mentioned in a message, or C. */
313
314extern const struct language_defn *expected_language;
315
316/* language_mode ==
317 language_mode_auto: current_language automatically set upon selection
c5aa993b 318 of scope (e.g. stack frame)
c906108c
SS
319 language_mode_manual: current_language set only by user. */
320
321extern enum language_mode
c5aa993b
JM
322 {
323 language_mode_auto, language_mode_manual
324 }
325language_mode;
b62f3443 326
fbb06eb1
UW
327struct type *language_bool_type (const struct language_defn *l,
328 struct gdbarch *gdbarch);
329
b62f3443
JB
330struct type *language_string_char_type (const struct language_defn *l,
331 struct gdbarch *gdbarch);
332
333struct type *language_lookup_primitive_type_by_name (const struct language_defn *l,
334 struct gdbarch *gdbarch,
335 const char *name);
336
c906108c
SS
337\f
338/* These macros define the behaviour of the expression
339 evaluator. */
340
341/* Should we strictly type check expressions? */
342#define STRICT_TYPE (type_check != type_check_off)
343
344/* Should we range check values against the domain of their type? */
345#define RANGE_CHECK (range_check != range_check_off)
346
347/* "cast" really means conversion */
348/* FIXME -- should be a setting in language_defn */
349#define CAST_IS_CONVERSION (current_language->la_language == language_c || \
806e6073
AF
350 current_language->la_language == language_cplus || \
351 current_language->la_language == language_objc)
c906108c 352
a14ed312 353extern void language_info (int);
c906108c 354
a14ed312 355extern enum language set_language (enum language);
c906108c 356\f
c5aa993b 357
c906108c
SS
358/* This page contains functions that return things that are
359 specific to languages. Each of these functions is based on
360 the current setting of working_lang, which the user sets
361 with the "set language" command. */
362
c906108c
SS
363#define LA_PRINT_TYPE(type,varstring,stream,show,level) \
364 (current_language->la_print_type(type,varstring,stream,show,level))
365
5c6ce71d
TT
366#define LA_PRINT_TYPEDEF(type,new_symbol,stream) \
367 (current_language->la_print_typedef(type,new_symbol,stream))
368
c906108c
SS
369#define LA_VAL_PRINT(type,valaddr,offset,addr,stream,fmt,deref,recurse,pretty) \
370 (current_language->la_val_print(type,valaddr,offset,addr,stream,fmt,deref, \
371 recurse,pretty))
372#define LA_VALUE_PRINT(val,stream,fmt,pretty) \
373 (current_language->la_value_print(val,stream,fmt,pretty))
374
c906108c
SS
375#define LA_PRINT_CHAR(ch, stream) \
376 (current_language->la_printchar(ch, stream))
377#define LA_PRINT_STRING(stream, string, length, width, force_ellipses) \
378 (current_language->la_printstr(stream, string, length, width, force_ellipses))
379#define LA_EMIT_CHAR(ch, stream, quoter) \
380 (current_language->la_emitchar(ch, stream, quoter))
381
e79af960
JB
382#define LA_PRINT_ARRAY_INDEX(index_value, stream, format, pretty) \
383 (current_language->la_print_array_index(index_value, stream, format, pretty))
384
c906108c
SS
385/* Test a character to decide whether it can be printed in literal form
386 or needs to be printed in another representation. For example,
387 in C the literal form of the character with octal value 141 is 'a'
388 and the "other representation" is '\141'. The "other representation"
389 is program language dependent. */
390
391#define PRINT_LITERAL_FORM(c) \
392 ((c) >= 0x20 \
393 && ((c) < 0x7F || (c) >= 0xA0) \
394 && (!sevenbit_strings || (c) < 0x80))
395
7acb79c8
AC
396#if 0
397/* FIXME: cagney/2000-03-04: This function does not appear to be used.
398 It can be deleted once 5.0 has been released. */
c4093a6a
JM
399/* Return a string that contains the hex digits of the number. No preceeding
400 "0x" */
401
a14ed312 402extern char *longest_raw_hex_string (LONGEST);
7acb79c8 403#endif
c4093a6a 404
c906108c
SS
405/* Type predicates */
406
a14ed312 407extern int simple_type (struct type *);
c906108c 408
a14ed312 409extern int ordered_type (struct type *);
c906108c 410
a14ed312 411extern int same_type (struct type *, struct type *);
c906108c 412
a14ed312 413extern int integral_type (struct type *);
c906108c 414
a14ed312 415extern int numeric_type (struct type *);
c906108c 416
a14ed312 417extern int character_type (struct type *);
c906108c 418
a14ed312 419extern int boolean_type (struct type *);
c906108c 420
a14ed312 421extern int float_type (struct type *);
c906108c 422
a14ed312 423extern int pointer_type (struct type *);
c906108c 424
a14ed312 425extern int structured_type (struct type *);
c906108c
SS
426
427/* Checks Binary and Unary operations for semantic type correctness */
428/* FIXME: Does not appear to be used */
429#define unop_type_check(v,o) binop_type_check((v),NULL,(o))
430
a14ed312 431extern void binop_type_check (struct value *, struct value *, int);
c906108c
SS
432
433/* Error messages */
434
ddfe3c15 435extern void type_error (const char *, ...) ATTR_FORMAT (printf, 1, 2);
c906108c 436
ddfe3c15 437extern void range_error (const char *, ...) ATTR_FORMAT (printf, 1, 2);
c906108c
SS
438
439/* Data: Does this value represent "truth" to the current language? */
440
a14ed312 441extern int value_true (struct value *);
c906108c 442
c906108c
SS
443/* Misc: The string representing a particular enum language. */
444
a14ed312 445extern enum language language_enum (char *str);
c906108c 446
a14ed312 447extern const struct language_defn *language_def (enum language);
7a292a7a 448
a14ed312 449extern char *language_str (enum language);
c906108c
SS
450
451/* Add a language to the set known by GDB (at initialization time). */
452
a14ed312 453extern void add_language (const struct language_defn *);
c906108c 454
a14ed312 455extern enum language get_frame_language (void); /* In stack.c */
c906108c 456
f636b87d
AF
457/* Check for a language-specific trampoline. */
458
52f729a7 459extern CORE_ADDR skip_language_trampoline (struct frame_info *, CORE_ADDR pc);
f636b87d 460
9a3d7dfd
AF
461/* Return demangled language symbol, or NULL. */
462extern char *language_demangle (const struct language_defn *current_language,
463 const char *mangled, int options);
464
31c27f77
JJ
465/* Return class name from physname, or NULL. */
466extern char *language_class_name_from_physname (const struct language_defn *,
467 const char *physname);
468
9f0a5303
JB
469/* Splitting strings into words. */
470extern char *default_word_break_characters (void);
471
e79af960
JB
472/* Print the index of an array element using the C99 syntax. */
473extern void default_print_array_index (struct value *index_value,
474 struct ui_file *stream,
475 int format,
476 enum val_prettyprint pretty);
477
41f1b697
DJ
478/* Return non-zero if TYPE should be passed (and returned) by
479 reference at the language level. */
480int language_pass_by_reference (struct type *type);
481
482/* Return zero; by default, types are passed by value at the language
483 level. The target ABI may pass or return some structs by reference
484 independent of this. */
485int default_pass_by_reference (struct type *type);
486
5c6ce71d
TT
487/* The default implementation of la_print_typedef. */
488void default_print_typedef (struct type *type, struct symbol *new_symbol,
489 struct ui_file *stream);
490
c5aa993b 491#endif /* defined (LANGUAGE_H) */
This page took 0.858246 seconds and 4 git commands to generate.