2009-10-23 Tristan Gingold <gingold@adacore.com>
[deliverable/binutils-gdb.git] / gdb / scm-lang.h
CommitLineData
d4310edb
LC
1/* Scheme/Guile language support routines for GDB, the GNU debugger.
2
0fb0cc75 3 Copyright (C) 1995, 1996, 1998, 1999, 2000, 2003, 2005, 2008, 2009
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
TT
52 struct ui_file *, int,
53 const struct value_print_options *);
d4310edb 54
e17a4113 55extern LONGEST scm_get_field (LONGEST, int, int, enum bfd_endian);
d4310edb
LC
56
57extern int is_scmvalue_type (struct type *);
58
6c7a06a3 59extern void scm_printchar (int, struct type *, struct ui_file *);
d4310edb
LC
60
61extern struct value *scm_evaluate_string (char *, int);
62
d4310edb
LC
63extern int scm_parse (void);
64
65extern LONGEST scm_unpack (struct type *, const gdb_byte *, enum type_code);
6ceaaae5
UW
66
67/* Scheme types */
68
69struct builtin_scm_type
70{
71 struct type *builtin_scm;
72};
73
74/* Return the Scheme type table for the specified architecture. */
75extern const struct builtin_scm_type *builtin_scm_type (struct gdbarch *gdbarch);
76
This page took 0.240009 seconds and 4 git commands to generate.