xref: /openbsd-src/gnu/usr.bin/binutils/gdb/c-lang.h (revision 63addd46c1e40ca0f49488ddcdc4ab598023b0c1)
1e93f7393Sniklas /* C language support definitions for GDB, the GNU debugger.
2b725ae77Skettenis    Copyright 1992, 1994, 1995, 1996, 1997, 1998, 2000, 2002
3b725ae77Skettenis    Free Software Foundation, Inc.
4e93f7393Sniklas 
5e93f7393Sniklas    This file is part of GDB.
6e93f7393Sniklas 
7e93f7393Sniklas    This program is free software; you can redistribute it and/or modify
8e93f7393Sniklas    it under the terms of the GNU General Public License as published by
9e93f7393Sniklas    the Free Software Foundation; either version 2 of the License, or
10e93f7393Sniklas    (at your option) any later version.
11e93f7393Sniklas 
12e93f7393Sniklas    This program is distributed in the hope that it will be useful,
13e93f7393Sniklas    but WITHOUT ANY WARRANTY; without even the implied warranty of
14e93f7393Sniklas    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15e93f7393Sniklas    GNU General Public License for more details.
16e93f7393Sniklas 
17e93f7393Sniklas    You should have received a copy of the GNU General Public License
18e93f7393Sniklas    along with this program; if not, write to the Free Software
19b725ae77Skettenis    Foundation, Inc., 59 Temple Place - Suite 330,
20b725ae77Skettenis    Boston, MA 02111-1307, USA.  */
21e93f7393Sniklas 
22e93f7393Sniklas 
23b725ae77Skettenis #if !defined (C_LANG_H)
24b725ae77Skettenis #define C_LANG_H 1
25e93f7393Sniklas 
26b725ae77Skettenis struct ui_file;
27*63addd46Skettenis struct language_arch_info;
28e93f7393Sniklas 
29b725ae77Skettenis #include "value.h"
30b725ae77Skettenis #include "macroexp.h"
31e93f7393Sniklas 
32e93f7393Sniklas 
33b725ae77Skettenis extern int c_parse (void);	/* Defined in c-exp.y */
34b725ae77Skettenis 
35b725ae77Skettenis extern void c_error (char *);	/* Defined in c-exp.y */
36b725ae77Skettenis 
37b725ae77Skettenis /* Defined in c-typeprint.c */
38b725ae77Skettenis extern void c_print_type (struct type *, char *, struct ui_file *, int,
39b725ae77Skettenis 			  int);
40b725ae77Skettenis 
41b725ae77Skettenis extern int c_val_print (struct type *, char *, int, CORE_ADDR,
42b725ae77Skettenis 			struct ui_file *, int, int, int,
43b725ae77Skettenis 			enum val_prettyprint);
44b725ae77Skettenis 
45b725ae77Skettenis extern int c_value_print (struct value *, struct ui_file *, int,
46b725ae77Skettenis 			  enum val_prettyprint);
47e93f7393Sniklas 
48e93f7393Sniklas /* These are in c-lang.c: */
49e93f7393Sniklas 
50b725ae77Skettenis extern void c_printchar (int, struct ui_file *);
51e93f7393Sniklas 
52b725ae77Skettenis extern void c_printstr (struct ui_file * stream, char *string,
53b725ae77Skettenis 			unsigned int length, int width,
54b725ae77Skettenis 			int force_ellipses);
55e93f7393Sniklas 
56b725ae77Skettenis extern void scan_macro_expansion (char *expansion);
57b725ae77Skettenis extern int scanning_macro_expansion (void);
58b725ae77Skettenis extern void finished_macro_expansion (void);
59e93f7393Sniklas 
60b725ae77Skettenis extern macro_lookup_ftype *expression_macro_lookup_func;
61b725ae77Skettenis extern void *expression_macro_lookup_baton;
62b725ae77Skettenis 
63b725ae77Skettenis extern struct type *c_create_fundamental_type (struct objfile *, int);
64b725ae77Skettenis 
65*63addd46Skettenis extern void c_language_arch_info (struct gdbarch *gdbarch,
66*63addd46Skettenis 				  struct language_arch_info *lai);
67e93f7393Sniklas 
68e93f7393Sniklas /* These are in c-typeprint.c: */
69e93f7393Sniklas 
70b725ae77Skettenis extern void c_type_print_base (struct type *, struct ui_file *, int, int);
71e93f7393Sniklas 
72e93f7393Sniklas /* These are in cp-valprint.c */
73e93f7393Sniklas 
74e93f7393Sniklas extern int vtblprint;		/* Controls printing of vtbl's */
75e93f7393Sniklas 
76b725ae77Skettenis extern int static_field_print;
77e93f7393Sniklas 
78b725ae77Skettenis extern void cp_print_class_member (char *, struct type *, struct ui_file *,
79b725ae77Skettenis 				   char *);
80e93f7393Sniklas 
81b725ae77Skettenis extern void cp_print_class_method (char *, struct type *, struct ui_file *);
82e93f7393Sniklas 
83b725ae77Skettenis extern void cp_print_value_fields (struct type *, struct type *, char *,
84b725ae77Skettenis 				   int, CORE_ADDR, struct ui_file *, int,
85b725ae77Skettenis 				   int, enum val_prettyprint,
86b725ae77Skettenis 				   struct type **, int);
87e93f7393Sniklas 
88b725ae77Skettenis extern int cp_is_vtbl_ptr_type (struct type *);
89b725ae77Skettenis 
90b725ae77Skettenis extern int cp_is_vtbl_member (struct type *);
91b725ae77Skettenis 
92b725ae77Skettenis 
93b725ae77Skettenis #endif /* !defined (C_LANG_H) */
94