gdb
[deliverable/binutils-gdb.git] / gdb / scm-lang.h
CommitLineData
d4310edb
LC
1/* Scheme/Guile language support routines for GDB, the GNU debugger.
2
4c38e0a4 3 Copyright (C) 1995, 1996, 1998, 1999, 2000, 2003, 2005, 2008, 2009, 2010
9b254dd1 4 Free Software Foundation, Inc.
d4310edb
LC
5
6 This file is part of GDB.
7
8 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
a9762ec7 10 the Free Software Foundation; either version 3 of the License, or
d4310edb
LC
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
a9762ec7 19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
d4310edb
LC
20
21#define SICP
22#include "scm-tags.h"
23#undef SCM_NCELLP
24#define SCM_NCELLP(x) ((SCM_SIZE-1) & (int)(x))
25#define SCM_ITAG8_DATA(X) ((X)>>8)
26#define SCM_ICHR(x) ((unsigned char)SCM_ITAG8_DATA(x))
27#define SCM_ICHRP(x) (SCM_ITAG8(x) == scm_tc8_char)
28#define scm_tc8_char 0xf4
29#define SCM_IFLAGP(n) ((0x87 & (int)(n))==4)
30#define SCM_ISYMNUM(n) ((int)((n)>>9))
31#define SCM_ISYMCHARS(n) (scm_isymnames[SCM_ISYMNUM(n)])
32#define SCM_ILOCP(n) ((0xff & (int)(n))==0xfc)
33#define SCM_ITAG8(X) ((int)(X) & 0xff)
34#define SCM_TYP7(x) (0x7f & (int)SCM_CAR(x))
35#define SCM_LENGTH(x) (((unsigned long)SCM_CAR(x))>>8)
36#define SCM_NCONSP(x) (1 & (int)SCM_CAR(x))
37#define SCM_NECONSP(x) (SCM_NCONSP(x) && (1 != SCM_TYP3(x)))
e17a4113
UW
38#define SCM_CAR(x) scm_get_field (x, 0, SCM_SIZE, SCM_BYTE_ORDER)
39#define SCM_CDR(x) scm_get_field (x, 1, SCM_SIZE, SCM_BYTE_ORDER)
d4310edb
LC
40#define SCM_VELTS(x) ((SCM *)SCM_CDR(x))
41#define SCM_CLOSCAR(x) (SCM_CAR(x)-scm_tc3_closure)
42#define SCM_CODE(x) SCM_CAR(SCM_CLOSCAR (x))
43#define SCM_MAKINUM(x) (((x)<<2)+2L)
44
45/* Forward decls for prototypes */
46struct value;
47
48extern int scm_value_print (struct value *, struct ui_file *,
79a45b7d 49 const struct value_print_options *);
d4310edb
LC
50
51extern int scm_val_print (struct type *, const gdb_byte *, int, CORE_ADDR,
79a45b7d 52 struct ui_file *, int,
0e03807e 53 const struct value *,
79a45b7d 54 const struct value_print_options *);
d4310edb 55
e17a4113 56extern LONGEST scm_get_field (LONGEST, int, int, enum bfd_endian);
d4310edb
LC
57
58extern int is_scmvalue_type (struct type *);
59
6c7a06a3 60extern void scm_printchar (int, struct type *, struct ui_file *);
d4310edb
LC
61
62extern struct value *scm_evaluate_string (char *, int);
63
d4310edb
LC
64extern int scm_parse (void);
65
66extern LONGEST scm_unpack (struct type *, const gdb_byte *, enum type_code);
6ceaaae5
UW
67
68/* Scheme types */
69
70struct builtin_scm_type
71{
72 struct type *builtin_scm;
73};
74
75/* Return the Scheme type table for the specified architecture. */
76extern const struct builtin_scm_type *builtin_scm_type (struct gdbarch *gdbarch);
77
This page took 0.303759 seconds and 4 git commands to generate.