diff options
Diffstat (limited to 'libguile/__scm.h')
-rw-r--r-- | libguile/__scm.h | 375 |
1 files changed, 375 insertions, 0 deletions
diff --git a/libguile/__scm.h b/libguile/__scm.h new file mode 100644 index 000000000..e3c5772ca --- /dev/null +++ b/libguile/__scm.h @@ -0,0 +1,375 @@ +/* DO NOT EDIT --- AUTO-GENERATED --- DO NOT EDIT */ +#line 1 "__scm.hd" +/* classes: h_files */ + +#ifndef __SCMH +#define __SCMH +/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * + * As a special exception, the Free Software Foundation gives permission + * for additional uses of the text contained in its release of GUILE. + * + * The exception is that, if you link the GUILE library with other files + * to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the GUILE library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the + * Free Software Foundation under the name GUILE. If you copy + * code from other Free Software Foundation releases into a copy of + * GUILE, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for GUILE, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + */ + +/* {Supported Options} + * + * These may be defined or undefined. + */ + +/* If the compile FLAG `CAUTIOUS' is #defined then the number of + * arguments is always checked for application of closures. If the + * compile FLAG `RECKLESS' is #defined then they are not checked. + * Otherwise, number of argument checks for closures are made only when + * the function position (whose value is the closure) of a combination is + * not an ILOC or GLOC. When the function position of a combination is a + * symbol it will be checked only the first time it is evaluated because + * it will then be replaced with an ILOC or GLOC. + */ +#undef RECKLESS +#define CAUTIOUS + +/* After looking up a local for the first time, rewrite the + * code graph, caching its position. + */ +#define MEMOIZE_LOCALS + +/* All the number support there is. + */ +#define SCM_FLOATS +#define BIGNUMS + +/* GC should relinquish empty cons-pair arenas. + */ +#define GC_FREE_SEGMENTS + +/* Provide a scheme-accessible count-down timer that + * generates a pseudo-interrupt. + */ +#define TICKS + + +/* Use engineering notation when converting numbers strings? + */ +#undef ENGNOT + +/* Include support for uniform arrays? + * + * Possibly some of the initialization code depends on this + * being defined, but that is a bug and should be fixed. + */ +#define ARRAYS + +#undef SCM_CAREFUL_INTS + +/* {Unsupported Options} + * + * These must be defined. + */ + + +#define CCLO +#define SICP + + + +/* Random options (net yet supported or in final form). */ + +#undef DEBUG_EXTENSIONS +#undef READER_EXTENSIONS +#undef SCM_STACK_LIMIT 20000 +#undef NO_CEVAL_STACK_CHECK +#undef LONGLONGS + +/* Some auto-generated .h files contain unused prototypes + * that need these typedefs. + */ +typedef long long_long; +typedef unsigned long ulong_long; + + + + +/* Define + * + * SCM_CHAR_SCM_CODE_LIMIT == UCHAR_MAX + 1 + * SCM_MOST_POSITIVE_FIXNUM (LONG_MAX>>2) + * SCM_MOST_NEGATIVE_FIXNUM == SCM_SRS((long)LONG_MIN, 2) + */ + +#ifdef HAVE_LIMITSH +# include <limits.h> +# ifdef UCHAR_MAX +# define SCM_CHAR_SCM_CODE_LIMIT (UCHAR_MAX+1L) +# else +# define SCM_CHAR_SCM_CODE_LIMIT 256L +# endif /* def UCHAR_MAX */ +# define SCM_MOST_POSITIVE_FIXNUM (LONG_MAX>>2) +# ifdef _UNICOS /* Stupid cray bug */ +# define SCM_MOST_NEGATIVE_FIXNUM ((long)LONG_MIN/4) +# else +# define SCM_MOST_NEGATIVE_FIXNUM SCM_SRS((long)LONG_MIN, 2) +# endif /* UNICOS */ +#else +# define SCM_CHAR_SCM_CODE_LIMIT 256L +# define SCM_MOST_POSITIVE_FIXNUM ((long)((unsigned long)~0L>>3)) +# if (0 != ~0) +# define SCM_MOST_NEGATIVE_FIXNUM (-SCM_MOST_POSITIVE_FIXNUM-1) +# else +# define SCM_MOST_NEGATIVE_FIXNUM (-SCM_MOST_POSITIVE_FIXNUM) +# endif /* (0 != ~0) */ +#endif /* def HAVE_LIMITSH */ + + +#include <scmconfig.h> +#include "tags.h" + + +#ifdef vms +# ifndef CHEAP_CONTINUATIONS + typedef int jmp_buf[17]; + extern int setjump(jmp_buf env); + extern int longjump(jmp_buf env, int ret); +# define setjmp setjump +# define longjmp longjump +# else +# include <setjmp.h> +# endif +#else /* ndef vms */ +# ifdef _CRAY1 + typedef int jmp_buf[112]; + extern int setjump(jmp_buf env); + extern int longjump(jmp_buf env, int ret); +# define setjmp setjump +# define longjmp longjump +# else /* ndef _CRAY1 */ +# include <setjmp.h> +# endif /* ndef _CRAY1 */ +#endif /* ndef vms */ + + +/* James Clark came up with this neat one instruction fix for + * continuations on the SPARC. It flushes the register windows so + * that all the state of the process is contained in the stack. + */ + +#ifdef sparc +# define SCM_FLUSH_REGISTER_WINDOWS asm("ta 3") +#else +# define SCM_FLUSH_REGISTER_WINDOWS /* empty */ +#endif + +/* If stack is not longword aligned then + */ + +/* #define SHORT_ALIGN */ +#ifdef THINK_C +# define SHORT_ALIGN +#endif +#ifdef MSDOS +# define SHORT_ALIGN +#endif +#ifdef atarist +# define SHORT_ALIGN +#endif + +#ifdef SHORT_ALIGN +typedef short SCM_STACKITEM; +#else +typedef long SCM_STACKITEM; +#endif + + +extern unsigned int scm_async_clock; +#define SCM_ASYNC_TICK if (0 == --scm_async_clock) scm_async_click () + +#ifdef SCM_CAREFUL_INTS +#define SCM_CHECK_NOT_DISABLED \ + if (scm_ints_disabled) \ + fputs("ints already disabled\n", stderr); \ + +#define SCM_CHECK_NOT_ENABLED \ + if (!scm_ints_disabled) \ + fputs("ints already enabled\n", stderr); \ + +#else +#define SCM_CHECK_NOT_DISABLED +#define SCM_CHECK_NOT_ENABLED +#endif + + +#define SCM_DEFER_INTS \ +{ \ + SCM_CHECK_NOT_DISABLED; \ + scm_ints_disabled = 1; \ +} \ + + +#define SCM_ALLOW_INTS_ONLY \ +{ \ + scm_ints_disabled = 0; \ +} \ + + +#define SCM_ALLOW_INTS \ +{ \ + SCM_CHECK_NOT_ENABLED; \ + scm_ints_disabled = 0; \ + SCM_ASYNC_TICK; \ +} \ + + +#define SCM_REDEFER_INTS \ +{ \ + ++scm_ints_disabled; \ +} \ + + +#define SCM_REALLOW_INTS \ +{ \ + --scm_ints_disabled; \ + if (!scm_ints_disabled) \ + SCM_ASYNC_TICK; \ +} \ + + + + + +/** SCM_ASSERT + ** + **/ + + +#ifdef SCM_RECKLESS +#define SCM_ASSERT(_cond, _arg, _pos, _subr) +#define SCM_ASRTGO(_cond, _label) +#else +#define SCM_ASSERT(_cond, _arg, _pos, _subr) \ + if (!(_cond)) \ + scm_wta(_arg, (char *)(_pos), _subr) +#define SCM_ASRTGO(_cond, _label) \ + if (!(_cond)) \ + goto _label +#endif + + +#define SCM_ARGn 0 +#define SCM_ARG1 1 +#define SCM_ARG2 2 +#define SCM_ARG3 3 +#define SCM_ARG4 4 +#define SCM_ARG5 5 +#define SCM_ARG6 6 +#define SCM_ARG7 7 +#define SCM_ARGERR(X) ((X) < SCM_WNA \ + ? (char *)(X) \ + : "wrong type argument") + +/* Following must match entry indexes in scm_errmsgs[]. + * Also, SCM_WNA must follow the last SCM_ARGn in sequence. + */ +#define SCM_WNA 8 +#define SCM_OVSCM_FLOW 9 +#define SCM_OUTOFRANGE 10 +#define SCM_NALLOC 11 +#define SCM_STACK_SCM_OVSCM_FLOW 12 +#define SCM_EXIT 13 + + +/* (...still matching scm_errmsgs) These + * are signals. Signals may become errors + * but are distinguished because they first + * try to invoke a handler that can resume + * the interrupted routine. + */ +#define SCM_HUP_SIGNAL 14 +#define SCM_INT_SIGNAL 15 +#define SCM_FPE_SIGNAL 16 +#define SCM_BUS_SIGNAL 17 +#define SCM_SEGV_SIGNAL 18 +#define SCM_ALRM_SIGNAL 19 +#define SCM_GC_SIGNAL 20 +#define SCM_TICK_SIGNAL 21 + +#define SCM_SIG_ORD(X) ((X) - SCM_HUP_SIGNAL) +#define SCM_ORD_SIG(X) ((X) + SCM_HUP_SIGNAL) +#define SCM_NUM_SIGS (SCM_SIG_ORD (SCM_TICK_SIGNAL) + 1) + +struct errdesc +{ + char *msg; + char *s_response; + short parent_err; +}; + + +extern struct errdesc scm_errmsgs[]; + + + +/* SCM_EXIT_SUCCESS is the default code to return from SCM if no errors + * were encountered. SCM_EXIT_FAILURE is the default code to return from + * SCM if errors were encountered. The return code can be explicitly + * specified in a SCM program with (scm_quit <n>). + */ + +#ifndef SCM_EXIT_SUCCESS +#ifdef vms +#define SCM_EXIT_SUCCESS 1 +#else +#define SCM_EXIT_SUCCESS 0 +#endif /* def vms */ +#endif /* ndef SCM_EXIT_SUCCESS */ +#ifndef SCM_EXIT_FAILURE +#ifdef vms +#define SCM_EXIT_FAILURE 2 +#else +#define SCM_EXIT_FAILURE 1 +#endif /* def vms */ +#endif /* ndef SCM_EXIT_FAILURE */ + + + + +#ifdef __STDC__ + +#else /* STDC */ + +#endif /* STDC */ + + +#endif /* __SCMH */ |