diff options
Diffstat (limited to 'libguile/__scm.h')
-rw-r--r-- | libguile/__scm.h | 432 |
1 files changed, 0 insertions, 432 deletions
diff --git a/libguile/__scm.h b/libguile/__scm.h deleted file mode 100644 index 22c2eaa38..000000000 --- a/libguile/__scm.h +++ /dev/null @@ -1,432 +0,0 @@ -/* 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 as given here. - */ - - -#define CCLO - -/* Guile Scheme supports the #f/() distinction; Guile Lisp won't. We - have horrible plans for their unification. */ -#undef SICP - - - -/* Random options (not yet supported or in final form). */ - -#define STACK_CHECKING -#undef NO_CEVAL_STACK_CHECKING -#undef LONGLONGS - -/* Some auto-generated .h files contain unused prototypes - * that need these typedefs. - */ -typedef long long_long; -typedef unsigned long ulong_long; - - - -/* What did the configure script discover about the outside world? */ -#include "libguile/scmconfig.h" - - -/* Write prototype declarations like this: - int foo SCM_P ((int a, int b)); - At definitions, use K&R style declarations, but make sure there's a - declarative prototype (as above) in scope. This will give you - argument type checking, when available, and be harmless otherwise. */ -#ifdef __STDC__ -# define SCM_P(x) x -#else -# define SCM_P(x) () -#endif - - - -/* Define - * - * SCM_CHAR_CODE_LIMIT == UCHAR_MAX + 1 - * SCM_MOST_POSITIVE_FIXNUM (LONG_MAX>>2) - * SCM_MOST_NEGATIVE_FIXNUM == SCM_SRS((long)LONG_MIN, 2) - */ - -#ifdef HAVE_LIMITS_H -# include <limits.h> -# ifdef UCHAR_MAX -# define SCM_CHAR_CODE_LIMIT (UCHAR_MAX+1L) -# else -# define SCM_CHAR_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_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_LIMITS_H */ - - -#ifdef STDC_HEADERS -# include <stdlib.h> -# ifdef AMIGA -# include <stddef.h> -# endif /* def AMIGA */ -# define scm_sizet size_t -#else -# ifdef _SIZE_T -# define scm_sizet size_t -# else -# define scm_sizet unsigned int -# endif /* def _SIZE_T */ -#endif /* def STDC_HEADERS */ - - - -#include "libguile/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 - - -#ifndef USE_THREADS -#define SCM_THREAD_DEFER -#define SCM_THREAD_ALLOW -#define SCM_THREAD_REDEFER -#define SCM_THREAD_REALLOW_1 -#define SCM_THREAD_REALLOW_2 -#define SCM_THREAD_SWITCHING_CODE -#endif - -extern unsigned int scm_async_clock; -#if 0 -#define SCM_ASYNC_TICK \ -{ \ - if (0 == --scm_async_clock) \ - scm_async_click (); \ -} \ - -#else -#define SCM_ASYNC_TICK \ -{ \ - if (0 == --scm_async_clock) \ - scm_async_click (); \ - SCM_THREAD_SWITCHING_CODE; \ -} \ - -#endif - -#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_THREAD_DEFER; \ - scm_ints_disabled = 1; \ -} \ - - -#define SCM_ALLOW_INTS_ONLY \ -{ \ - SCM_THREAD_ALLOW; \ - scm_ints_disabled = 0; \ -} \ - - -#define SCM_ALLOW_INTS \ -{ \ - SCM_CHECK_NOT_ENABLED; \ - SCM_THREAD_ALLOW; \ - scm_ints_disabled = 0; \ - SCM_ASYNC_TICK; \ -} \ - - -#define SCM_REDEFER_INTS \ -{ \ - SCM_THREAD_REDEFER; \ - ++scm_ints_disabled; \ -} \ - - -#define SCM_REALLOW_INTS \ -{ \ - SCM_THREAD_REALLOW_1; \ - --scm_ints_disabled; \ - if (!scm_ints_disabled) \ - { \ - SCM_THREAD_REALLOW_2; \ - 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_OVFLOW 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) - -#if 0 -struct errdesc -{ - char *msg; - char *s_response; - short parent_err; -}; - - -extern struct errdesc scm_errmsgs[]; -#endif - - - -/* 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 */ - - - - - -#endif /* __SCMH */ |