* procs.c (scm_setter): Signal WTA if handed an entity or operator
[bpt/guile.git] / libguile / gdb_interface.h
CommitLineData
504388eb 1/* Simple interpreter interface for GDB, the GNU debugger.
1e598865 2 Copyright (C) 1996 Free Software Foundation
504388eb
MD
3
4This file is part of GDB.
5
6This program is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2 of the License, or
9(at your option) any later version.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with this program; if not, write to the Free Software
18Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
20The author can be reached at djurfeldt@nada.kth.se
21Mikael Djurfeldt, SANS/NADA KTH, 10044 STOCKHOLM, SWEDEN */
22
1717856b
JB
23#ifndef GDB_INTERFACE_H
24#define GDB_INTERFACE_H
25
504388eb
MD
26/* This is the header file for GDB's interpreter interface. The
27 interpreter must supply definitions of all symbols declared in this
28 file.
29
30 Before including this file, you must #define GDB_TYPE to be the
31 data type used for communication with the interpreter. */
32
33/* The following macro can be used to anchor the symbols of the
34 interface in your main program. This is necessary if the interface
35 is defined in a library, such as Guile. */
36
37#define GDB_INTERFACE \
38void *gdb_interface[] = { \
39 &gdb_options, \
40 &gdb_language, \
41 &gdb_result, \
42 &gdb_output, \
43 &gdb_output_length, \
01c77a0a
MD
44 (void *) gdb_maybe_valid_type_p, \
45 (void *) gdb_read, \
46 (void *) gdb_eval, \
47 (void *) gdb_print, \
48 (void *) gdb_binding \
8f9dc614 49}
504388eb
MD
50
51/* GDB_OPTIONS is a set of flags informing gdb what features are present
52 in the interface. Currently only one option is supported: */
53
54/* GDB_HAVE_BINDINGS: Set this bit if your interpreter can create new
55 top level bindings on demand (through gdb_top_level_binding) */
56
57#define GDB_HAVE_BINDINGS 1
58
59extern unsigned short gdb_options;
60
61/* GDB_LANGUAGE holds the name of the preferred language mode for this
62 interpreter. For lisp interpreters, the suggested mode is "lisp/c". */
63
64extern char *gdb_language;
65
66/* GDB_RESULT is used for passing results from the interpreter to GDB */
67
68extern GDB_TYPE gdb_result;
69
70/* The interpreter passes strings to GDB in GDB_OUTPUT and
71 GDB_OUTPUT_LENGTH. GDB_OUTPUT should hold the pointer to the
72 string. GDB_OUTPUT_LENGTH should hold its length. The string
73 doesn't need to be terminated by '\0'. */
74
75extern char *gdb_output;
76
77extern int gdb_output_length;
78
504388eb
MD
79/* Return TRUE if the interpreter regards VALUE's type as valid. A
80 lazy implementation is allowed to pass TRUE always. FALSE should
81 only be returned when it is certain that VALUE is not valid.
82
83 In the "lisp/c" language mode, this is used to heuristically
84 discriminate lisp values from C values during printing. */
85
1717856b 86extern int gdb_maybe_valid_type_p SCM_P ((GDB_TYPE value));
504388eb
MD
87
88/* Parse expression in string STR. Store result in GDB_RESULT, then
89 return 0 to indicate success. On error, return -1 to indicate
90 failure. An error string can be passed in GDB_OUTPUT and
91 GDB_OUTPUT_LENGTH. Be careful to set GDB_OUTPUT_LENGTH to zero if
92 no message is passed. Please note that the resulting value should
93 be protected against garbage collection. */
94
1717856b 95extern int gdb_read SCM_P ((char *str));
504388eb
MD
96
97/* Evaluate expression EXP. Store result in GDB_RESULT, then return 0
98 to indicate success. On error, return -1 to indicate failure. Any
99 output (both on success and failure) can be passed in GDB_OUTPUT
100 and GDB_OUTPUT_LENGTH. Be careful to set GDB_OUTPUT_LENGTH to zero
101 if no output is passed. Please note that the resulting lisp object
102 should be protected against garbage collection. */
103
1717856b 104extern int gdb_eval SCM_P ((GDB_TYPE exp));
504388eb
MD
105
106/* Print VALUE. Store output in GDB_OUTPUT and GDB_OUTPUT_LENGTH.
107 Return 0 to indicate success. On error, return -1 to indicate
108 failure. GDB will not look at GDB_OUTPUT or GDB_OUTPUT_LENGTH on
109 failure. Note that this function should be robust against strange
110 values. It could in fact be passed any kind of value. */
111
1717856b 112extern int gdb_print SCM_P ((GDB_TYPE value));
504388eb
MD
113
114/* Bind NAME to VALUE in interpreter. (GDB has previously obtained
115 NAME by passing a string to gdb_read.) Return 0 to indicate
116 success or -1 to indicate failure. This feature is optional. GDB
117 will only call this function if the GDB_HAVE_BINDINGS flag is set
118 in gdb_options. Note that GDB may call this function many times
119 for the same name.
120
121 For scheme interpreters, this function should introduce top-level
122 bindings. */
123
1717856b 124extern int gdb_binding SCM_P ((GDB_TYPE name, GDB_TYPE value));
504388eb 125
1717856b 126#endif /* GDB_INTERFACE_H */