mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-22 11:34:09 +02:00
Merge branch 'master' into boehm-demers-weiser-gc
Conflicts: lib/Makefile.am libguile/Makefile.am libguile/frames.c libguile/gc-card.c libguile/gc-freelist.c libguile/gc-mark.c libguile/gc-segment.c libguile/gc_os_dep.c libguile/load.c libguile/macros.c libguile/objcodes.c libguile/programs.c libguile/strings.c libguile/vm.c m4/gnulib-cache.m4 m4/gnulib-comp.m4 m4/inline.m4
This commit is contained in:
commit
fbb857a472
823 changed files with 61674 additions and 14111 deletions
|
@ -1,23 +1,23 @@
|
|||
## Process this file with Automake to create Makefile.in
|
||||
##
|
||||
## Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
## Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
##
|
||||
## This file is part of GUILE.
|
||||
##
|
||||
## GUILE 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
|
||||
## GUILE is free software; you can redistribute it and/or modify it
|
||||
## under the terms of the GNU Lesser General Public License as
|
||||
## published by the Free Software Foundation; either version 3, or
|
||||
## (at your option) any later version.
|
||||
##
|
||||
## GUILE 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.
|
||||
## GNU Lesser General Public License for more details.
|
||||
##
|
||||
## You should have received a copy of the GNU General Public
|
||||
## License along with GUILE; see the file COPYING. If not, write
|
||||
## to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
||||
## Floor, Boston, MA 02110-1301 USA
|
||||
## You should have received a copy of the GNU Lesser General Public
|
||||
## License along with GUILE; see the file COPYING.LESSER. If not,
|
||||
## write to the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
## Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
AUTOMAKE_OPTIONS = gnu
|
||||
|
||||
|
@ -32,10 +32,10 @@ DEFAULT_INCLUDES =
|
|||
## Check for headers in $(srcdir)/.., so that #include
|
||||
## <libguile/MUMBLE.h> will find MUMBLE.h in this dir when we're
|
||||
## building. Also look for Gnulib headers in `lib'.
|
||||
AM_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir) \
|
||||
AM_CPPFLAGS = -DBUILDING_LIBGUILE=1 -I$(top_srcdir) -I$(top_builddir) \
|
||||
-I$(top_srcdir)/lib -I$(top_builddir)/lib
|
||||
|
||||
AM_CFLAGS = $(GCC_CFLAGS)
|
||||
AM_CFLAGS = $(GCC_CFLAGS) $(CFLAG_VISIBILITY)
|
||||
|
||||
## The Gnulib Libtool archive.
|
||||
gnulib_library = $(top_builddir)/lib/libgnu.la
|
||||
|
@ -106,7 +106,8 @@ guile_LDFLAGS = $(GUILE_CFLAGS)
|
|||
libguile_la_CFLAGS = $(GUILE_CFLAGS) $(AM_CFLAGS)
|
||||
|
||||
libguile_la_SOURCES = alist.c arbiters.c async.c backtrace.c boolean.c \
|
||||
chars.c continuations.c convert.c debug.c deprecation.c \
|
||||
bytevectors.c chars.c continuations.c \
|
||||
convert.c debug.c deprecation.c \
|
||||
deprecated.c discouraged.c dynwind.c eq.c error.c \
|
||||
eval.c evalext.c extensions.c feature.c fluids.c fports.c \
|
||||
futures.c gc.c gc-malloc.c \
|
||||
|
@ -114,7 +115,8 @@ libguile_la_SOURCES = alist.c arbiters.c async.c backtrace.c boolean.c \
|
|||
guardians.c hash.c hashtab.c hooks.c init.c inline.c \
|
||||
ioext.c keywords.c lang.c list.c load.c macros.c mallocs.c \
|
||||
modules.c numbers.c objects.c objprop.c options.c pairs.c ports.c \
|
||||
print.c procprop.c procs.c properties.c random.c rdelim.c read.c \
|
||||
print.c procprop.c procs.c properties.c \
|
||||
r6rs-ports.c random.c rdelim.c read.c \
|
||||
root.c rw.c scmsigs.c script.c simpos.c smob.c sort.c srcprop.c \
|
||||
stackchk.c stacks.c stime.c strings.c srfi-4.c srfi-13.c srfi-14.c \
|
||||
strorder.c strports.c struct.c symbols.c threads.c null-threads.c \
|
||||
|
@ -133,7 +135,8 @@ libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LDFLAGS = \
|
|||
-module -L$(builddir) -lguile \
|
||||
-version-info @LIBGUILE_I18N_INTERFACE@
|
||||
|
||||
DOT_X_FILES = alist.x arbiters.x async.x backtrace.x boolean.x chars.x \
|
||||
DOT_X_FILES = alist.x arbiters.x async.x backtrace.x boolean.x \
|
||||
bytevectors.x chars.x \
|
||||
continuations.x debug.x deprecation.x deprecated.x discouraged.x \
|
||||
dynl.x dynwind.x environments.x eq.x error.x eval.x evalext.x \
|
||||
extensions.x feature.x fluids.x fports.x futures.x gc.x \
|
||||
|
@ -141,7 +144,8 @@ DOT_X_FILES = alist.x arbiters.x async.x backtrace.x boolean.x chars.x \
|
|||
hash.x hashtab.x hooks.x i18n.x init.x ioext.x keywords.x lang.x \
|
||||
list.x load.x macros.x mallocs.x modules.x numbers.x objects.x \
|
||||
objprop.x options.x pairs.x ports.x print.x procprop.x procs.x \
|
||||
properties.x random.x rdelim.x read.x root.x rw.x scmsigs.x \
|
||||
properties.x r6rs-ports.x random.x rdelim.x \
|
||||
read.x root.x rw.x scmsigs.x \
|
||||
script.x simpos.x smob.x sort.x srcprop.x stackchk.x stacks.x \
|
||||
stime.x strings.x srfi-4.x srfi-13.x srfi-14.x strorder.x \
|
||||
strports.x struct.x symbols.x threads.x throw.x values.x \
|
||||
|
@ -153,7 +157,8 @@ DOT_X_FILES += frames.x instructions.x objcodes.x programs.x vm.x
|
|||
EXTRA_DOT_X_FILES = @EXTRA_DOT_X_FILES@
|
||||
|
||||
DOT_DOC_FILES = alist.doc arbiters.doc async.doc backtrace.doc \
|
||||
boolean.doc chars.doc continuations.doc debug.doc deprecation.doc \
|
||||
boolean.doc bytevectors.doc chars.doc \
|
||||
continuations.doc debug.doc deprecation.doc \
|
||||
deprecated.doc discouraged.doc dynl.doc dynwind.doc \
|
||||
eq.doc error.doc eval.doc evalext.doc \
|
||||
extensions.doc feature.doc fluids.doc fports.doc futures.doc \
|
||||
|
@ -162,7 +167,8 @@ DOT_DOC_FILES = alist.doc arbiters.doc async.doc backtrace.doc \
|
|||
hooks.doc i18n.doc init.doc ioext.doc keywords.doc lang.doc \
|
||||
list.doc load.doc macros.doc mallocs.doc modules.doc numbers.doc \
|
||||
objects.doc objprop.doc options.doc pairs.doc ports.doc print.doc \
|
||||
procprop.doc procs.doc properties.doc random.doc rdelim.doc \
|
||||
procprop.doc procs.doc properties.doc r6rs-ports.doc \
|
||||
random.doc rdelim.doc \
|
||||
read.doc root.doc rw.doc scmsigs.doc script.doc simpos.doc \
|
||||
smob.doc sort.doc srcprop.doc stackchk.doc stacks.doc stime.doc \
|
||||
strings.doc srfi-4.doc srfi-13.doc srfi-14.doc strorder.doc \
|
||||
|
@ -201,7 +207,7 @@ install-exec-hook:
|
|||
## working.
|
||||
noinst_HEADERS = convert.i.c \
|
||||
conv-integer.i.c conv-uinteger.i.c \
|
||||
eval.i.c \
|
||||
eval.i.c ieee-754.h \
|
||||
srfi-4.i.c \
|
||||
quicksort.i.c \
|
||||
win32-uname.h win32-dirent.h win32-socket.h \
|
||||
|
@ -211,16 +217,23 @@ noinst_HEADERS = convert.i.c \
|
|||
noinst_HEADERS += vm-engine.c vm-i-system.c vm-i-scheme.c vm-i-loader.c
|
||||
|
||||
libguile_la_DEPENDENCIES = @LIBLOBJS@
|
||||
libguile_la_LIBADD = @LIBLOBJS@ $(gnulib_library)
|
||||
libguile_la_LIBADD = @LIBLOBJS@ $(gnulib_library) $(LTLIBGMP) $(LTLIBUNISTRING)
|
||||
libguile_la_LDFLAGS = @LTLIBINTL@ -version-info @LIBGUILE_INTERFACE_CURRENT@:@LIBGUILE_INTERFACE_REVISION@:@LIBGUILE_INTERFACE_AGE@ -export-dynamic -no-undefined
|
||||
|
||||
if HAVE_LD_VERSION_SCRIPT
|
||||
|
||||
libguile_la_LDFLAGS += -Wl,--version-script="$(srcdir)/libguile.map"
|
||||
|
||||
endif HAVE_LD_VERSION_SCRIPT
|
||||
|
||||
|
||||
# These are headers visible as <guile/mumble.h>
|
||||
pkginclude_HEADERS =
|
||||
|
||||
# These are headers visible as <libguile/mumble.h>.
|
||||
modincludedir = $(includedir)/libguile
|
||||
modinclude_HEADERS = __scm.h alist.h arbiters.h async.h backtrace.h \
|
||||
boehm-gc.h \
|
||||
boehm-gc.h bytevectors.h \
|
||||
boolean.h chars.h continuations.h convert.h debug.h debug-malloc.h \
|
||||
deprecation.h deprecated.h discouraged.h dynl.h dynwind.h \
|
||||
eq.h error.h eval.h evalext.h extensions.h \
|
||||
|
@ -230,7 +243,8 @@ modinclude_HEADERS = __scm.h alist.h arbiters.h async.h backtrace.h \
|
|||
hashtab.h hooks.h i18n.h init.h inline.h ioext.h iselect.h \
|
||||
keywords.h lang.h list.h load.h macros.h mallocs.h modules.h \
|
||||
net_db.h numbers.h objects.h objprop.h options.h pairs.h ports.h \
|
||||
posix.h regex-posix.h print.h procprop.h procs.h properties.h \
|
||||
posix.h r6rs-ports.h regex-posix.h print.h \
|
||||
procprop.h procs.h properties.h \
|
||||
random.h ramap.h rdelim.h read.h root.h rw.h scmsigs.h validate.h \
|
||||
script.h simpos.h smob.h snarf.h socket.h sort.h srcprop.h \
|
||||
stackchk.h stacks.h stime.h strings.h srfi-4.h srfi-13.h srfi-14.h \
|
||||
|
@ -254,7 +268,7 @@ EXTRA_DIST = ChangeLog-scm ChangeLog-threads \
|
|||
cpp_errno.c cpp_err_symbols.in cpp_err_symbols.c \
|
||||
cpp_sig_symbols.c cpp_sig_symbols.in cpp_cnvt.awk \
|
||||
c-tokenize.lex version.h.in \
|
||||
scmconfig.h.top libgettext.h measure-hwm.scm
|
||||
scmconfig.h.top libgettext.h libguile.map
|
||||
# $(DOT_DOC_FILES) $(EXTRA_DOT_DOC_FILES) \
|
||||
# guile-procedures.txt guile.texi
|
||||
|
||||
|
@ -276,6 +290,8 @@ libpath.h: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|||
@echo '#define SCM_PKGDATA_DIR "$(pkgdatadir)"' >> libpath.tmp
|
||||
@echo '#define SCM_LIBRARY_DIR "$(pkgdatadir)/$(GUILE_EFFECTIVE_VERSION)"'>>libpath.tmp
|
||||
@echo '#define SCM_SITE_DIR "$(pkgdatadir)/site"' >> libpath.tmp
|
||||
@echo '#define SCM_CCACHE_DIR "$(pkglibdir)/$(GUILE_EFFECTIVE_VERSION)/ccache"' >> libpath.tmp
|
||||
@echo '#define SCM_EFFECTIVE_VERSION "$(GUILE_EFFECTIVE_VERSION)"' >> libpath.tmp
|
||||
@echo '#define SCM_BUILD_INFO { \' >> libpath.tmp
|
||||
@echo ' { "srcdir", "'"`cd @srcdir@; pwd`"'" }, \' >> libpath.tmp
|
||||
@echo ' { "top_srcdir", "@top_srcdir_absolute@" }, \' >> libpath.tmp
|
||||
|
@ -289,12 +305,13 @@ libpath.h: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|||
@echo ' { "sharedstatedir", "@sharedstatedir@" }, \' >> libpath.tmp
|
||||
@echo ' { "localstatedir", "@localstatedir@" }, \' >> libpath.tmp
|
||||
@echo ' { "libdir", "@libdir@" }, \' >> libpath.tmp
|
||||
@echo ' { "ccachedir", SCM_CCACHE_DIR }, \' >> libpath.tmp
|
||||
@echo ' { "infodir", "@infodir@" }, \' >> libpath.tmp
|
||||
@echo ' { "mandir", "@mandir@" }, \' >> libpath.tmp
|
||||
@echo ' { "includedir", "@includedir@" }, \' >> libpath.tmp
|
||||
@echo ' { "pkgdatadir", "$(datadir)/@PACKAGE@" }, \' >> libpath.tmp
|
||||
@echo ' { "pkglibdir", "$(libdir)/@PACKAGE@" }, \' >> libpath.tmp
|
||||
@echo ' { "pkgincludedir", "$(includedir)/@PACKAGE@" }, \' \
|
||||
@echo ' { "pkgdatadir", "@pkgdatadir@" }, \' >> libpath.tmp
|
||||
@echo ' { "pkglibdir", "@pkglibdir@" }, \' >> libpath.tmp
|
||||
@echo ' { "pkgincludedir", "@pkgincludedir@" }, \' \
|
||||
>> libpath.tmp
|
||||
@echo ' { "guileversion", "@GUILE_VERSION@" }, \' >> libpath.tmp
|
||||
@echo ' { "libguileinterface", "@LIBGUILE_INTERFACE@" }, \' \
|
||||
|
@ -324,10 +341,8 @@ error.x: cpp_err_symbols.c
|
|||
posix.x: cpp_sig_symbols.c
|
||||
load.x: libpath.h
|
||||
|
||||
include $(top_srcdir)/am/pre-inst-guile
|
||||
|
||||
alldotdocfiles = $(DOT_DOC_FILES) $(EXTRA_DOT_DOC_FILES)
|
||||
snarf2checkedtexi = GUILE="$(GUILE_FOR_BUILD)" $(top_srcdir)/scripts/snarf-check-and-output-texi
|
||||
snarf2checkedtexi = GUILE_AUTO_COMPILE=0 $(top_builddir)/meta/uninstalled-env guile-tools snarf-check-and-output-texi
|
||||
dotdoc2texi = cat $(alldotdocfiles) | $(snarf2checkedtexi)
|
||||
|
||||
guile.texi: $(alldotdocfiles) guile$(EXEEXT)
|
||||
|
@ -349,29 +364,6 @@ guile-procedures.txt: guile-procedures.texi
|
|||
|
||||
endif
|
||||
|
||||
# Stack limit calibration for `make check'. (For why we do this, see
|
||||
# the comments in measure-hwm.scm.) We're relying here on a couple of
|
||||
# bits of Automake magic.
|
||||
#
|
||||
# 1. The fact that "libguile" comes before "test-suite" in SUBDIRS in
|
||||
# our toplevel Makefile.am. This ensures that the
|
||||
# stack-limit-calibration.scm "test" will be run before any of the
|
||||
# tests under test-suite.
|
||||
#
|
||||
# 2. The fact that each test is invoked as $TESTS_ENVIRONMENT $test.
|
||||
# This allows us to ensure that the test will be considered to have
|
||||
# passed, by using `true' as TESTS_ENVIRONMENT.
|
||||
#
|
||||
# Why don't we care about the test "actually passing"? Because the
|
||||
# important thing about stack-limit-calibration.scm is just that it is
|
||||
# generated in the first place, so that other tests under test-suite
|
||||
# can use it.
|
||||
TESTS = stack-limit-calibration.scm
|
||||
TESTS_ENVIRONMENT = true
|
||||
|
||||
stack-limit-calibration.scm: measure-hwm.scm guile$(EXEEXT)
|
||||
$(preinstguile) -s $(srcdir)/measure-hwm.scm > $@
|
||||
|
||||
c-tokenize.c: c-tokenize.lex
|
||||
flex -t $(srcdir)/c-tokenize.lex > $@ || { rm $@; false; }
|
||||
|
||||
|
@ -426,8 +418,9 @@ MOSTLYCLEANFILES = \
|
|||
cpp_err_symbols_here cpp_err_symbols_diff cpp_err_symbols_new \
|
||||
cpp_sig_symbols_here cpp_sig_symbols_diff cpp_sig_symbols_new \
|
||||
version.h version.h.tmp \
|
||||
scmconfig.h scmconfig.h.tmp stack-limit-calibration.scm
|
||||
scmconfig.h scmconfig.h.tmp
|
||||
|
||||
CLEANFILES = libpath.h *.x *.doc guile-procedures.txt guile-procedures.texi guile.texi
|
||||
CLEANFILES = libpath.h *.x *.doc guile-procedures.txt guile-procedures.texi guile.texi \
|
||||
vm-i-*.i
|
||||
|
||||
MAINTAINERCLEANFILES = c-tokenize.c
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,1998,1999,2000,2001,2002,2003, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -98,13 +99,10 @@
|
|||
#define SCM_UNLIKELY(_expr) SCM_EXPECT ((_expr), 0)
|
||||
|
||||
/* The SCM_INTERNAL macro makes it possible to explicitly declare a function
|
||||
* as having "internal" linkage. */
|
||||
#if (defined __GNUC__) && \
|
||||
((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ == 3))
|
||||
# define SCM_INTERNAL extern __attribute__ ((__visibility__ ("internal")))
|
||||
#else
|
||||
# define SCM_INTERNAL extern
|
||||
#endif
|
||||
* as having "internal" linkage. However our current tack on this problem is
|
||||
* to use GCC 4's -fvisibility=hidden, making functions internal by default,
|
||||
* and then SCM_API marks them for export. */
|
||||
#define SCM_INTERNAL extern
|
||||
|
||||
|
||||
|
||||
|
@ -154,13 +152,14 @@
|
|||
|
||||
|
||||
/* SCM_API is a macro prepended to all function and data definitions
|
||||
which should be exported or imported in the resulting dynamic link
|
||||
library (DLL) in the Win32 port. */
|
||||
which should be exported from libguile. */
|
||||
|
||||
#if defined (SCM_IMPORT)
|
||||
# define SCM_API __declspec (dllimport) extern
|
||||
#elif defined (SCM_EXPORT) || defined (DLL_EXPORT)
|
||||
# define SCM_API __declspec (dllexport) extern
|
||||
#if BUILDING_LIBGUILE && HAVE_VISIBILITY
|
||||
# define SCM_API extern __attribute__((__visibility__("default")))
|
||||
#elif BUILDING_LIBGUILE && defined _MSC_VER
|
||||
# define SCM_API __declspec(dllexport) extern
|
||||
#elif defined _MSC_VER
|
||||
# define SCM_API __declspec(dllimport) extern
|
||||
#else
|
||||
# define SCM_API extern
|
||||
#endif
|
||||
|
|
|
@ -3,21 +3,22 @@
|
|||
#ifndef SCM__SCM_H
|
||||
#define SCM__SCM_H
|
||||
|
||||
/* Copyright (C) 1995,1996,2000,2001, 2002, 2006, 2008 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1995,1996,2000,2001, 2002, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -58,6 +59,7 @@
|
|||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#include <verify.h>
|
||||
#include "libguile/__scm.h"
|
||||
|
||||
/* Include headers for those files central to the implementation. The
|
||||
|
@ -78,20 +80,6 @@
|
|||
#include "libguile/modules.h"
|
||||
#include "libguile/inline.h"
|
||||
|
||||
/* SCM_SYSCALL retries system calls that have been interrupted (EINTR).
|
||||
However this can be avoided if the operating system can restart
|
||||
system calls automatically. We assume this is the case if
|
||||
sigaction is available and SA_RESTART is defined; they will be used
|
||||
when installing signal handlers.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_RESTARTABLE_SYSCALLS
|
||||
#if ! SCM_USE_PTHREAD_THREADS /* However, don't assume SA_RESTART
|
||||
works with pthreads... */
|
||||
#define SCM_SYSCALL(line) line
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef SCM_SYSCALL
|
||||
#ifdef vms
|
||||
# ifndef __GNUC__
|
||||
|
@ -169,6 +157,36 @@
|
|||
#define scm_from_off64_t scm_from_int64
|
||||
|
||||
|
||||
/* The endianness marker in objcode. */
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
# define SCM_OBJCODE_ENDIANNESS "BE"
|
||||
#else
|
||||
# define SCM_OBJCODE_ENDIANNESS "LE"
|
||||
#endif
|
||||
|
||||
#define _SCM_CPP_STRINGIFY(x) # x
|
||||
#define SCM_CPP_STRINGIFY(x) _SCM_CPP_STRINGIFY (x)
|
||||
|
||||
/* The word size marker in objcode. */
|
||||
#define SCM_OBJCODE_WORD_SIZE SCM_CPP_STRINGIFY (SIZEOF_VOID_P)
|
||||
|
||||
/* Major and minor versions must be single characters. */
|
||||
#define SCM_OBJCODE_MAJOR_VERSION 0
|
||||
#define SCM_OBJCODE_MINOR_VERSION B
|
||||
#define SCM_OBJCODE_MAJOR_VERSION_STRING \
|
||||
SCM_CPP_STRINGIFY(SCM_OBJCODE_MAJOR_VERSION)
|
||||
#define SCM_OBJCODE_MINOR_VERSION_STRING \
|
||||
SCM_CPP_STRINGIFY(SCM_OBJCODE_MINOR_VERSION)
|
||||
#define SCM_OBJCODE_VERSION_STRING \
|
||||
SCM_OBJCODE_MAJOR_VERSION_STRING "." SCM_OBJCODE_MINOR_VERSION_STRING
|
||||
#define SCM_OBJCODE_MACHINE_VERSION_STRING \
|
||||
SCM_OBJCODE_VERSION_STRING "-" SCM_OBJCODE_ENDIANNESS "-" SCM_OBJCODE_WORD_SIZE
|
||||
|
||||
/* The objcode magic header. */
|
||||
#define SCM_OBJCODE_COOKIE \
|
||||
"GOOF-" SCM_OBJCODE_MACHINE_VERSION_STRING "---"
|
||||
|
||||
|
||||
#endif /* SCM__SCM_H */
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995, 96, 97, 98, 99, 2000, 2001, 2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,2000, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996, 1997, 2000, 2001, 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,2000, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2002, 2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -174,7 +175,7 @@ scm_async_click ()
|
|||
SCM_DEFINE (scm_system_async, "system-async", 1, 0, 0,
|
||||
(SCM thunk),
|
||||
"This function is deprecated. You can use @var{thunk} directly\n"
|
||||
"instead of explicitely creating an async object.\n")
|
||||
"instead of explicitly creating an async object.\n")
|
||||
#define FUNC_NAME s_scm_system_async
|
||||
{
|
||||
scm_c_issue_deprecation_warning
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2002, 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -2,18 +2,19 @@
|
|||
* Copyright (C) 1996,1997,1998,1999,2000,2001, 2003, 2004, 2006 Free Software Foundation
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1996,1998,1999,2000,2001, 2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995, 1996, 2000, 2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,2000, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
2096
libguile/bytevectors.c
Normal file
2096
libguile/bytevectors.c
Normal file
File diff suppressed because it is too large
Load diff
146
libguile/bytevectors.h
Normal file
146
libguile/bytevectors.h
Normal file
|
@ -0,0 +1,146 @@
|
|||
#ifndef SCM_BYTEVECTORS_H
|
||||
#define SCM_BYTEVECTORS_H
|
||||
|
||||
/* Copyright (C) 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "libguile/__scm.h"
|
||||
|
||||
|
||||
/* R6RS bytevectors. */
|
||||
|
||||
#define SCM_BYTEVECTOR_LENGTH(_bv) \
|
||||
((size_t) SCM_SMOB_DATA (_bv))
|
||||
#define SCM_BYTEVECTOR_CONTENTS(_bv) \
|
||||
(SCM_BYTEVECTOR_INLINE_P (_bv) \
|
||||
? (signed char *) SCM_SMOB_OBJECT_2_LOC (_bv) \
|
||||
: (signed char *) SCM_SMOB_DATA_2 (_bv))
|
||||
|
||||
|
||||
SCM_API SCM scm_endianness_big;
|
||||
SCM_API SCM scm_endianness_little;
|
||||
|
||||
SCM_API SCM scm_c_make_bytevector (size_t);
|
||||
SCM_API int scm_is_bytevector (SCM);
|
||||
SCM_API size_t scm_c_bytevector_length (SCM);
|
||||
SCM_API scm_t_uint8 scm_c_bytevector_ref (SCM, size_t);
|
||||
SCM_API void scm_c_bytevector_set_x (SCM, size_t, scm_t_uint8);
|
||||
|
||||
SCM_API SCM scm_make_bytevector (SCM, SCM);
|
||||
SCM_API SCM scm_native_endianness (void);
|
||||
SCM_API SCM scm_bytevector_p (SCM);
|
||||
SCM_API SCM scm_bytevector_length (SCM);
|
||||
SCM_API SCM scm_bytevector_eq_p (SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_fill_x (SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_copy_x (SCM, SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_copy (SCM);
|
||||
|
||||
SCM_API SCM scm_uniform_array_to_bytevector (SCM);
|
||||
|
||||
SCM_API SCM scm_bytevector_to_u8_list (SCM);
|
||||
SCM_API SCM scm_u8_list_to_bytevector (SCM);
|
||||
SCM_API SCM scm_uint_list_to_bytevector (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_to_uint_list (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_sint_list_to_bytevector (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_to_sint_list (SCM, SCM, SCM);
|
||||
|
||||
SCM_API SCM scm_bytevector_u16_native_ref (SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s16_native_ref (SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_u32_native_ref (SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s32_native_ref (SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_u64_native_ref (SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s64_native_ref (SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_u8_ref (SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s8_ref (SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_uint_ref (SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_sint_ref (SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_u16_ref (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s16_ref (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_u32_ref (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s32_ref (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_u64_ref (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s64_ref (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_u16_native_set_x (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s16_native_set_x (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_u32_native_set_x (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s32_native_set_x (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_u64_native_set_x (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s64_native_set_x (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_u8_set_x (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s8_set_x (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_uint_set_x (SCM, SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_sint_set_x (SCM, SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_u16_set_x (SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s16_set_x (SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_u32_set_x (SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s32_set_x (SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_u64_set_x (SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_s64_set_x (SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_ieee_single_ref (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_ieee_single_native_ref (SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_ieee_single_set_x (SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_ieee_single_native_set_x (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_ieee_double_ref (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_ieee_double_native_ref (SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_ieee_double_set_x (SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_bytevector_ieee_double_native_set_x (SCM, SCM, SCM);
|
||||
SCM_API SCM scm_string_to_utf8 (SCM);
|
||||
SCM_API SCM scm_string_to_utf16 (SCM, SCM);
|
||||
SCM_API SCM scm_string_to_utf32 (SCM, SCM);
|
||||
SCM_API SCM scm_utf8_to_string (SCM);
|
||||
SCM_API SCM scm_utf16_to_string (SCM, SCM);
|
||||
SCM_API SCM scm_utf32_to_string (SCM, SCM);
|
||||
|
||||
|
||||
|
||||
/* Internal API. */
|
||||
|
||||
/* The threshold (in octets) under which bytevectors are stored "in-line",
|
||||
i.e., without allocating memory beside the SMOB itself (a double cell).
|
||||
This optimization is necessary since small bytevectors are expected to be
|
||||
common. */
|
||||
#define SCM_BYTEVECTOR_P(_bv) \
|
||||
SCM_SMOB_PREDICATE (scm_tc16_bytevector, _bv)
|
||||
#define SCM_BYTEVECTOR_INLINE_THRESHOLD (2 * sizeof (SCM))
|
||||
#define SCM_BYTEVECTOR_INLINEABLE_SIZE_P(_size) \
|
||||
((_size) <= SCM_BYTEVECTOR_INLINE_THRESHOLD)
|
||||
#define SCM_BYTEVECTOR_INLINE_P(_bv) \
|
||||
(SCM_BYTEVECTOR_INLINEABLE_SIZE_P (SCM_BYTEVECTOR_LENGTH (_bv)))
|
||||
|
||||
/* Hint that is passed to `scm_gc_malloc ()' and friends. */
|
||||
#define SCM_GC_BYTEVECTOR "bytevector"
|
||||
|
||||
SCM_INTERNAL void scm_bootstrap_bytevectors (void);
|
||||
SCM_INTERNAL void scm_init_bytevectors (void);
|
||||
|
||||
SCM_INTERNAL scm_t_bits scm_tc16_bytevector;
|
||||
SCM_INTERNAL SCM scm_i_native_endianness;
|
||||
SCM_INTERNAL SCM scm_c_take_bytevector (signed char *, size_t);
|
||||
|
||||
#define scm_c_shrink_bytevector(_bv, _len) \
|
||||
(SCM_BYTEVECTOR_INLINE_P (_bv) \
|
||||
? (_bv) \
|
||||
: scm_i_shrink_bytevector ((_bv), (_len)))
|
||||
|
||||
SCM_INTERNAL SCM scm_i_shrink_bytevector (SCM, size_t);
|
||||
SCM_INTERNAL void scm_i_bytevector_generalized_set_x (SCM, size_t, SCM);
|
||||
SCM_INTERNAL SCM scm_null_bytevector;
|
||||
|
||||
#endif /* SCM_BYTEVECTORS_H */
|
218
libguile/chars.c
218
libguile/chars.c
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1998, 2000, 2001, 2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1995,1996,1998, 2000, 2001, 2004, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -23,6 +24,8 @@
|
|||
|
||||
#include <ctype.h>
|
||||
#include <limits.h>
|
||||
#include <unicase.h>
|
||||
|
||||
#include "libguile/_scm.h"
|
||||
#include "libguile/validate.h"
|
||||
|
||||
|
@ -54,7 +57,7 @@ SCM_DEFINE1 (scm_char_eq_p, "char=?", scm_tc7_rpsubr,
|
|||
|
||||
SCM_DEFINE1 (scm_char_less_p, "char<?", scm_tc7_rpsubr,
|
||||
(SCM x, SCM y),
|
||||
"Return @code{#t} iff @var{x} is less than @var{y} in the ASCII sequence,\n"
|
||||
"Return @code{#t} iff @var{x} is less than @var{y} in the Unicode sequence,\n"
|
||||
"else @code{#f}.")
|
||||
#define FUNC_NAME s_scm_char_less_p
|
||||
{
|
||||
|
@ -67,7 +70,7 @@ SCM_DEFINE1 (scm_char_less_p, "char<?", scm_tc7_rpsubr,
|
|||
SCM_DEFINE1 (scm_char_leq_p, "char<=?", scm_tc7_rpsubr,
|
||||
(SCM x, SCM y),
|
||||
"Return @code{#t} iff @var{x} is less than or equal to @var{y} in the\n"
|
||||
"ASCII sequence, else @code{#f}.")
|
||||
"Unicode sequence, else @code{#f}.")
|
||||
#define FUNC_NAME s_scm_char_leq_p
|
||||
{
|
||||
SCM_VALIDATE_CHAR (1, x);
|
||||
|
@ -78,7 +81,7 @@ SCM_DEFINE1 (scm_char_leq_p, "char<=?", scm_tc7_rpsubr,
|
|||
|
||||
SCM_DEFINE1 (scm_char_gr_p, "char>?", scm_tc7_rpsubr,
|
||||
(SCM x, SCM y),
|
||||
"Return @code{#t} iff @var{x} is greater than @var{y} in the ASCII\n"
|
||||
"Return @code{#t} iff @var{x} is greater than @var{y} in the Unicode\n"
|
||||
"sequence, else @code{#f}.")
|
||||
#define FUNC_NAME s_scm_char_gr_p
|
||||
{
|
||||
|
@ -91,7 +94,7 @@ SCM_DEFINE1 (scm_char_gr_p, "char>?", scm_tc7_rpsubr,
|
|||
SCM_DEFINE1 (scm_char_geq_p, "char>=?", scm_tc7_rpsubr,
|
||||
(SCM x, SCM y),
|
||||
"Return @code{#t} iff @var{x} is greater than or equal to @var{y} in the\n"
|
||||
"ASCII sequence, else @code{#f}.")
|
||||
"Unicode sequence, else @code{#f}.")
|
||||
#define FUNC_NAME s_scm_char_geq_p
|
||||
{
|
||||
SCM_VALIDATE_CHAR (1, x);
|
||||
|
@ -103,7 +106,7 @@ SCM_DEFINE1 (scm_char_geq_p, "char>=?", scm_tc7_rpsubr,
|
|||
SCM_DEFINE1 (scm_char_ci_eq_p, "char-ci=?", scm_tc7_rpsubr,
|
||||
(SCM x, SCM y),
|
||||
"Return @code{#t} iff @var{x} is the same character as @var{y} ignoring\n"
|
||||
"case, else @code{#f}.")
|
||||
"case, else @code{#f}. Case is locale free and not context sensitive.")
|
||||
#define FUNC_NAME s_scm_char_ci_eq_p
|
||||
{
|
||||
SCM_VALIDATE_CHAR (1, x);
|
||||
|
@ -114,8 +117,9 @@ SCM_DEFINE1 (scm_char_ci_eq_p, "char-ci=?", scm_tc7_rpsubr,
|
|||
|
||||
SCM_DEFINE1 (scm_char_ci_less_p, "char-ci<?", scm_tc7_rpsubr,
|
||||
(SCM x, SCM y),
|
||||
"Return @code{#t} iff @var{x} is less than @var{y} in the ASCII sequence\n"
|
||||
"ignoring case, else @code{#f}.")
|
||||
"Return @code{#t} iff the Unicode uppercase form of @var{x} is less\n"
|
||||
"than the Unicode uppercase form @var{y} in the Unicode sequence,\n"
|
||||
"else @code{#f}.")
|
||||
#define FUNC_NAME s_scm_char_ci_less_p
|
||||
{
|
||||
SCM_VALIDATE_CHAR (1, x);
|
||||
|
@ -126,8 +130,9 @@ SCM_DEFINE1 (scm_char_ci_less_p, "char-ci<?", scm_tc7_rpsubr,
|
|||
|
||||
SCM_DEFINE1 (scm_char_ci_leq_p, "char-ci<=?", scm_tc7_rpsubr,
|
||||
(SCM x, SCM y),
|
||||
"Return @code{#t} iff @var{x} is less than or equal to @var{y} in the\n"
|
||||
"ASCII sequence ignoring case, else @code{#f}.")
|
||||
"Return @code{#t} iff the Unicode uppercase form of @var{x} is less\n"
|
||||
"than or equal to the Unicode uppercase form of @var{y} in the\n"
|
||||
"Unicode sequence, else @code{#f}.")
|
||||
#define FUNC_NAME s_scm_char_ci_leq_p
|
||||
{
|
||||
SCM_VALIDATE_CHAR (1, x);
|
||||
|
@ -138,8 +143,9 @@ SCM_DEFINE1 (scm_char_ci_leq_p, "char-ci<=?", scm_tc7_rpsubr,
|
|||
|
||||
SCM_DEFINE1 (scm_char_ci_gr_p, "char-ci>?", scm_tc7_rpsubr,
|
||||
(SCM x, SCM y),
|
||||
"Return @code{#t} iff @var{x} is greater than @var{y} in the ASCII\n"
|
||||
"sequence ignoring case, else @code{#f}.")
|
||||
"Return @code{#t} iff the Unicode uppercase form of @var{x} is greater\n"
|
||||
"than the Unicode uppercase form of @var{y} in the Unicode\n"
|
||||
"sequence, else @code{#f}.")
|
||||
#define FUNC_NAME s_scm_char_ci_gr_p
|
||||
{
|
||||
SCM_VALIDATE_CHAR (1, x);
|
||||
|
@ -150,8 +156,9 @@ SCM_DEFINE1 (scm_char_ci_gr_p, "char-ci>?", scm_tc7_rpsubr,
|
|||
|
||||
SCM_DEFINE1 (scm_char_ci_geq_p, "char-ci>=?", scm_tc7_rpsubr,
|
||||
(SCM x, SCM y),
|
||||
"Return @code{#t} iff @var{x} is greater than or equal to @var{y} in the\n"
|
||||
"ASCII sequence ignoring case, else @code{#f}.")
|
||||
"Return @code{#t} iff the Unicode uppercase form of @var{x} is greater\n"
|
||||
"than or equal to the Unicode uppercase form of @var{y} in the\n"
|
||||
"Unicode sequence, else @code{#f}.")
|
||||
#define FUNC_NAME s_scm_char_ci_geq_p
|
||||
{
|
||||
SCM_VALIDATE_CHAR (1, x);
|
||||
|
@ -232,7 +239,7 @@ SCM_DEFINE (scm_char_to_integer, "char->integer", 1, 0, 0,
|
|||
#define FUNC_NAME s_scm_char_to_integer
|
||||
{
|
||||
SCM_VALIDATE_CHAR (1, chr);
|
||||
return scm_from_ulong (SCM_CHAR(chr));
|
||||
return scm_from_uint32 (SCM_CHAR(chr));
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
||||
|
@ -243,7 +250,15 @@ SCM_DEFINE (scm_integer_to_char, "integer->char", 1, 0, 0,
|
|||
"Return the character at position @var{n} in the ASCII sequence.")
|
||||
#define FUNC_NAME s_scm_integer_to_char
|
||||
{
|
||||
return SCM_MAKE_CHAR (scm_to_uchar (n));
|
||||
scm_t_wchar cn;
|
||||
|
||||
cn = scm_to_wchar (n);
|
||||
|
||||
/* Avoid the surrogates. */
|
||||
if (!SCM_IS_UNICODE_CHAR (cn))
|
||||
scm_out_of_range (FUNC_NAME, n);
|
||||
|
||||
return SCM_MAKE_CHAR (cn);
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
||||
|
@ -254,7 +269,7 @@ SCM_DEFINE (scm_char_upcase, "char-upcase", 1, 0, 0,
|
|||
#define FUNC_NAME s_scm_char_upcase
|
||||
{
|
||||
SCM_VALIDATE_CHAR (1, chr);
|
||||
return SCM_MAKE_CHAR (toupper (SCM_CHAR (chr)));
|
||||
return SCM_MAKE_CHAR (scm_c_upcase (SCM_CHAR (chr)));
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
||||
|
@ -265,7 +280,7 @@ SCM_DEFINE (scm_char_downcase, "char-downcase", 1, 0, 0,
|
|||
#define FUNC_NAME s_scm_char_downcase
|
||||
{
|
||||
SCM_VALIDATE_CHAR (1, chr);
|
||||
return SCM_MAKE_CHAR (tolower (SCM_CHAR(chr)));
|
||||
return SCM_MAKE_CHAR (scm_c_downcase (SCM_CHAR(chr)));
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
||||
|
@ -278,80 +293,121 @@ TODO: change name to scm_i_.. ? --hwn
|
|||
*/
|
||||
|
||||
|
||||
int
|
||||
scm_c_upcase (unsigned int c)
|
||||
scm_t_wchar
|
||||
scm_c_upcase (scm_t_wchar c)
|
||||
{
|
||||
if (c <= UCHAR_MAX)
|
||||
return toupper (c);
|
||||
else
|
||||
if (c > 255)
|
||||
return c;
|
||||
|
||||
return toupper ((int) c);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
scm_c_downcase (unsigned int c)
|
||||
scm_t_wchar
|
||||
scm_c_downcase (scm_t_wchar c)
|
||||
{
|
||||
if (c <= UCHAR_MAX)
|
||||
return tolower (c);
|
||||
else
|
||||
if (c > 255)
|
||||
return c;
|
||||
|
||||
return tolower ((int) c);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef _DCC
|
||||
# define ASCII
|
||||
#else
|
||||
# if (('\n'=='\025') && (' '=='\100') && ('a'=='\201') && ('A'=='\301'))
|
||||
# define EBCDIC
|
||||
# endif /* (('\n'=='\025') && (' '=='\100') && ('a'=='\201') && ('A'=='\301')) */
|
||||
# if (('\n'=='\012') && (' '=='\040') && ('a'=='\141') && ('A'=='\101'))
|
||||
# define ASCII
|
||||
# endif /* (('\n'=='\012') && (' '=='\040') && ('a'=='\141') && ('A'=='\101')) */
|
||||
#endif /* def _DCC */
|
||||
/* There are a few sets of character names: R5RS, Guile
|
||||
extensions for control characters, and leftover Guile extensions.
|
||||
They are listed in order of precedence. */
|
||||
|
||||
static const char *const scm_r5rs_charnames[] = {
|
||||
"space", "newline"
|
||||
};
|
||||
|
||||
#ifdef EBCDIC
|
||||
char *const scm_charnames[] =
|
||||
static const scm_t_uint32 const scm_r5rs_charnums[] = {
|
||||
0x20, 0x0A
|
||||
};
|
||||
|
||||
#define SCM_N_R5RS_CHARNAMES (sizeof (scm_r5rs_charnames) / sizeof (char *))
|
||||
|
||||
/* The abbreviated names for control characters. */
|
||||
static const char *const scm_C0_control_charnames[] = {
|
||||
/* C0 controls */
|
||||
"nul", "soh", "stx", "etx", "eot", "enq", "ack", "bel",
|
||||
"bs", "ht", "lf", "vt", "ff", "cr", "so", "si",
|
||||
"dle", "dc1", "dc2", "dc3", "dc4", "nak", "syn", "etb",
|
||||
"can", "em", "sub", "esc", "fs", "gs", "rs", "us",
|
||||
"sp", "del"
|
||||
};
|
||||
|
||||
static const scm_t_uint32 const scm_C0_control_charnums[] = {
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
||||
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
|
||||
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
|
||||
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
|
||||
0x20, 0x7f
|
||||
};
|
||||
|
||||
#define SCM_N_C0_CONTROL_CHARNAMES (sizeof (scm_C0_control_charnames) / sizeof (char *))
|
||||
|
||||
static const char *const scm_alt_charnames[] = {
|
||||
"null", "backspace", "tab", "nl", "newline", "np", "page", "return",
|
||||
};
|
||||
|
||||
static const scm_t_uint32 const scm_alt_charnums[] = {
|
||||
0x00, 0x08, 0x09, 0x0a, 0x0a, 0x0c, 0x0c, 0x0d
|
||||
};
|
||||
|
||||
#define SCM_N_ALT_CHARNAMES (sizeof (scm_alt_charnames) / sizeof (char *))
|
||||
|
||||
/* Returns the string charname for a character if it exists, or NULL
|
||||
otherwise. */
|
||||
const char *
|
||||
scm_i_charname (SCM chr)
|
||||
{
|
||||
"nul", "soh", "stx", "etx", "pf", "ht", "lc", "del",
|
||||
0 , 0 , "smm", "vt", "ff", "cr", "so", "si",
|
||||
"dle", "dc1", "dc2", "dc3", "res", "nl", "bs", "il",
|
||||
"can", "em", "cc", 0 , "ifs", "igs", "irs", "ius",
|
||||
"ds", "sos", "fs", 0 , "byp", "lf", "eob", "pre",
|
||||
0 , 0 , "sm", 0 , 0 , "enq", "ack", "bel",
|
||||
0 , 0 , "syn", 0 , "pn", "rs", "uc", "eot",
|
||||
0 , 0 , 0 , 0 , "dc4", "nak", 0 , "sub",
|
||||
"space", scm_s_newline, "tab", "backspace", "return", "page", "null"};
|
||||
size_t c;
|
||||
scm_t_uint32 i = SCM_CHAR (chr);
|
||||
|
||||
const char scm_charnums[] =
|
||||
"\000\001\002\003\004\005\006\007\
|
||||
\010\011\012\013\014\015\016\017\
|
||||
\020\021\022\023\024\025\026\027\
|
||||
\030\031\032\033\034\035\036\037\
|
||||
\040\041\042\043\044\045\046\047\
|
||||
\050\051\052\053\054\055\056\057\
|
||||
\060\061\062\063\064\065\066\067\
|
||||
\070\071\072\073\074\075\076\077\
|
||||
\n\t\b\r\f\0";
|
||||
#endif /* def EBCDIC */
|
||||
#ifdef ASCII
|
||||
char *const scm_charnames[] =
|
||||
for (c = 0; c < SCM_N_R5RS_CHARNAMES; c++)
|
||||
if (scm_r5rs_charnums[c] == i)
|
||||
return scm_r5rs_charnames[c];
|
||||
|
||||
for (c = 0; c < SCM_N_C0_CONTROL_CHARNAMES; c++)
|
||||
if (scm_C0_control_charnums[c] == i)
|
||||
return scm_C0_control_charnames[c];
|
||||
|
||||
for (c = 0; c < SCM_N_ALT_CHARNAMES; c++)
|
||||
if (scm_alt_charnums[c] == i)
|
||||
return scm_alt_charnames[i];
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Return a character from a string charname. */
|
||||
SCM
|
||||
scm_i_charname_to_char (const char *charname, size_t charname_len)
|
||||
{
|
||||
"nul","soh","stx","etx","eot","enq","ack","bel",
|
||||
"bs", "ht", "newline", "vt", "np", "cr", "so", "si",
|
||||
"dle","dc1","dc2","dc3","dc4","nak","syn","etb",
|
||||
"can", "em","sub","esc", "fs", "gs", "rs", "us",
|
||||
"space", "sp", "nl", "tab", "backspace", "return", "page", "null", "del"};
|
||||
const char scm_charnums[] =
|
||||
"\000\001\002\003\004\005\006\007\
|
||||
\010\011\012\013\014\015\016\017\
|
||||
\020\021\022\023\024\025\026\027\
|
||||
\030\031\032\033\034\035\036\037\
|
||||
\n\t\b\r\f\0\177";
|
||||
#endif /* def ASCII */
|
||||
size_t c;
|
||||
|
||||
int scm_n_charnames = sizeof (scm_charnames) / sizeof (char *);
|
||||
/* The R5RS charnames. These are supposed to be case
|
||||
insensitive. */
|
||||
for (c = 0; c < SCM_N_R5RS_CHARNAMES; c++)
|
||||
if ((strlen (scm_r5rs_charnames[c]) == charname_len)
|
||||
&& (!strncasecmp (scm_r5rs_charnames[c], charname, charname_len)))
|
||||
return SCM_MAKE_CHAR (scm_r5rs_charnums[c]);
|
||||
|
||||
/* Then come the controls. These are not case sensitive. */
|
||||
for (c = 0; c < SCM_N_C0_CONTROL_CHARNAMES; c++)
|
||||
if ((strlen (scm_C0_control_charnames[c]) == charname_len)
|
||||
&& (!strncasecmp (scm_C0_control_charnames[c], charname, charname_len)))
|
||||
return SCM_MAKE_CHAR (scm_C0_control_charnums[c]);
|
||||
|
||||
/* Lastly are some old names carried over for compatibility. */
|
||||
for (c = 0; c < SCM_N_ALT_CHARNAMES; c++)
|
||||
if ((strlen (scm_alt_charnames[c]) == charname_len)
|
||||
&& (!strncasecmp (scm_alt_charnames[c], charname, charname_len)))
|
||||
return SCM_MAKE_CHAR (scm_alt_charnums[c]);
|
||||
|
||||
return SCM_BOOL_F;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -3,39 +3,44 @@
|
|||
#ifndef SCM_CHARS_H
|
||||
#define SCM_CHARS_H
|
||||
|
||||
/* Copyright (C) 1995,1996,2000,2001,2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1995,1996,2000,2001,2004, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "libguile/__scm.h"
|
||||
#include "libguile/numbers.h"
|
||||
|
||||
|
||||
/* Immediate Characters
|
||||
*/
|
||||
#define SCM_CHARP(x) (SCM_ITAG8(x) == scm_tc8_char)
|
||||
#define SCM_CHAR(x) ((unsigned int)SCM_ITAG8_DATA(x))
|
||||
#define SCM_MAKE_CHAR(x) SCM_MAKE_ITAG8((scm_t_bits) (unsigned char) (x), scm_tc8_char)
|
||||
#define SCM_CHAR(x) ((scm_t_wchar)SCM_ITAG8_DATA(x))
|
||||
|
||||
|
||||
#define SCM_MAKE_CHAR(x) \
|
||||
((scm_t_int32) (x) < 0 \
|
||||
? SCM_MAKE_ITAG8 ((scm_t_bits) (unsigned char) (x), scm_tc8_char) \
|
||||
: SCM_MAKE_ITAG8 ((scm_t_bits) (x), scm_tc8_char))
|
||||
|
||||
SCM_API char *const scm_charnames[];
|
||||
SCM_API int scm_n_charnames;
|
||||
SCM_API const char scm_charnums[];
|
||||
#define SCM_CODEPOINT_MAX (0x10ffff)
|
||||
#define SCM_IS_UNICODE_CHAR(c) \
|
||||
((scm_t_wchar) (c) <= 0xd7ff \
|
||||
|| ((scm_t_wchar) (c) >= 0xe000 && (scm_t_wchar) (c) <= SCM_CODEPOINT_MAX))
|
||||
|
||||
|
||||
|
||||
|
@ -60,8 +65,11 @@ SCM_API SCM scm_char_to_integer (SCM chr);
|
|||
SCM_API SCM scm_integer_to_char (SCM n);
|
||||
SCM_API SCM scm_char_upcase (SCM chr);
|
||||
SCM_API SCM scm_char_downcase (SCM chr);
|
||||
SCM_API int scm_c_upcase (unsigned int c);
|
||||
SCM_API int scm_c_downcase (unsigned int c);
|
||||
SCM_API scm_t_wchar scm_c_upcase (scm_t_wchar c);
|
||||
SCM_API scm_t_wchar scm_c_downcase (scm_t_wchar c);
|
||||
SCM_INTERNAL const char *scm_i_charname (SCM chr);
|
||||
SCM_INTERNAL SCM scm_i_charname_to_char (const char *charname,
|
||||
size_t charname_len);
|
||||
SCM_INTERNAL void scm_init_chars (void);
|
||||
|
||||
#endif /* SCM_CHARS_H */
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1998,2000,2001,2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -85,8 +86,6 @@ scm_make_continuation (int *first)
|
|||
continuation->root = thread->continuation_root;
|
||||
continuation->dframe = scm_i_last_debug_frame ();
|
||||
src = thread->continuation_base;
|
||||
SCM_NEWSMOB (cont, scm_tc16_continuation, continuation);
|
||||
|
||||
#if ! SCM_STACK_GROWS_UP
|
||||
src -= stack_size;
|
||||
#endif
|
||||
|
@ -94,6 +93,8 @@ scm_make_continuation (int *first)
|
|||
memcpy (continuation->stack, src, sizeof (SCM_STACKITEM) * stack_size);
|
||||
continuation->vm_conts = scm_vm_capture_continuations ();
|
||||
|
||||
SCM_NEWSMOB (cont, scm_tc16_continuation, continuation);
|
||||
|
||||
*first = !setjmp (continuation->jmpbuf);
|
||||
if (*first)
|
||||
{
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,2000,2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 2002, 2006 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 2002, 2006 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 2000, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 2000,2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -2,18 +2,19 @@
|
|||
* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2006, 2008, 2009 Free Software Foundation
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -21,6 +22,11 @@
|
|||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_GETRLIMIT
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
#include "libguile/_scm.h"
|
||||
#include "libguile/async.h"
|
||||
#include "libguile/eval.h"
|
||||
|
@ -303,7 +309,7 @@ SCM_DEFINE (scm_procedure_name, "procedure-name", 1, 0, 0,
|
|||
SCM_VALIDATE_PROC (1, proc);
|
||||
switch (SCM_TYP7 (proc)) {
|
||||
case scm_tcs_subrs:
|
||||
return SCM_SNAME (proc);
|
||||
return SCM_SUBR_NAME (proc);
|
||||
default:
|
||||
{
|
||||
SCM name = scm_procedure_property (proc, scm_sym_name);
|
||||
|
@ -395,6 +401,21 @@ SCM_DEFINE (scm_procedure_environment, "procedure-environment", 1, 0, 0,
|
|||
}
|
||||
#undef FUNC_NAME
|
||||
|
||||
SCM_DEFINE (scm_procedure_module, "procedure-module", 1, 0, 0,
|
||||
(SCM proc),
|
||||
"Return the module that was current when @var{proc} was defined.")
|
||||
#define FUNC_NAME s_scm_procedure_module
|
||||
{
|
||||
SCM_VALIDATE_PROC (SCM_ARG1, proc);
|
||||
|
||||
if (scm_is_true (scm_program_p (proc)))
|
||||
return scm_program_module (proc);
|
||||
else
|
||||
return scm_env_module (scm_procedure_environment (proc));
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
||||
|
||||
|
||||
|
||||
/* Eval in a local environment. We would like to have the ability to
|
||||
|
@ -513,11 +534,32 @@ SCM_DEFINE (scm_debug_hang, "debug-hang", 0, 1, 0,
|
|||
#undef FUNC_NAME
|
||||
#endif
|
||||
|
||||
static void
|
||||
init_stack_limit (void)
|
||||
{
|
||||
#ifdef HAVE_GETRLIMIT
|
||||
struct rlimit lim;
|
||||
if (getrlimit (RLIMIT_STACK, &lim) == 0)
|
||||
{
|
||||
rlim_t bytes = lim.rlim_cur;
|
||||
|
||||
/* set our internal stack limit to 80% of the rlimit. */
|
||||
if (bytes == RLIM_INFINITY)
|
||||
bytes = lim.rlim_max;
|
||||
|
||||
if (bytes != RLIM_INFINITY)
|
||||
SCM_STACK_LIMIT = bytes * 8 / 10 / sizeof (scm_t_bits);
|
||||
}
|
||||
errno = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
scm_init_debug ()
|
||||
{
|
||||
init_stack_limit ();
|
||||
scm_init_opts (scm_debug_options, scm_debug_opts);
|
||||
|
||||
scm_tc16_memoized = scm_make_smob_type ("memoized", 0);
|
||||
|
|
|
@ -7,18 +7,19 @@
|
|||
* Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -140,6 +141,7 @@ SCM_API SCM scm_local_eval (SCM exp, SCM env);
|
|||
SCM_API SCM scm_reverse_lookup (SCM env, SCM data);
|
||||
SCM_API SCM scm_sys_start_stack (SCM info_id, SCM thunk);
|
||||
SCM_API SCM scm_procedure_environment (SCM proc);
|
||||
SCM_API SCM scm_procedure_module (SCM proc);
|
||||
SCM_API SCM scm_procedure_source (SCM proc);
|
||||
SCM_API SCM scm_procedure_name (SCM proc);
|
||||
SCM_API SCM scm_memoized_environment (SCM m);
|
||||
|
|
|
@ -5,18 +5,19 @@
|
|||
/* Copyright (C) 2003, 2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
|
|
@ -8,18 +8,19 @@
|
|||
/* Copyright (C) 2003,2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "libguile/__scm.h"
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -41,8 +42,6 @@
|
|||
|
||||
|
||||
|
||||
#if (SCM_ENABLE_DEPRECATED == 1)
|
||||
|
||||
struct issued_warning {
|
||||
struct issued_warning *prev;
|
||||
const char *message;
|
||||
|
@ -138,8 +137,6 @@ print_deprecation_summary (void)
|
|||
}
|
||||
}
|
||||
|
||||
#endif /* SCM_ENABLE_DEPRECATED == 1 */
|
||||
|
||||
SCM_DEFINE(scm_include_deprecated_features,
|
||||
"include-deprecated-features", 0, 0, 0,
|
||||
(),
|
||||
|
@ -157,7 +154,6 @@ SCM_DEFINE(scm_include_deprecated_features,
|
|||
void
|
||||
scm_init_deprecation ()
|
||||
{
|
||||
#if (SCM_ENABLE_DEPRECATED == 1)
|
||||
const char *level = getenv ("GUILE_WARN_DEPRECATED");
|
||||
if (level == NULL)
|
||||
level = SCM_WARN_DEPRECATED_DEFAULT;
|
||||
|
@ -170,11 +166,11 @@ scm_init_deprecation ()
|
|||
SCM_WARN_DEPRECATED = 0;
|
||||
atexit (print_deprecation_summary);
|
||||
}
|
||||
#endif
|
||||
#include "libguile/deprecation.x"
|
||||
}
|
||||
|
||||
/*
|
||||
Local Variables:
|
||||
c-file-style: "gnu"
|
||||
End: */
|
||||
End:
|
||||
*/
|
||||
|
|
|
@ -3,21 +3,22 @@
|
|||
#ifndef SCM_DEPRECATION_H
|
||||
#define SCM_DEPRECATION_H
|
||||
|
||||
/* Copyright (C) 2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2001, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -26,20 +27,14 @@
|
|||
|
||||
|
||||
|
||||
#if (SCM_ENABLE_DEPRECATED == 1)
|
||||
|
||||
/* These functions are _not_ deprecated, but we exclude them along
|
||||
with the really deprecated features to be sure that no-one is
|
||||
trying to emit deprecation warnings when libguile is supposed to be
|
||||
clean of them.
|
||||
*/
|
||||
/* These functions are a possibly useful part of the API and not only used
|
||||
internally, thus they are exported always, not depending on
|
||||
SCM_ENABLE_DEPRECATED. */
|
||||
|
||||
SCM_API void scm_c_issue_deprecation_warning (const char *msg);
|
||||
SCM_API void scm_c_issue_deprecation_warning_fmt (const char *msg, ...);
|
||||
SCM_API SCM scm_issue_deprecation_warning (SCM msgs);
|
||||
|
||||
#endif
|
||||
|
||||
SCM_API SCM scm_include_deprecated_features (void);
|
||||
SCM_INTERNAL void scm_init_deprecation (void);
|
||||
|
||||
|
|
|
@ -5,18 +5,19 @@
|
|||
/* Copyright (C) 2003, 2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
|
|
@ -16,18 +16,19 @@
|
|||
/* Copyright (C) 2004, 2006 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "libguile/__scm.h"
|
||||
|
|
|
@ -4,18 +4,19 @@
|
|||
* 2003, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1996,1998,2000,2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1998,1999,2000,2001, 2003, 2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,1998,1999,2000,2003,2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1999,2000,2001, 2003, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1999,2000, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998,2000,2001,2003, 2004, 2006 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,2000, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2004, 2006 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2002, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
370
libguile/eval.c
370
libguile/eval.c
|
@ -2,18 +2,19 @@
|
|||
* Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -306,6 +307,9 @@ syntax_error (const char* const msg, const SCM form, const SCM expr)
|
|||
{ if (SCM_UNLIKELY (!(cond))) \
|
||||
syntax_error (message, form, expr); }
|
||||
|
||||
static void error_unbound_variable (SCM symbol) SCM_NORETURN;
|
||||
static void error_defined_variable (SCM symbol) SCM_NORETURN;
|
||||
|
||||
|
||||
|
||||
/* {Ilocs}
|
||||
|
@ -706,6 +710,101 @@ is_system_macro_p (const SCM syntactic_keyword, const SCM form, const SCM env)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static SCM
|
||||
macroexp (SCM x, SCM env)
|
||||
{
|
||||
SCM res, proc, orig_sym;
|
||||
|
||||
/* Don't bother to produce error messages here. We get them when we
|
||||
eventually execute the code for real. */
|
||||
|
||||
macro_tail:
|
||||
orig_sym = SCM_CAR (x);
|
||||
if (!scm_is_symbol (orig_sym))
|
||||
return x;
|
||||
|
||||
{
|
||||
SCM *proc_ptr = scm_lookupcar1 (x, env, 0);
|
||||
if (proc_ptr == NULL)
|
||||
{
|
||||
/* We have lost the race. */
|
||||
goto macro_tail;
|
||||
}
|
||||
proc = *proc_ptr;
|
||||
}
|
||||
|
||||
/* Only handle memoizing macros. `Acros' and `macros' are really
|
||||
special forms and should not be evaluated here. */
|
||||
|
||||
if (!SCM_MACROP (proc)
|
||||
|| (SCM_MACRO_TYPE (proc) != 2 && !SCM_BUILTIN_MACRO_P (proc)))
|
||||
return x;
|
||||
|
||||
SCM_SETCAR (x, orig_sym); /* Undo memoizing effect of lookupcar */
|
||||
res = scm_call_2 (SCM_MACRO_CODE (proc), x, env);
|
||||
|
||||
if (scm_ilength (res) <= 0)
|
||||
/* Result of expansion is not a list. */
|
||||
return (scm_list_2 (SCM_IM_BEGIN, res));
|
||||
else
|
||||
{
|
||||
/* njrev: Several queries here: (1) I don't see how it can be
|
||||
correct that the SCM_SETCAR 2 lines below this comment needs
|
||||
protection, but the SCM_SETCAR 6 lines above does not, so
|
||||
something here is probably wrong. (2) macroexp() is now only
|
||||
used in one place - scm_m_generalized_set_x - whereas all other
|
||||
macro expansion happens through expand_user_macros. Therefore
|
||||
(2.1) perhaps macroexp() could be eliminated completely now?
|
||||
(2.2) Does expand_user_macros need any critical section
|
||||
protection? */
|
||||
|
||||
SCM_CRITICAL_SECTION_START;
|
||||
SCM_SETCAR (x, SCM_CAR (res));
|
||||
SCM_SETCDR (x, SCM_CDR (res));
|
||||
SCM_CRITICAL_SECTION_END;
|
||||
|
||||
goto macro_tail;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Start of the memoizers for the standard R5RS builtin macros. */
|
||||
|
||||
static SCM scm_m_quote (SCM xorig, SCM env);
|
||||
static SCM scm_m_begin (SCM xorig, SCM env);
|
||||
static SCM scm_m_if (SCM xorig, SCM env);
|
||||
static SCM scm_m_set_x (SCM xorig, SCM env);
|
||||
static SCM scm_m_and (SCM xorig, SCM env);
|
||||
static SCM scm_m_or (SCM xorig, SCM env);
|
||||
static SCM scm_m_case (SCM xorig, SCM env);
|
||||
static SCM scm_m_cond (SCM xorig, SCM env);
|
||||
static SCM scm_m_lambda (SCM xorig, SCM env);
|
||||
static SCM scm_m_letstar (SCM xorig, SCM env);
|
||||
static SCM scm_m_do (SCM xorig, SCM env);
|
||||
static SCM scm_m_quasiquote (SCM xorig, SCM env);
|
||||
static SCM scm_m_delay (SCM xorig, SCM env);
|
||||
static SCM scm_m_generalized_set_x (SCM xorig, SCM env);
|
||||
#if 0 /* Futures are disabled, see "futures.h". */
|
||||
static SCM scm_m_future (SCM xorig, SCM env);
|
||||
#endif
|
||||
static SCM scm_m_define (SCM x, SCM env);
|
||||
static SCM scm_m_letrec (SCM xorig, SCM env);
|
||||
static SCM scm_m_let (SCM xorig, SCM env);
|
||||
static SCM scm_m_at (SCM xorig, SCM env);
|
||||
static SCM scm_m_atat (SCM xorig, SCM env);
|
||||
static SCM scm_m_atslot_ref (SCM xorig, SCM env);
|
||||
static SCM scm_m_atslot_set_x (SCM xorig, SCM env);
|
||||
static SCM scm_m_apply (SCM xorig, SCM env);
|
||||
static SCM scm_m_cont (SCM xorig, SCM env);
|
||||
#if SCM_ENABLE_ELISP
|
||||
static SCM scm_m_nil_cond (SCM xorig, SCM env);
|
||||
static SCM scm_m_atfop (SCM xorig, SCM env);
|
||||
#endif /* SCM_ENABLE_ELISP */
|
||||
static SCM scm_m_atbind (SCM xorig, SCM env);
|
||||
static SCM scm_m_at_call_with_values (SCM xorig, SCM env);
|
||||
static SCM scm_m_eval_when (SCM xorig, SCM env);
|
||||
|
||||
|
||||
static void
|
||||
m_expand_body (const SCM forms, const SCM env)
|
||||
{
|
||||
|
@ -828,70 +927,10 @@ m_expand_body (const SCM forms, const SCM env)
|
|||
}
|
||||
}
|
||||
|
||||
static SCM
|
||||
macroexp (SCM x, SCM env)
|
||||
{
|
||||
SCM res, proc, orig_sym;
|
||||
|
||||
/* Don't bother to produce error messages here. We get them when we
|
||||
eventually execute the code for real. */
|
||||
|
||||
macro_tail:
|
||||
orig_sym = SCM_CAR (x);
|
||||
if (!scm_is_symbol (orig_sym))
|
||||
return x;
|
||||
|
||||
{
|
||||
SCM *proc_ptr = scm_lookupcar1 (x, env, 0);
|
||||
if (proc_ptr == NULL)
|
||||
{
|
||||
/* We have lost the race. */
|
||||
goto macro_tail;
|
||||
}
|
||||
proc = *proc_ptr;
|
||||
}
|
||||
|
||||
/* Only handle memoizing macros. `Acros' and `macros' are really
|
||||
special forms and should not be evaluated here. */
|
||||
|
||||
if (!SCM_MACROP (proc)
|
||||
|| (SCM_MACRO_TYPE (proc) != 2 && !SCM_BUILTIN_MACRO_P (proc)))
|
||||
return x;
|
||||
|
||||
SCM_SETCAR (x, orig_sym); /* Undo memoizing effect of lookupcar */
|
||||
res = scm_call_2 (SCM_MACRO_CODE (proc), x, env);
|
||||
|
||||
if (scm_ilength (res) <= 0)
|
||||
/* Result of expansion is not a list. */
|
||||
return (scm_list_2 (SCM_IM_BEGIN, res));
|
||||
else
|
||||
{
|
||||
/* njrev: Several queries here: (1) I don't see how it can be
|
||||
correct that the SCM_SETCAR 2 lines below this comment needs
|
||||
protection, but the SCM_SETCAR 6 lines above does not, so
|
||||
something here is probably wrong. (2) macroexp() is now only
|
||||
used in one place - scm_m_generalized_set_x - whereas all other
|
||||
macro expansion happens through expand_user_macros. Therefore
|
||||
(2.1) perhaps macroexp() could be eliminated completely now?
|
||||
(2.2) Does expand_user_macros need any critical section
|
||||
protection? */
|
||||
|
||||
SCM_CRITICAL_SECTION_START;
|
||||
SCM_SETCAR (x, SCM_CAR (res));
|
||||
SCM_SETCDR (x, SCM_CDR (res));
|
||||
SCM_CRITICAL_SECTION_END;
|
||||
|
||||
goto macro_tail;
|
||||
}
|
||||
}
|
||||
|
||||
/* Start of the memoizers for the standard R5RS builtin macros. */
|
||||
|
||||
|
||||
SCM_SYNTAX (s_and, "and", scm_i_makbimacro, scm_m_and);
|
||||
SCM_GLOBAL_SYMBOL (scm_sym_and, s_and);
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_and (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
const SCM cdr_expr = SCM_CDR (expr);
|
||||
|
@ -921,7 +960,7 @@ unmemoize_and (const SCM expr, const SCM env)
|
|||
SCM_SYNTAX (s_begin, "begin", scm_i_makbimacro, scm_m_begin);
|
||||
SCM_GLOBAL_SYMBOL (scm_sym_begin, s_begin);
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_begin (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
const SCM cdr_expr = SCM_CDR (expr);
|
||||
|
@ -945,7 +984,7 @@ SCM_SYNTAX (s_case, "case", scm_i_makbimacro, scm_m_case);
|
|||
SCM_GLOBAL_SYMBOL (scm_sym_case, s_case);
|
||||
SCM_GLOBAL_SYMBOL (scm_sym_else, "else");
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_case (SCM expr, SCM env)
|
||||
{
|
||||
SCM clauses;
|
||||
|
@ -1041,7 +1080,7 @@ SCM_SYNTAX (s_cond, "cond", scm_i_makbimacro, scm_m_cond);
|
|||
SCM_GLOBAL_SYMBOL (scm_sym_cond, s_cond);
|
||||
SCM_GLOBAL_SYMBOL (scm_sym_arrow, "=>");
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_cond (SCM expr, SCM env)
|
||||
{
|
||||
/* Check, whether 'else or '=> is a literal, i. e. not bound to a value. */
|
||||
|
@ -1203,7 +1242,7 @@ canonicalize_define (const SCM expr)
|
|||
operation. However, EXPRESSION _can_ be evaluated before VARIABLE is
|
||||
bound. This means that EXPRESSION won't necessarily be able to assign
|
||||
values to VARIABLE as in `(define foo (begin (set! foo 1) (+ foo 1)))'. */
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_define (SCM expr, SCM env)
|
||||
{
|
||||
ASSERT_SYNTAX (SCM_TOP_LEVEL (env), s_bad_define, expr);
|
||||
|
@ -1258,7 +1297,7 @@ SCM_GLOBAL_SYMBOL (scm_sym_delay, s_delay);
|
|||
* (delay <expression>) is transformed into (#@delay '() <expression>), where
|
||||
* the empty list represents the empty parameter list. This representation
|
||||
* allows for easy creation of the closure during evaluation. */
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_delay (SCM expr, SCM env)
|
||||
{
|
||||
const SCM new_expr = memoize_as_thunk_prototype (expr, env);
|
||||
|
@ -1301,7 +1340,7 @@ SCM_GLOBAL_SYMBOL(scm_sym_do, s_do);
|
|||
(<body>)
|
||||
<step1> <step2> ... <stepn>) ;; missing steps replaced by var
|
||||
*/
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_do (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
SCM variables = SCM_EOL;
|
||||
|
@ -1399,7 +1438,7 @@ unmemoize_do (const SCM expr, const SCM env)
|
|||
SCM_SYNTAX (s_if, "if", scm_i_makbimacro, scm_m_if);
|
||||
SCM_GLOBAL_SYMBOL (scm_sym_if, s_if);
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_if (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
const SCM cdr_expr = SCM_CDR (expr);
|
||||
|
@ -1449,7 +1488,7 @@ c_improper_memq (SCM obj, SCM list)
|
|||
return scm_is_eq (list, obj);
|
||||
}
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_lambda (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
SCM formals;
|
||||
|
@ -1619,7 +1658,7 @@ memoize_named_let (const SCM expr, const SCM env SCM_UNUSED)
|
|||
|
||||
/* (let ((v1 i1) (v2 i2) ...) body) with variables v1 .. vn and initializers
|
||||
* i1 .. in is transformed to (#@let (vn ... v2 v1) (i1 i2 ...) body). */
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_let (SCM expr, SCM env)
|
||||
{
|
||||
SCM bindings;
|
||||
|
@ -1693,7 +1732,7 @@ unmemoize_let (const SCM expr, const SCM env)
|
|||
SCM_SYNTAX(s_letrec, "letrec", scm_i_makbimacro, scm_m_letrec);
|
||||
SCM_GLOBAL_SYMBOL(scm_sym_letrec, s_letrec);
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_letrec (SCM expr, SCM env)
|
||||
{
|
||||
SCM bindings;
|
||||
|
@ -1744,7 +1783,7 @@ SCM_GLOBAL_SYMBOL (scm_sym_letstar, s_letstar);
|
|||
|
||||
/* (let* ((v1 i1) (v2 i2) ...) body) with variables v1 .. vn and initializers
|
||||
* i1 .. in is transformed into the form (#@let* (v1 i1 v2 i2 ...) body). */
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_letstar (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
SCM binding_idx;
|
||||
|
@ -1817,7 +1856,7 @@ unmemoize_letstar (const SCM expr, const SCM env)
|
|||
SCM_SYNTAX (s_or, "or", scm_i_makbimacro, scm_m_or);
|
||||
SCM_GLOBAL_SYMBOL (scm_sym_or, s_or);
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_or (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
const SCM cdr_expr = SCM_CDR (expr);
|
||||
|
@ -1901,7 +1940,7 @@ iqq (SCM form, SCM env, unsigned long int depth)
|
|||
return form;
|
||||
}
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_quasiquote (SCM expr, SCM env)
|
||||
{
|
||||
const SCM cdr_expr = SCM_CDR (expr);
|
||||
|
@ -1914,7 +1953,7 @@ scm_m_quasiquote (SCM expr, SCM env)
|
|||
SCM_SYNTAX (s_quote, "quote", scm_i_makbimacro, scm_m_quote);
|
||||
SCM_GLOBAL_SYMBOL (scm_sym_quote, s_quote);
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_quote (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
SCM quotee;
|
||||
|
@ -1943,7 +1982,7 @@ SCM_SYNTAX (s_set_x, "set!", scm_i_makbimacro, scm_m_set_x); */
|
|||
static const char s_set_x[] = "set!";
|
||||
SCM_GLOBAL_SYMBOL (scm_sym_set_x, s_set_x);
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_set_x (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
SCM variable;
|
||||
|
@ -1973,14 +2012,57 @@ unmemoize_set_x (const SCM expr, const SCM env)
|
|||
}
|
||||
|
||||
|
||||
|
||||
/* Start of the memoizers for non-R5RS builtin macros. */
|
||||
|
||||
|
||||
SCM_SYNTAX (s_at, "@", scm_makmmacro, scm_m_at);
|
||||
SCM_GLOBAL_SYMBOL (scm_sym_at, s_at);
|
||||
|
||||
static SCM
|
||||
scm_m_at (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
SCM mod, var;
|
||||
ASSERT_SYNTAX (scm_ilength (expr) == 3, s_bad_expression, expr);
|
||||
ASSERT_SYNTAX (scm_ilength (scm_cadr (expr)) > 0, s_bad_expression, expr);
|
||||
ASSERT_SYNTAX (scm_is_symbol (scm_caddr (expr)), s_bad_expression, expr);
|
||||
|
||||
mod = scm_resolve_module (scm_cadr (expr));
|
||||
if (scm_is_false (mod))
|
||||
error_unbound_variable (expr);
|
||||
var = scm_module_variable (scm_module_public_interface (mod), scm_caddr (expr));
|
||||
if (scm_is_false (var))
|
||||
error_unbound_variable (expr);
|
||||
|
||||
return var;
|
||||
}
|
||||
|
||||
SCM_SYNTAX (s_atat, "@@", scm_makmmacro, scm_m_atat);
|
||||
SCM_GLOBAL_SYMBOL (scm_sym_atat, s_atat);
|
||||
|
||||
static SCM
|
||||
scm_m_atat (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
SCM mod, var;
|
||||
ASSERT_SYNTAX (scm_ilength (expr) == 3, s_bad_expression, expr);
|
||||
ASSERT_SYNTAX (scm_ilength (scm_cadr (expr)) > 0, s_bad_expression, expr);
|
||||
ASSERT_SYNTAX (scm_is_symbol (scm_caddr (expr)), s_bad_expression, expr);
|
||||
|
||||
mod = scm_resolve_module (scm_cadr (expr));
|
||||
if (scm_is_false (mod))
|
||||
error_unbound_variable (expr);
|
||||
var = scm_module_variable (mod, scm_caddr (expr));
|
||||
if (scm_is_false (var))
|
||||
error_unbound_variable (expr);
|
||||
|
||||
return var;
|
||||
}
|
||||
|
||||
SCM_SYNTAX (s_atapply, "@apply", scm_i_makbimacro, scm_m_apply);
|
||||
SCM_GLOBAL_SYMBOL (scm_sym_atapply, s_atapply);
|
||||
SCM_GLOBAL_SYMBOL (scm_sym_apply, s_atapply + 1);
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_apply (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
const SCM cdr_expr = SCM_CDR (expr);
|
||||
|
@ -2017,7 +2099,7 @@ SCM_SYNTAX (s_atbind, "@bind", scm_i_makbimacro, scm_m_atbind);
|
|||
*
|
||||
* FIXME - also implement `@bind*'.
|
||||
*/
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_atbind (SCM expr, SCM env)
|
||||
{
|
||||
SCM bindings;
|
||||
|
@ -2056,7 +2138,7 @@ scm_m_atbind (SCM expr, SCM env)
|
|||
SCM_SYNTAX(s_atcall_cc, "@call-with-current-continuation", scm_i_makbimacro, scm_m_cont);
|
||||
SCM_GLOBAL_SYMBOL(scm_sym_atcall_cc, s_atcall_cc);
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_cont (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
const SCM cdr_expr = SCM_CDR (expr);
|
||||
|
@ -2077,7 +2159,7 @@ unmemoize_atcall_cc (const SCM expr, const SCM env)
|
|||
SCM_SYNTAX (s_at_call_with_values, "@call-with-values", scm_i_makbimacro, scm_m_at_call_with_values);
|
||||
SCM_GLOBAL_SYMBOL(scm_sym_at_call_with_values, s_at_call_with_values);
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_at_call_with_values (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
const SCM cdr_expr = SCM_CDR (expr);
|
||||
|
@ -2095,6 +2177,25 @@ unmemoize_at_call_with_values (const SCM expr, const SCM env)
|
|||
unmemoize_exprs (SCM_CDR (expr), env));
|
||||
}
|
||||
|
||||
SCM_SYNTAX (s_eval_when, "eval-when", scm_makmmacro, scm_m_eval_when);
|
||||
SCM_GLOBAL_SYMBOL (scm_sym_eval_when, s_eval_when);
|
||||
SCM_SYMBOL (sym_eval, "eval");
|
||||
SCM_SYMBOL (sym_load, "load");
|
||||
|
||||
|
||||
static SCM
|
||||
scm_m_eval_when (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
ASSERT_SYNTAX (scm_ilength (expr) >= 3, s_bad_expression, expr);
|
||||
ASSERT_SYNTAX (scm_ilength (scm_cadr (expr)) > 0, s_bad_expression, expr);
|
||||
|
||||
if (scm_is_true (scm_memq (sym_eval, scm_cadr (expr)))
|
||||
|| scm_is_true (scm_memq (sym_load, scm_cadr (expr))))
|
||||
return scm_cons (SCM_IM_BEGIN, scm_cddr (expr));
|
||||
|
||||
return scm_list_1 (SCM_IM_BEGIN);
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
/* See futures.h for a comment why futures are not enabled.
|
||||
|
@ -2108,7 +2209,7 @@ SCM_GLOBAL_SYMBOL (scm_sym_future, s_future);
|
|||
* (#@future '() <expression>), where the empty list represents the
|
||||
* empty parameter list. This representation allows for easy creation
|
||||
* of the closure during evaluation. */
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_future (SCM expr, SCM env)
|
||||
{
|
||||
const SCM new_expr = memoize_as_thunk_prototype (expr, env);
|
||||
|
@ -2128,7 +2229,7 @@ unmemoize_future (const SCM expr, const SCM env)
|
|||
SCM_SYNTAX (s_gset_x, "set!", scm_i_makbimacro, scm_m_generalized_set_x);
|
||||
SCM_SYMBOL (scm_sym_setter, "setter");
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_generalized_set_x (SCM expr, SCM env)
|
||||
{
|
||||
SCM target, exp_target;
|
||||
|
@ -2185,9 +2286,11 @@ scm_m_generalized_set_x (SCM expr, SCM env)
|
|||
* arbitrary modules during the startup phase, the code from goops.c should be
|
||||
* moved here. */
|
||||
|
||||
SCM_SYNTAX (s_atslot_ref, "@slot-ref", scm_i_makbimacro, scm_m_atslot_ref);
|
||||
SCM_SYNTAX (s_atslot_set_x, "@slot-set!", scm_i_makbimacro, scm_m_atslot_set_x);
|
||||
SCM_SYMBOL (sym_atslot_ref, "@slot-ref");
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_atslot_ref (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
SCM slot_nr;
|
||||
|
@ -2220,7 +2323,7 @@ unmemoize_atslot_ref (const SCM expr, const SCM env)
|
|||
|
||||
SCM_SYMBOL (sym_atslot_set_x, "@slot-set!");
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_atslot_set_x (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
SCM slot_nr;
|
||||
|
@ -2258,7 +2361,7 @@ SCM_SYNTAX (s_nil_cond, "nil-cond", scm_i_makbimacro, scm_m_nil_cond);
|
|||
|
||||
/* nil-cond expressions have the form
|
||||
* (nil-cond COND VAL COND VAL ... ELSEVAL) */
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_nil_cond (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
const long length = scm_ilength (SCM_CDR (expr));
|
||||
|
@ -2281,7 +2384,7 @@ SCM_SYNTAX (s_atfop, "@fop", scm_i_makbimacro, scm_m_atfop);
|
|||
* if the value of var (across all aliasing) is not a macro, or
|
||||
* (<un-aliased var> <expr> ...)
|
||||
* if var is a macro. */
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_atfop (SCM expr, SCM env SCM_UNUSED)
|
||||
{
|
||||
SCM location;
|
||||
|
@ -2452,20 +2555,11 @@ scm_i_unmemocopy_body (SCM forms, SCM env)
|
|||
|
||||
#if (SCM_ENABLE_DEPRECATED == 1)
|
||||
|
||||
/* Deprecated in guile 1.7.0 on 2003-11-09. */
|
||||
SCM
|
||||
scm_m_expand_body (SCM exprs, SCM env)
|
||||
{
|
||||
scm_c_issue_deprecation_warning
|
||||
("`scm_m_expand_body' is deprecated.");
|
||||
m_expand_body (exprs, env);
|
||||
return exprs;
|
||||
}
|
||||
|
||||
static SCM scm_m_undefine (SCM expr, SCM env);
|
||||
|
||||
SCM_SYNTAX (s_undefine, "undefine", scm_makacro, scm_m_undefine);
|
||||
|
||||
SCM
|
||||
static SCM
|
||||
scm_m_undefine (SCM expr, SCM env)
|
||||
{
|
||||
SCM variable;
|
||||
|
@ -2489,55 +2583,10 @@ scm_m_undefine (SCM expr, SCM env)
|
|||
return SCM_UNSPECIFIED;
|
||||
}
|
||||
|
||||
SCM
|
||||
scm_macroexp (SCM x, SCM env)
|
||||
{
|
||||
scm_c_issue_deprecation_warning
|
||||
("`scm_macroexp' is deprecated.");
|
||||
return macroexp (x, env);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* SCM_ENABLE_DEPRECATED */
|
||||
|
||||
|
||||
#if (SCM_ENABLE_DEPRECATED == 1)
|
||||
|
||||
SCM
|
||||
scm_unmemocar (SCM form, SCM env)
|
||||
{
|
||||
scm_c_issue_deprecation_warning
|
||||
("`scm_unmemocar' is deprecated.");
|
||||
|
||||
if (!scm_is_pair (form))
|
||||
return form;
|
||||
else
|
||||
{
|
||||
SCM c = SCM_CAR (form);
|
||||
if (SCM_VARIABLEP (c))
|
||||
{
|
||||
SCM sym = scm_module_reverse_lookup (scm_env_module (env), c);
|
||||
if (scm_is_false (sym))
|
||||
sym = sym_three_question_marks;
|
||||
SCM_SETCAR (form, sym);
|
||||
}
|
||||
else if (SCM_ILOCP (c))
|
||||
{
|
||||
unsigned long int ir;
|
||||
|
||||
for (ir = SCM_IFRAME (c); ir != 0; --ir)
|
||||
env = SCM_CDR (env);
|
||||
env = SCM_CAAR (env);
|
||||
for (ir = SCM_IDIST (c); ir != 0; --ir)
|
||||
env = SCM_CDR (env);
|
||||
|
||||
SCM_SETCAR (form, SCM_ICDRP (c) ? env : SCM_CAR (env));
|
||||
}
|
||||
return form;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/*****************************************************************************/
|
||||
/* The definitions for execution start here. */
|
||||
|
@ -2662,9 +2711,6 @@ scm_ilookup (SCM iloc, SCM env)
|
|||
|
||||
SCM_SYMBOL (scm_unbound_variable_key, "unbound-variable");
|
||||
|
||||
static void error_unbound_variable (SCM symbol) SCM_NORETURN;
|
||||
static void error_defined_variable (SCM symbol) SCM_NORETURN;
|
||||
|
||||
/* Call this for variables that are unfound.
|
||||
*/
|
||||
static void
|
||||
|
@ -2967,8 +3013,19 @@ scm_t_option scm_debug_opts[] = {
|
|||
{ SCM_OPTION_INTEGER, "depth", 20, "Maximal length of printed backtrace." },
|
||||
{ SCM_OPTION_BOOLEAN, "backtrace", 0, "Show backtrace on error." },
|
||||
{ SCM_OPTION_BOOLEAN, "debug", 0, "Use the debugging evaluator." },
|
||||
/* This default stack limit will be overridden by debug.c:init_stack_limit(),
|
||||
if we have getrlimit() and the stack limit is not INFINITY. But it is still
|
||||
important, as some systems have both the soft and the hard limits set to
|
||||
INFINITY; in that case we fall back to this value.
|
||||
|
||||
{ SCM_OPTION_INTEGER, "stack", 40000, "Stack size limit (measured in words; 0 = no check)." },
|
||||
The situation is aggravated by certain compilers, which can consume
|
||||
"beaucoup de stack", as they say in France.
|
||||
|
||||
See http://thread.gmane.org/gmane.lisp.guile.devel/8599/focus=8662 for
|
||||
more discussion. This setting is 640 KB on 32-bit arches (should be enough
|
||||
for anyone!) or a whoppin' 1280 KB on 64-bit arches.
|
||||
*/
|
||||
{ SCM_OPTION_INTEGER, "stack", 160000, "Stack size limit (measured in words; 0 = no check)." },
|
||||
{ SCM_OPTION_SCM, "show-file-name", (unsigned long)SCM_BOOL_T,
|
||||
"Show file names and line numbers "
|
||||
"in backtraces when not `#f'. A value of `base' "
|
||||
|
@ -3324,7 +3381,7 @@ call_dsubr_1 (SCM proc, SCM arg1)
|
|||
return (scm_from_double (SCM_DSUBRF (proc) (scm_i_fraction2double (arg1))));
|
||||
}
|
||||
SCM_WTA_DISPATCH_1 (*SCM_SUBR_GENERIC (proc), arg1,
|
||||
SCM_ARG1, scm_i_symbol_chars (SCM_SNAME (proc)));
|
||||
SCM_ARG1, scm_i_symbol_chars (SCM_SUBR_NAME (proc)));
|
||||
}
|
||||
|
||||
static SCM
|
||||
|
@ -4056,11 +4113,12 @@ SCM_DEFINE (scm_eval, "eval", 2, 0, 0,
|
|||
scm_dynwind_begin (SCM_F_DYNWIND_REWINDABLE);
|
||||
if (scm_is_dynamic_state (module_or_state))
|
||||
scm_dynwind_current_dynamic_state (module_or_state);
|
||||
else
|
||||
else if (scm_module_system_booted_p)
|
||||
{
|
||||
SCM_VALIDATE_MODULE (2, module_or_state);
|
||||
scm_dynwind_current_module (module_or_state);
|
||||
}
|
||||
/* otherwise if the module system isn't booted, ignore the module arg */
|
||||
|
||||
res = scm_primitive_eval (exp);
|
||||
|
||||
|
|
|
@ -3,22 +3,23 @@
|
|||
#ifndef SCM_EVAL_H
|
||||
#define SCM_EVAL_H
|
||||
|
||||
/* Copyright (C) 1995,1996,1998,1999,2000,2001,2002,2003,2004,2008
|
||||
/* Copyright (C) 1995,1996,1998,1999,2000,2001,2002,2003,2004,2008,2009
|
||||
* Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -94,10 +95,13 @@ SCM_API SCM scm_sym_quasiquote;
|
|||
SCM_API SCM scm_sym_unquote;
|
||||
SCM_API SCM scm_sym_uq_splicing;
|
||||
|
||||
SCM_API SCM scm_sym_at;
|
||||
SCM_API SCM scm_sym_atat;
|
||||
SCM_API SCM scm_sym_atapply;
|
||||
SCM_API SCM scm_sym_atcall_cc;
|
||||
SCM_API SCM scm_sym_at_call_with_values;
|
||||
SCM_API SCM scm_sym_delay;
|
||||
SCM_API SCM scm_sym_eval_when;
|
||||
SCM_API SCM scm_sym_arrow;
|
||||
SCM_API SCM scm_sym_else;
|
||||
SCM_API SCM scm_sym_apply;
|
||||
|
@ -111,37 +115,6 @@ SCM_API SCM * scm_lookupcar (SCM vloc, SCM genv, int check);
|
|||
SCM_API SCM scm_eval_car (SCM pair, SCM env);
|
||||
SCM_API SCM scm_eval_body (SCM code, SCM env);
|
||||
SCM_API SCM scm_eval_args (SCM i, SCM env, SCM proc);
|
||||
SCM_API SCM scm_m_quote (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_begin (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_if (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_set_x (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_vref (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_vset (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_and (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_or (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_case (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_cond (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_lambda (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_letstar (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_do (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_quasiquote (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_delay (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_generalized_set_x (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_future (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_define (SCM x, SCM env);
|
||||
SCM_API SCM scm_m_letrec (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_let (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_apply (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_cont (SCM xorig, SCM env);
|
||||
#if SCM_ENABLE_ELISP
|
||||
SCM_API SCM scm_m_nil_cond (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_atfop (SCM xorig, SCM env);
|
||||
#endif /* SCM_ENABLE_ELISP */
|
||||
SCM_API SCM scm_m_atbind (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_atslot_ref (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_atslot_set_x (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_atdispatch (SCM xorig, SCM env);
|
||||
SCM_API SCM scm_m_at_call_with_values (SCM xorig, SCM env);
|
||||
SCM_API int scm_badargsp (SCM formals, SCM args);
|
||||
SCM_API SCM scm_call_0 (SCM proc);
|
||||
SCM_API SCM scm_call_1 (SCM proc, SCM arg1);
|
||||
|
@ -183,15 +156,6 @@ SCM_INTERNAL void scm_init_eval (void);
|
|||
|
||||
#if (SCM_ENABLE_DEPRECATED == 1)
|
||||
|
||||
SCM_API SCM scm_m_undefine (SCM x, SCM env);
|
||||
|
||||
/* Deprecated in guile 1.7.0 on 2003-11-09. */
|
||||
SCM_API SCM scm_m_expand_body (SCM xorig, SCM env);
|
||||
|
||||
/* Deprecated in guile 1.7.0 on 2003-11-16. */
|
||||
SCM_API SCM scm_unmemocar (SCM form, SCM env);
|
||||
SCM_API SCM scm_macroexp (SCM x, SCM env);
|
||||
|
||||
/* Deprecated in guile 1.7.0 on 2004-03-29. */
|
||||
SCM_API SCM scm_ceval (SCM x, SCM env);
|
||||
SCM_API SCM scm_deval (SCM x, SCM env);
|
||||
|
|
|
@ -4,18 +4,19 @@
|
|||
* Copyright (C) 2002, 03, 04, 05, 06, 07, 09 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#undef RETURN
|
||||
|
@ -1237,7 +1238,7 @@ dispatch:
|
|||
}
|
||||
SCM_WTA_DISPATCH_1 (*SCM_SUBR_GENERIC (proc), arg1,
|
||||
SCM_ARG1,
|
||||
scm_i_symbol_chars (SCM_SNAME (proc)));
|
||||
scm_i_symbol_chars (SCM_SUBR_NAME (proc)));
|
||||
case scm_tc7_cxr:
|
||||
RETURN (scm_i_chase_pairs (arg1, (scm_t_bits) SCM_SUBRF (proc)));
|
||||
case scm_tc7_rpsubr:
|
||||
|
@ -1764,7 +1765,7 @@ tail:
|
|||
RETURN (scm_from_double (SCM_DSUBRF (proc) (scm_i_fraction2double (arg1))));
|
||||
}
|
||||
SCM_WTA_DISPATCH_1 (*SCM_SUBR_GENERIC (proc), arg1,
|
||||
SCM_ARG1, scm_i_symbol_chars (SCM_SNAME (proc)));
|
||||
SCM_ARG1, scm_i_symbol_chars (SCM_SUBR_NAME (proc)));
|
||||
case scm_tc7_cxr:
|
||||
if (SCM_UNLIKELY (SCM_UNBNDP (arg1) || !scm_is_null (args)))
|
||||
scm_wrong_num_args (proc);
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1998,1999,2000,2001,2002,2003, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -30,49 +31,23 @@
|
|||
#include "libguile/evalext.h"
|
||||
|
||||
SCM_DEFINE (scm_defined_p, "defined?", 1, 1, 0,
|
||||
(SCM sym, SCM env),
|
||||
"Return @code{#t} if @var{sym} is defined in the lexical "
|
||||
"environment @var{env}. When @var{env} is not specified, "
|
||||
"look in the top-level environment as defined by the "
|
||||
"current module.")
|
||||
(SCM sym, SCM module),
|
||||
"Return @code{#t} if @var{sym} is defined in the module "
|
||||
"@var{module} or the current module when @var{module} is not"
|
||||
"specified.")
|
||||
#define FUNC_NAME s_scm_defined_p
|
||||
{
|
||||
SCM var;
|
||||
|
||||
SCM_VALIDATE_SYMBOL (1, sym);
|
||||
|
||||
if (SCM_UNBNDP (env))
|
||||
var = scm_sym2var (sym, scm_current_module_lookup_closure (),
|
||||
SCM_BOOL_F);
|
||||
if (SCM_UNBNDP (module))
|
||||
module = scm_current_module ();
|
||||
else
|
||||
{
|
||||
SCM frames = env;
|
||||
register SCM b;
|
||||
for (; SCM_NIMP (frames); frames = SCM_CDR (frames))
|
||||
{
|
||||
SCM_ASSERT (scm_is_pair (frames), env, SCM_ARG2, FUNC_NAME);
|
||||
b = SCM_CAR (frames);
|
||||
if (scm_is_true (scm_procedure_p (b)))
|
||||
break;
|
||||
SCM_ASSERT (scm_is_pair (b), env, SCM_ARG2, FUNC_NAME);
|
||||
for (b = SCM_CAR (b); SCM_NIMP (b); b = SCM_CDR (b))
|
||||
{
|
||||
if (!scm_is_pair (b))
|
||||
{
|
||||
if (scm_is_eq (b, sym))
|
||||
return SCM_BOOL_T;
|
||||
else
|
||||
break;
|
||||
}
|
||||
if (scm_is_eq (SCM_CAR (b), sym))
|
||||
return SCM_BOOL_T;
|
||||
}
|
||||
}
|
||||
var = scm_sym2var (sym,
|
||||
SCM_NIMP (frames) ? SCM_CAR (frames) : SCM_BOOL_F,
|
||||
SCM_BOOL_F);
|
||||
}
|
||||
|
||||
SCM_VALIDATE_MODULE (2, module);
|
||||
|
||||
var = scm_module_variable (module, sym);
|
||||
|
||||
return (scm_is_false (var) || SCM_UNBNDP (SCM_VARIABLE_REF (var))
|
||||
? SCM_BOOL_F
|
||||
: SCM_BOOL_T);
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1998,1999,2000, 2003, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -3,18 +3,19 @@
|
|||
* Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
@ -76,6 +77,7 @@ load_extension (SCM lib, SCM init)
|
|||
{
|
||||
extension_t *ext;
|
||||
char *clib, *cinit;
|
||||
int found = 0;
|
||||
|
||||
scm_dynwind_begin (0);
|
||||
|
||||
|
@ -89,10 +91,14 @@ load_extension (SCM lib, SCM init)
|
|||
&& !strcmp (ext->init, cinit))
|
||||
{
|
||||
ext->func (ext->data);
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
scm_dynwind_end ();
|
||||
|
||||
if (found)
|
||||
return;
|
||||
}
|
||||
|
||||
/* Dynamically link the library. */
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -26,6 +27,8 @@
|
|||
|
||||
|
||||
|
||||
typedef void (*scm_t_extension_init_func)(void*);
|
||||
|
||||
SCM_API void scm_c_register_extension (const char *lib, const char *init,
|
||||
void (*func) (void *), void *data);
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1998,1999,2000,2001,2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,1999,2000,2001, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1996,1997,1998,1999,2000,2001, 2002, 2004, 2006 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -29,6 +30,7 @@
|
|||
#endif
|
||||
|
||||
#include <alloca.h>
|
||||
#include <canonicalize.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
|
@ -580,17 +582,23 @@ static int fstat_Win32 (int fdes, struct stat *buf)
|
|||
}
|
||||
#endif /* __MINGW32__ */
|
||||
|
||||
SCM_DEFINE (scm_stat, "stat", 1, 0, 0,
|
||||
(SCM object),
|
||||
SCM_DEFINE (scm_stat, "stat", 1, 1, 0,
|
||||
(SCM object, SCM exception_on_error),
|
||||
"Return an object containing various information about the file\n"
|
||||
"determined by @var{obj}. @var{obj} can be a string containing\n"
|
||||
"a file name or a port or integer file descriptor which is open\n"
|
||||
"on a file (in which case @code{fstat} is used as the underlying\n"
|
||||
"system call).\n"
|
||||
"\n"
|
||||
"The object returned by @code{stat} can be passed as a single\n"
|
||||
"parameter to the following procedures, all of which return\n"
|
||||
"integers:\n"
|
||||
"If the optional @var{exception_on_error} argument is true, which\n"
|
||||
"is the default, an exception will be raised if the underlying\n"
|
||||
"system call returns an error, for example if the file is not\n"
|
||||
"found or is not readable. Otherwise, an error will cause\n"
|
||||
"@code{stat} to return @code{#f}."
|
||||
"\n"
|
||||
"The object returned by a successful call to @code{stat} can be\n"
|
||||
"passed as a single parameter to the following procedures, all of\n"
|
||||
"which return integers:\n"
|
||||
"\n"
|
||||
"@table @code\n"
|
||||
"@item stat:dev\n"
|
||||
|
@ -678,12 +686,16 @@ SCM_DEFINE (scm_stat, "stat", 1, 0, 0,
|
|||
|
||||
if (rv == -1)
|
||||
{
|
||||
int en = errno;
|
||||
|
||||
SCM_SYSERROR_MSG ("~A: ~S",
|
||||
scm_list_2 (scm_strerror (scm_from_int (en)),
|
||||
object),
|
||||
en);
|
||||
if (SCM_UNBNDP (exception_on_error) || scm_is_true (exception_on_error))
|
||||
{
|
||||
int en = errno;
|
||||
SCM_SYSERROR_MSG ("~A: ~S",
|
||||
scm_list_2 (scm_strerror (scm_from_int (en)),
|
||||
object),
|
||||
en);
|
||||
}
|
||||
else
|
||||
return SCM_BOOL_F;
|
||||
}
|
||||
return scm_stat2scm (&stat_temp);
|
||||
}
|
||||
|
@ -1650,6 +1662,27 @@ SCM_DEFINE (scm_basename, "basename", 1, 1, 0,
|
|||
}
|
||||
#undef FUNC_NAME
|
||||
|
||||
SCM_DEFINE (scm_canonicalize_path, "canonicalize-path", 1, 0, 0,
|
||||
(SCM path),
|
||||
"Return the canonical path of @var{path}. A canonical path has\n"
|
||||
"no @code{.} or @code{..} components, nor any repeated path\n"
|
||||
"separators (@code{/}) nor symlinks.\n\n"
|
||||
"Raises an error if any component of @var{path} does not exist.")
|
||||
#define FUNC_NAME s_scm_canonicalize_path
|
||||
{ char *str, *canon;
|
||||
|
||||
SCM_VALIDATE_STRING (1, path);
|
||||
|
||||
str = scm_to_locale_string (path);
|
||||
canon = canonicalize_file_name (str);
|
||||
free (str);
|
||||
|
||||
if (canon)
|
||||
return scm_take_locale_string (canon);
|
||||
else
|
||||
SCM_SYSERROR;
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1997,1998,1999,2000,2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -42,7 +43,7 @@ SCM_API SCM scm_open_fdes (SCM path, SCM flags, SCM mode);
|
|||
SCM_API SCM scm_open (SCM path, SCM flags, SCM mode);
|
||||
SCM_API SCM scm_close (SCM fd_or_port);
|
||||
SCM_API SCM scm_close_fdes (SCM fd);
|
||||
SCM_API SCM scm_stat (SCM object);
|
||||
SCM_API SCM scm_stat (SCM object, SCM exception_on_error);
|
||||
SCM_API SCM scm_link (SCM oldpath, SCM newpath);
|
||||
SCM_API SCM scm_rename (SCM oldname, SCM newname);
|
||||
SCM_API SCM scm_delete_file (SCM str);
|
||||
|
@ -64,6 +65,7 @@ SCM_API SCM scm_lstat (SCM str);
|
|||
SCM_API SCM scm_copy_file (SCM oldfile, SCM newfile);
|
||||
SCM_API SCM scm_dirname (SCM filename);
|
||||
SCM_API SCM scm_basename (SCM filename, SCM suffix);
|
||||
SCM_API SCM scm_canonicalize_path (SCM path);
|
||||
|
||||
SCM_INTERNAL void scm_init_filesys (void);
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1996,1997,2000,2001, 2004, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1996,2000,2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -616,8 +617,8 @@ fport_fill_input (SCM port)
|
|||
}
|
||||
}
|
||||
|
||||
static off_t_or_off64_t
|
||||
fport_seek_or_seek64 (SCM port, off_t_or_off64_t offset, int whence)
|
||||
static scm_t_off
|
||||
fport_seek (SCM port, scm_t_off offset, int whence)
|
||||
{
|
||||
scm_t_port *pt = SCM_PTAB_ENTRY (port);
|
||||
scm_t_fport *fp = SCM_FSTREAM (port);
|
||||
|
@ -668,41 +669,8 @@ fport_seek_or_seek64 (SCM port, off_t_or_off64_t offset, int whence)
|
|||
return result;
|
||||
}
|
||||
|
||||
/* If we've got largefile and off_t isn't already off64_t then
|
||||
fport_seek_or_seek64 needs a range checking wrapper to be fport_seek in
|
||||
the port descriptor.
|
||||
|
||||
Otherwise if no largefile, or off_t is the same as off64_t (which is the
|
||||
case on NetBSD apparently), then fport_seek_or_seek64 is right to be
|
||||
fport_seek already. */
|
||||
|
||||
#if GUILE_USE_64_CALLS && HAVE_STAT64 && SIZEOF_OFF_T != SIZEOF_OFF64_T
|
||||
static off_t
|
||||
fport_seek (SCM port, off_t offset, int whence)
|
||||
{
|
||||
off64_t rv = fport_seek_or_seek64 (port, (off64_t) offset, whence);
|
||||
if (rv > OFF_T_MAX || rv < OFF_T_MIN)
|
||||
{
|
||||
errno = EOVERFLOW;
|
||||
scm_syserror ("fport_seek");
|
||||
}
|
||||
return (off_t) rv;
|
||||
|
||||
}
|
||||
#else
|
||||
#define fport_seek fport_seek_or_seek64
|
||||
#endif
|
||||
|
||||
/* `how' has been validated and is one of SEEK_SET, SEEK_CUR or SEEK_END */
|
||||
SCM
|
||||
scm_i_fport_seek (SCM port, SCM offset, int how)
|
||||
{
|
||||
return scm_from_off_t_or_off64_t
|
||||
(fport_seek_or_seek64 (port, scm_to_off_t_or_off64_t (offset), how));
|
||||
}
|
||||
|
||||
static void
|
||||
fport_truncate (SCM port, off_t length)
|
||||
fport_truncate (SCM port, scm_t_off length)
|
||||
{
|
||||
scm_t_fport *fp = SCM_FSTREAM (port);
|
||||
|
||||
|
@ -710,13 +678,6 @@ fport_truncate (SCM port, off_t length)
|
|||
scm_syserror ("ftruncate");
|
||||
}
|
||||
|
||||
int
|
||||
scm_i_fport_truncate (SCM port, SCM length)
|
||||
{
|
||||
scm_t_fport *fp = SCM_FSTREAM (port);
|
||||
return ftruncate_or_ftruncate64 (fp->fdes, scm_to_off_t_or_off64_t (length));
|
||||
}
|
||||
|
||||
/* helper for fport_write: try to write data, using multiple system
|
||||
calls if required. */
|
||||
#define FUNC_NAME "write_all"
|
||||
|
@ -754,7 +715,7 @@ fport_write (SCM port, const void *data, size_t size)
|
|||
}
|
||||
|
||||
{
|
||||
off_t space = pt->write_end - pt->write_pos;
|
||||
scm_t_off space = pt->write_end - pt->write_pos;
|
||||
|
||||
if (size <= space)
|
||||
{
|
||||
|
|
|
@ -3,21 +3,22 @@
|
|||
#ifndef SCM_FPORTS_H
|
||||
#define SCM_FPORTS_H
|
||||
|
||||
/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -58,8 +59,6 @@ SCM_INTERNAL void scm_init_fports (void);
|
|||
/* internal functions */
|
||||
|
||||
SCM_INTERNAL SCM scm_i_fdes_to_port (int fdes, long mode_bits, SCM name);
|
||||
SCM_INTERNAL int scm_i_fport_truncate (SCM, SCM);
|
||||
SCM_INTERNAL SCM scm_i_fport_seek (SCM, SCM, int);
|
||||
|
||||
|
||||
#endif /* SCM_FPORTS_H */
|
||||
|
|
|
@ -1,49 +1,28 @@
|
|||
/* Copyright (C) 2001 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.
|
||||
/* Copyright (C) 2001, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* 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, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* As a special exception, the Free Software Foundation gives permission
|
||||
* for additional uses of the text contained in its release of GUILE.
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* 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. */
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "_scm.h"
|
||||
#include "vm-bootstrap.h"
|
||||
#include "frames.h"
|
||||
|
||||
|
@ -230,16 +209,6 @@ SCM_DEFINE (scm_vm_frame_dynamic_link, "vm-frame-dynamic-link", 1, 0, 0,
|
|||
}
|
||||
#undef FUNC_NAME
|
||||
|
||||
SCM_DEFINE (scm_vm_frame_external_link, "vm-frame-external-link", 1, 0, 0,
|
||||
(SCM frame),
|
||||
"")
|
||||
#define FUNC_NAME s_scm_vm_frame_external_link
|
||||
{
|
||||
SCM_VALIDATE_VM_FRAME (1, frame);
|
||||
return SCM_FRAME_EXTERNAL_LINK (SCM_VM_FRAME_FP (frame));
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
||||
SCM_DEFINE (scm_vm_frame_stack, "vm-frame-stack", 1, 0, 0,
|
||||
(SCM frame),
|
||||
"")
|
||||
|
@ -282,6 +251,8 @@ scm_bootstrap_frames (void)
|
|||
{
|
||||
scm_tc16_vm_frame = scm_make_smob_type ("vm-frame", 0);
|
||||
scm_set_smob_print (scm_tc16_vm_frame, vm_frame_print);
|
||||
scm_c_register_extension ("libguile", "scm_init_frames",
|
||||
(scm_t_extension_init_func)scm_init_frames, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -1,43 +1,20 @@
|
|||
/* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2001, 2009 Free Software Foundation, Inc.
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* 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, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* 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. */
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _SCM_FRAMES_H_
|
||||
#define _SCM_FRAMES_H_
|
||||
|
@ -53,12 +30,11 @@
|
|||
/* VM Frame Layout
|
||||
---------------
|
||||
|
||||
| | <- fp + bp->nargs + bp->nlocs + 4
|
||||
| | <- fp + bp->nargs + bp->nlocs + 3
|
||||
+------------------+ = SCM_FRAME_UPPER_ADDRESS (fp)
|
||||
| Return address |
|
||||
| MV return address|
|
||||
| Dynamic link |
|
||||
| External link | <- fp + bp->nargs + bp->nlocs
|
||||
| Dynamic link | <- fp + bp->nargs + bp->blocs
|
||||
| Local variable 1 | = SCM_FRAME_DATA_ADDRESS (fp)
|
||||
| Local variable 0 | <- fp + bp->nargs
|
||||
| Argument 1 |
|
||||
|
@ -74,21 +50,20 @@
|
|||
#define SCM_FRAME_DATA_ADDRESS(fp) \
|
||||
(fp + SCM_PROGRAM_DATA (SCM_FRAME_PROGRAM (fp))->nargs \
|
||||
+ SCM_PROGRAM_DATA (SCM_FRAME_PROGRAM (fp))->nlocs)
|
||||
#define SCM_FRAME_UPPER_ADDRESS(fp) (SCM_FRAME_DATA_ADDRESS (fp) + 4)
|
||||
#define SCM_FRAME_UPPER_ADDRESS(fp) (SCM_FRAME_DATA_ADDRESS (fp) + 3)
|
||||
#define SCM_FRAME_LOWER_ADDRESS(fp) (fp - 1)
|
||||
|
||||
#define SCM_FRAME_BYTE_CAST(x) ((scm_byte_t *) SCM_UNPACK (x))
|
||||
#define SCM_FRAME_STACK_CAST(x) ((SCM *) SCM_UNPACK (x))
|
||||
|
||||
#define SCM_FRAME_RETURN_ADDRESS(fp) \
|
||||
(SCM_FRAME_BYTE_CAST (SCM_FRAME_DATA_ADDRESS (fp)[3]))
|
||||
#define SCM_FRAME_MV_RETURN_ADDRESS(fp) \
|
||||
(SCM_FRAME_BYTE_CAST (SCM_FRAME_DATA_ADDRESS (fp)[2]))
|
||||
#define SCM_FRAME_MV_RETURN_ADDRESS(fp) \
|
||||
(SCM_FRAME_BYTE_CAST (SCM_FRAME_DATA_ADDRESS (fp)[1]))
|
||||
#define SCM_FRAME_DYNAMIC_LINK(fp) \
|
||||
(SCM_FRAME_STACK_CAST (SCM_FRAME_DATA_ADDRESS (fp)[1]))
|
||||
(SCM_FRAME_STACK_CAST (SCM_FRAME_DATA_ADDRESS (fp)[0]))
|
||||
#define SCM_FRAME_SET_DYNAMIC_LINK(fp, dl) \
|
||||
((SCM_FRAME_DATA_ADDRESS (fp)[1])) = (SCM)(dl);
|
||||
#define SCM_FRAME_EXTERNAL_LINK(fp) (SCM_FRAME_DATA_ADDRESS (fp)[0])
|
||||
((SCM_FRAME_DATA_ADDRESS (fp)[0])) = (SCM)(dl);
|
||||
#define SCM_FRAME_VARIABLE(fp,i) fp[i]
|
||||
#define SCM_FRAME_PROGRAM(fp) fp[-1]
|
||||
|
||||
|
@ -97,7 +72,7 @@
|
|||
* Heap frames
|
||||
*/
|
||||
|
||||
extern scm_t_bits scm_tc16_vm_frame;
|
||||
SCM_API scm_t_bits scm_tc16_vm_frame;
|
||||
|
||||
struct scm_vm_frame
|
||||
{
|
||||
|
@ -118,24 +93,23 @@ struct scm_vm_frame
|
|||
#define SCM_VALIDATE_VM_FRAME(p,x) SCM_MAKE_VALIDATE (p, x, VM_FRAME_P)
|
||||
|
||||
/* FIXME rename scm_byte_t */
|
||||
extern SCM scm_c_make_vm_frame (SCM stack_holder, SCM *fp, SCM *sp,
|
||||
SCM_API SCM scm_c_make_vm_frame (SCM stack_holder, SCM *fp, SCM *sp,
|
||||
scm_byte_t *ip, scm_t_ptrdiff offset);
|
||||
extern SCM scm_vm_frame_p (SCM obj);
|
||||
extern SCM scm_vm_frame_program (SCM frame);
|
||||
extern SCM scm_vm_frame_arguments (SCM frame);
|
||||
extern SCM scm_vm_frame_source (SCM frame);
|
||||
extern SCM scm_vm_frame_local_ref (SCM frame, SCM index);
|
||||
extern SCM scm_vm_frame_local_set_x (SCM frame, SCM index, SCM val);
|
||||
extern SCM scm_vm_frame_return_address (SCM frame);
|
||||
extern SCM scm_vm_frame_mv_return_address (SCM frame);
|
||||
extern SCM scm_vm_frame_dynamic_link (SCM frame);
|
||||
extern SCM scm_vm_frame_external_link (SCM frame);
|
||||
extern SCM scm_vm_frame_stack (SCM frame);
|
||||
SCM_API SCM scm_vm_frame_p (SCM obj);
|
||||
SCM_API SCM scm_vm_frame_program (SCM frame);
|
||||
SCM_API SCM scm_vm_frame_arguments (SCM frame);
|
||||
SCM_API SCM scm_vm_frame_source (SCM frame);
|
||||
SCM_API SCM scm_vm_frame_local_ref (SCM frame, SCM index);
|
||||
SCM_API SCM scm_vm_frame_local_set_x (SCM frame, SCM index, SCM val);
|
||||
SCM_API SCM scm_vm_frame_return_address (SCM frame);
|
||||
SCM_API SCM scm_vm_frame_mv_return_address (SCM frame);
|
||||
SCM_API SCM scm_vm_frame_dynamic_link (SCM frame);
|
||||
SCM_API SCM scm_vm_frame_stack (SCM frame);
|
||||
|
||||
extern SCM scm_c_vm_frame_prev (SCM frame);
|
||||
SCM_API SCM scm_c_vm_frame_prev (SCM frame);
|
||||
|
||||
extern void scm_bootstrap_frames (void);
|
||||
extern void scm_init_frames (void);
|
||||
SCM_INTERNAL void scm_bootstrap_frames (void);
|
||||
SCM_INTERNAL void scm_init_frames (void);
|
||||
|
||||
#endif /* _SCM_FRAMES_H_ */
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2002, 2003, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 2002, 2003, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
/* #define DEBUGINFO */
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,1998,1999,2000,2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -5,19 +5,20 @@
|
|||
/* Simple interpreter interface for GDB, the GNU debugger.
|
||||
Copyright (C) 1996, 2000, 2001, 2006 Free Software Foundation
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
|
||||
The author can be reached at djurfeldt@nada.kth.se
|
||||
Mikael Djurfeldt, SANS/NADA KTH, 10044 STOCKHOLM, SWEDEN */
|
||||
|
|
|
@ -3,18 +3,19 @@
|
|||
* Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1996,2000, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -125,6 +125,7 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <uniconv.h>
|
||||
|
||||
#define pf printf
|
||||
|
||||
|
@ -279,21 +280,6 @@ main (int argc, char *argv[])
|
|||
pf ("#define SCM_SIZEOF_LONG_LONG %d\n", SIZEOF_LONG_LONG);
|
||||
pf ("#define SCM_SIZEOF_UNSIGNED_LONG_LONG %d\n", SIZEOF_UNSIGNED_LONG_LONG);
|
||||
|
||||
pf("\n");
|
||||
pf("/* handling for the deprecated long_long and ulong_long types */\n");
|
||||
pf("/* If anything suitable is available, it'll be defined here. */\n");
|
||||
pf("#if (SCM_ENABLE_DEPRECATED == 1)\n");
|
||||
if (SIZEOF_LONG_LONG != 0)
|
||||
pf ("typedef long long long_long;\n");
|
||||
else if (SIZEOF___INT64 != 0)
|
||||
pf ("typedef __int64 long_long;\n");
|
||||
|
||||
if (SIZEOF_UNSIGNED_LONG_LONG != 0)
|
||||
pf ("typedef unsigned long long ulong_long;\n");
|
||||
else if (SIZEOF_UNSIGNED___INT64 != 0)
|
||||
pf ("typedef unsigned __int64 ulong_long;\n");
|
||||
pf("#endif /* SCM_ENABLE_DEPRECATED == 1 */\n");
|
||||
|
||||
pf ("\n");
|
||||
pf ("/* These are always defined. */\n");
|
||||
pf ("typedef %s scm_t_int8;\n", SCM_I_GSC_T_INT8);
|
||||
|
@ -400,6 +386,24 @@ main (int argc, char *argv[])
|
|||
pf ("#define SCM_HAVE_READDIR64_R 0 /* 0 or 1 */\n");
|
||||
#endif
|
||||
|
||||
/* Arrange so that we have a file offset type that reflects the one
|
||||
used when compiling Guile, regardless of what the application's
|
||||
`_FILE_OFFSET_BITS' says. See
|
||||
http://lists.gnu.org/archive/html/bug-guile/2009-06/msg00018.html
|
||||
for the original bug report.
|
||||
|
||||
Note that we can't define `scm_t_off' in terms of `off_t' or
|
||||
`off64_t' because they may or may not be available depending on
|
||||
how the application that uses Guile is compiled. */
|
||||
|
||||
#if defined GUILE_USE_64_CALLS && defined HAVE_STAT64
|
||||
pf ("typedef scm_t_int64 scm_t_off;\n");
|
||||
#elif SIZEOF_OFF_T == SIZEOF_INT
|
||||
pf ("typedef int scm_t_off;\n");
|
||||
#else
|
||||
pf ("typedef long int scm_t_off;\n");
|
||||
#endif
|
||||
|
||||
#if USE_DLL_IMPORT
|
||||
pf ("\n");
|
||||
pf ("/* Define some additional CPP macros on Win32 platforms. */\n");
|
||||
|
@ -421,6 +425,14 @@ main (int argc, char *argv[])
|
|||
|
||||
pf ("#define SCM_HAVE_ARRAYS 1 /* always true now */\n");
|
||||
|
||||
pf ("\n");
|
||||
pf ("/* Constants from uniconv.h. */\n");
|
||||
pf ("#define SCM_ICONVEH_ERROR %d\n", (int) iconveh_error);
|
||||
pf ("#define SCM_ICONVEH_QUESTION_MARK %d\n",
|
||||
(int) iconveh_question_mark);
|
||||
pf ("#define SCM_ICONVEH_ESCAPE_SEQUENCE %d\n",
|
||||
(int) iconveh_escape_sequence);
|
||||
|
||||
printf ("#endif\n");
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 2004, 2006 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "libguile/__scm.h"
|
||||
|
|
|
@ -2,18 +2,19 @@
|
|||
* Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -1253,10 +1254,7 @@ SCM_DEFINE (scm_sys_fast_slot_set_x, "%fast-slot-set!", 3, 0, 0,
|
|||
#undef FUNC_NAME
|
||||
|
||||
|
||||
SCM_SYNTAX (s_atslot_ref, "@slot-ref", scm_i_makbimacro, scm_m_atslot_ref);
|
||||
SCM_SYNTAX (s_atslot_set_x, "@slot-set!", scm_i_makbimacro, scm_m_atslot_set_x);
|
||||
|
||||
|
||||
|
||||
/** Utilities **/
|
||||
|
||||
/* In the future, this function will return the effective slot
|
||||
|
@ -1859,7 +1857,7 @@ SCM_DEFINE (scm_enable_primitive_generic_x, "enable-primitive-generic!", 0, 0, 1
|
|||
*SCM_SUBR_GENERIC (subr)
|
||||
= scm_make (scm_list_3 (scm_class_generic,
|
||||
k_name,
|
||||
SCM_SNAME (subr)));
|
||||
SCM_SUBR_NAME (subr)));
|
||||
subrs = SCM_CDR (subrs);
|
||||
}
|
||||
return SCM_UNSPECIFIED;
|
||||
|
@ -1907,7 +1905,7 @@ scm_c_extend_primitive_generic (SCM extended, SCM extension)
|
|||
gf = *SCM_SUBR_GENERIC (extended);
|
||||
gext = scm_call_2 (SCM_VARIABLE_REF (scm_var_make_extended_generic),
|
||||
gf,
|
||||
SCM_SNAME (extension));
|
||||
SCM_SUBR_NAME (extension));
|
||||
SCM_SET_SUBR_GENERIC (extension, gext);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1998,1999,2000,2001,2002,2003, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -20,6 +21,8 @@
|
|||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <alloca.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
|
@ -91,7 +94,7 @@ create_gsubr (int define, const char *name,
|
|||
}
|
||||
|
||||
if (define)
|
||||
scm_define (SCM_SNAME (subr), subr);
|
||||
scm_define (SCM_SUBR_NAME (subr), subr);
|
||||
|
||||
return subr;
|
||||
}
|
||||
|
@ -146,7 +149,7 @@ create_gsubr_with_generic (int define,
|
|||
subr = scm_c_make_subr_with_generic (name, scm_tc7_lsubr_2, fcn, gf);
|
||||
create_subr:
|
||||
if (define)
|
||||
scm_define (SCM_SNAME (subr), subr);
|
||||
scm_define (SCM_SUBR_NAME (subr), subr);
|
||||
return subr;
|
||||
default:
|
||||
;
|
||||
|
@ -193,7 +196,7 @@ gsubr_apply_raw (SCM proc, unsigned int argc, const SCM *argv)
|
|||
|
||||
if (SCM_UNLIKELY (argc != argc_max))
|
||||
/* We expect the exact argument count. */
|
||||
scm_wrong_num_args (SCM_SNAME (proc));
|
||||
scm_wrong_num_args (SCM_SUBR_NAME (proc));
|
||||
|
||||
fcn = SCM_SUBRF (proc);
|
||||
|
||||
|
@ -226,7 +229,7 @@ gsubr_apply_raw (SCM proc, unsigned int argc, const SCM *argv)
|
|||
return (*fcn) (argv[0], argv[1], argv[2], argv[3], argv[4], argv[5],
|
||||
argv[6], argv[7], argv[8], argv[9]);
|
||||
default:
|
||||
scm_misc_error ((char *) SCM_SNAME (proc),
|
||||
scm_misc_error ((char *) SCM_SUBR_NAME (proc),
|
||||
"gsubr invocation with more than 10 arguments not implemented",
|
||||
SCM_EOL);
|
||||
}
|
||||
|
@ -255,7 +258,7 @@ scm_i_gsubr_apply (SCM proc, SCM arg, ...)
|
|||
argv[argc] = arg;
|
||||
|
||||
if (SCM_UNLIKELY (argc < SCM_GSUBR_REQ (type)))
|
||||
scm_wrong_num_args (SCM_SNAME (proc));
|
||||
scm_wrong_num_args (SCM_SUBR_NAME (proc));
|
||||
|
||||
/* Fill in optional arguments that were not passed. */
|
||||
while (argc < argc_max)
|
||||
|
@ -293,7 +296,7 @@ scm_i_gsubr_apply_list (SCM self, SCM args)
|
|||
|
||||
for (i = 0; i < SCM_GSUBR_REQ (typ); i++) {
|
||||
if (scm_is_null (args))
|
||||
scm_wrong_num_args (SCM_SNAME (self));
|
||||
scm_wrong_num_args (SCM_SUBR_NAME (self));
|
||||
v[i] = SCM_CAR(args);
|
||||
args = SCM_CDR(args);
|
||||
}
|
||||
|
@ -308,7 +311,7 @@ scm_i_gsubr_apply_list (SCM self, SCM args)
|
|||
if (SCM_GSUBR_REST(typ))
|
||||
v[i] = args;
|
||||
else if (!scm_is_null (args))
|
||||
scm_wrong_num_args (SCM_SNAME (self));
|
||||
scm_wrong_num_args (SCM_SUBR_NAME (self));
|
||||
|
||||
return gsubr_apply_raw (self, n, v);
|
||||
}
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,1998,2000,2001, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1998,1999,2000,2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1998,2000,2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
# Copyright (C) 1999, 2000, 2001, 2006 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, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301 USA
|
||||
# it under the terms of the GNU Lesser General Public License as
|
||||
# published by the Free Software Foundation; either version 3, 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
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this software; see the file COPYING.LESSER. If
|
||||
# not, write to the Free Software Foundation, Inc., 51 Franklin
|
||||
# Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
fullfilename=$1
|
||||
|
||||
|
|
|
@ -3,19 +3,19 @@
|
|||
# Copyright (C) 2000, 2001, 2006 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.
|
||||
# it under the terms of the GNU Lesser General Public License as
|
||||
# published by the Free Software Foundation; either version 3, 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.
|
||||
# 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
|
||||
# Lesser 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, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301 USA
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this software; see the file COPYING.LESSER. If
|
||||
# not, write to the Free Software Foundation, Inc., 51 Franklin
|
||||
# Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# Written by Greg J. Badros, <gjb@cs.washington.edu>
|
||||
# 11-Jan-2000
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2006 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.
|
||||
# it under the terms of the GNU Lesser General Public License as
|
||||
# published by the Free Software Foundation; either version 3, 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.
|
||||
# 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
|
||||
# Lesser 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, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301 USA
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this software; see the file COPYING.LESSER. If
|
||||
# not, write to the Free Software Foundation, Inc., 51 Franklin
|
||||
# Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
bindir=`dirname $0`
|
||||
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
# Copyright (C) 1999, 2000, 2001, 2006 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.
|
||||
# it under the terms of the GNU Lesser General Public License as
|
||||
# published by the Free Software Foundation; either version 3, 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.
|
||||
# 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
|
||||
# Lesser 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, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301 USA
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this software; see the file COPYING.LESSER. If
|
||||
# not, write to the Free Software Foundation, Inc., 51 Franklin
|
||||
# Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# Written by Greg J. Badros, <gjb@cs.washington.edu>
|
||||
# 12-Dec-1999
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
# Copyright (C) 1996, 97, 98, 99, 2000, 2001, 2002, 2004, 2006, 2008 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, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301 USA
|
||||
# it under the terms of the GNU Lesser General Public License as
|
||||
# published by the Free Software Foundation; either version 3, 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
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this software; see the file COPYING.LESSER. If
|
||||
# not, write to the Free Software Foundation, Inc., 51 Franklin
|
||||
# Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Commentary:
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1996,1997,2000,2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
/* This is the 'main' function for the `guile' executable. It is not
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1997, 2000, 2001, 2003, 2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,2000, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1998,1999,2000,2001, 2003, 2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,1999,2000,2001, 2003, 2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1998,1999,2000,2001, 2003, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,1999,2000,2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "libguile/__scm.h"
|
||||
|
|
90
libguile/ieee-754.h
Normal file
90
libguile/ieee-754.h
Normal file
|
@ -0,0 +1,90 @@
|
|||
/* Copyright (C) 1992, 1995, 1996, 1999 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#ifndef SCM_IEEE_754_H
|
||||
#define SCM_IEEE_754_H 1
|
||||
|
||||
/* Based on glibc's <ieee754.h> and modified by Ludovic Courtès to include
|
||||
all possible IEEE-754 double-precision representations. */
|
||||
|
||||
|
||||
/* IEEE 754 simple-precision format (32-bit). */
|
||||
|
||||
union scm_ieee754_float
|
||||
{
|
||||
float f;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned int negative:1;
|
||||
unsigned int exponent:8;
|
||||
unsigned int mantissa:23;
|
||||
} big_endian;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned int mantissa:23;
|
||||
unsigned int exponent:8;
|
||||
unsigned int negative:1;
|
||||
} little_endian;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* IEEE 754 double-precision format (64-bit). */
|
||||
|
||||
union scm_ieee754_double
|
||||
{
|
||||
double d;
|
||||
|
||||
struct
|
||||
{
|
||||
/* Big endian. */
|
||||
|
||||
unsigned int negative:1;
|
||||
unsigned int exponent:11;
|
||||
/* Together these comprise the mantissa. */
|
||||
unsigned int mantissa0:20;
|
||||
unsigned int mantissa1:32;
|
||||
} big_endian;
|
||||
|
||||
struct
|
||||
{
|
||||
/* Both byte order and word order are little endian. */
|
||||
|
||||
/* Together these comprise the mantissa. */
|
||||
unsigned int mantissa1:32;
|
||||
unsigned int mantissa0:20;
|
||||
unsigned int exponent:11;
|
||||
unsigned int negative:1;
|
||||
} little_little_endian;
|
||||
|
||||
struct
|
||||
{
|
||||
/* Byte order is little endian but word order is big endian. Not
|
||||
sure this is very wide spread. */
|
||||
unsigned int mantissa0:20;
|
||||
unsigned int exponent:11;
|
||||
unsigned int negative:1;
|
||||
unsigned int mantissa1:32;
|
||||
} little_big_endian;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif /* SCM_IEEE_754_H */
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2004, 2006, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -37,6 +38,7 @@
|
|||
#include "libguile/async.h"
|
||||
#include "libguile/backtrace.h"
|
||||
#include "libguile/boolean.h"
|
||||
#include "libguile/bytevectors.h"
|
||||
#include "libguile/chars.h"
|
||||
#include "libguile/continuations.h"
|
||||
#include "libguile/debug.h"
|
||||
|
@ -282,7 +284,7 @@ scm_load_startup_files ()
|
|||
/* Load Ice-9. */
|
||||
if (!scm_ice_9_already_loaded)
|
||||
{
|
||||
scm_primitive_load_path (scm_from_locale_string ("ice-9/boot-9"));
|
||||
scm_c_primitive_load_path ("ice-9/boot-9");
|
||||
|
||||
/* Load the init.scm file. */
|
||||
if (scm_is_true (init_path))
|
||||
|
@ -574,6 +576,7 @@ scm_i_init_guile (SCM_STACKITEM *base)
|
|||
scm_init_rw ();
|
||||
scm_init_extensions ();
|
||||
|
||||
scm_bootstrap_bytevectors ();
|
||||
scm_bootstrap_vm ();
|
||||
|
||||
atexit (cleanup_for_exit);
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,2000, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 2001, 2002, 2003, 2004, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
/* This file is for inline functions. On platforms that don't support
|
||||
|
|
|
@ -1,49 +1,28 @@
|
|||
/* Copyright (C) 2001 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.
|
||||
/* Copyright (C) 2001, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* 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, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* As a special exception, the Free Software Foundation gives permission
|
||||
* for additional uses of the text contained in its release of GUILE.
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* 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. */
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "_scm.h"
|
||||
#include "vm-bootstrap.h"
|
||||
#include "instructions.h"
|
||||
|
||||
|
@ -74,7 +53,7 @@ fetch_instruction_table ()
|
|||
|
||||
if (SCM_UNLIKELY (!table))
|
||||
{
|
||||
size_t bytes = scm_op_last * sizeof(struct scm_instruction);
|
||||
size_t bytes = SCM_VM_NUM_INSTRUCTIONS * sizeof(struct scm_instruction);
|
||||
int i;
|
||||
table = malloc (bytes);
|
||||
memset (table, 0, bytes);
|
||||
|
@ -84,11 +63,12 @@ fetch_instruction_table ()
|
|||
#include <libguile/vm-i-scheme.i>
|
||||
#include <libguile/vm-i-loader.i>
|
||||
#undef VM_INSTRUCTION_TO_TABLE
|
||||
for (i = 0; i < scm_op_last; i++)
|
||||
for (i = 0; i < SCM_VM_NUM_INSTRUCTIONS; i++)
|
||||
{
|
||||
table[i].opcode = i;
|
||||
if (table[i].name)
|
||||
table[i].symname = scm_from_locale_symbol (table[i].name);
|
||||
table[i].symname =
|
||||
scm_permanent_object (scm_from_locale_symbol (table[i].name));
|
||||
else
|
||||
table[i].symname = SCM_BOOL_F;
|
||||
}
|
||||
|
@ -106,12 +86,12 @@ scm_lookup_instruction_by_name (SCM name)
|
|||
if (SCM_UNLIKELY (SCM_FALSEP (instructions_by_name)))
|
||||
{
|
||||
int i;
|
||||
instructions_by_name = scm_make_hash_table (SCM_I_MAKINUM (scm_op_last));
|
||||
for (i = 0; i < scm_op_last; i++)
|
||||
instructions_by_name = scm_permanent_object
|
||||
(scm_make_hash_table (SCM_I_MAKINUM (SCM_VM_NUM_INSTRUCTIONS)));
|
||||
for (i = 0; i < SCM_VM_NUM_INSTRUCTIONS; i++)
|
||||
if (scm_is_true (table[i].symname))
|
||||
scm_hashq_set_x (instructions_by_name, table[i].symname,
|
||||
SCM_I_MAKINUM (i));
|
||||
instructions_by_name = scm_permanent_object (instructions_by_name);
|
||||
}
|
||||
|
||||
op = scm_hashq_ref (instructions_by_name, name, SCM_UNDEFINED);
|
||||
|
@ -130,10 +110,11 @@ SCM_DEFINE (scm_instruction_list, "instruction-list", 0, 0, 0,
|
|||
#define FUNC_NAME s_scm_instruction_list
|
||||
{
|
||||
SCM list = SCM_EOL;
|
||||
struct scm_instruction *ip;
|
||||
for (ip = fetch_instruction_table (); ip->opcode != scm_op_last; ip++)
|
||||
if (ip->name)
|
||||
list = scm_cons (ip->symname, list);
|
||||
int i;
|
||||
struct scm_instruction *ip = fetch_instruction_table ();
|
||||
for (i = 0; i < SCM_VM_NUM_INSTRUCTIONS; i++)
|
||||
if (ip[i].name)
|
||||
list = scm_cons (ip[i].symname, list);
|
||||
return scm_reverse_x (list, SCM_EOL);
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
@ -202,7 +183,7 @@ SCM_DEFINE (scm_opcode_to_instruction, "opcode->instruction", 1, 0, 0,
|
|||
SCM_MAKE_VALIDATE (1, op, I_INUMP);
|
||||
opcode = SCM_I_INUM (op);
|
||||
|
||||
if (opcode < scm_op_last)
|
||||
if (opcode >= 0 && opcode < SCM_VM_NUM_INSTRUCTIONS)
|
||||
ret = fetch_instruction_table ()[opcode].symname;
|
||||
|
||||
if (scm_is_false (ret))
|
||||
|
@ -215,6 +196,9 @@ SCM_DEFINE (scm_opcode_to_instruction, "opcode->instruction", 1, 0, 0,
|
|||
void
|
||||
scm_bootstrap_instructions (void)
|
||||
{
|
||||
scm_c_register_extension ("libguile", "scm_init_instructions",
|
||||
(scm_t_extension_init_func)scm_init_instructions,
|
||||
NULL);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -1,50 +1,27 @@
|
|||
/* Copyright (C) 2001 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.
|
||||
/* Copyright (C) 2001, 2009 Free Software Foundation, Inc.
|
||||
*
|
||||
* 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, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* As a special exception, the Free Software Foundation gives permission
|
||||
* for additional uses of the text contained in its release of GUILE.
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* 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. */
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _SCM_INSTRUCTIONS_H_
|
||||
#define _SCM_INSTRUCTIONS_H_
|
||||
|
||||
#include <libguile.h>
|
||||
|
||||
#define SCM_VM_NUM_INSTRUCTIONS (1<<7)
|
||||
#define SCM_VM_NUM_INSTRUCTIONS (1<<8)
|
||||
#define SCM_VM_INSTRUCTION_MASK (SCM_VM_NUM_INSTRUCTIONS-1)
|
||||
|
||||
enum scm_opcode {
|
||||
|
@ -54,19 +31,18 @@ enum scm_opcode {
|
|||
#include <libguile/vm-i-scheme.i>
|
||||
#include <libguile/vm-i-loader.i>
|
||||
#undef VM_INSTRUCTION_TO_OPCODE
|
||||
scm_op_last = SCM_VM_NUM_INSTRUCTIONS
|
||||
};
|
||||
|
||||
extern SCM scm_instruction_list (void);
|
||||
extern SCM scm_instruction_p (SCM obj);
|
||||
extern SCM scm_instruction_length (SCM inst);
|
||||
extern SCM scm_instruction_pops (SCM inst);
|
||||
extern SCM scm_instruction_pushes (SCM inst);
|
||||
extern SCM scm_instruction_to_opcode (SCM inst);
|
||||
extern SCM scm_opcode_to_instruction (SCM op);
|
||||
SCM_API SCM scm_instruction_list (void);
|
||||
SCM_API SCM scm_instruction_p (SCM obj);
|
||||
SCM_API SCM scm_instruction_length (SCM inst);
|
||||
SCM_API SCM scm_instruction_pops (SCM inst);
|
||||
SCM_API SCM scm_instruction_pushes (SCM inst);
|
||||
SCM_API SCM scm_instruction_to_opcode (SCM inst);
|
||||
SCM_API SCM scm_opcode_to_instruction (SCM op);
|
||||
|
||||
extern void scm_bootstrap_instructions (void);
|
||||
extern void scm_init_instructions (void);
|
||||
SCM_INTERNAL void scm_bootstrap_instructions (void);
|
||||
SCM_INTERNAL void scm_init_instructions (void);
|
||||
|
||||
#endif /* _SCM_INSTRUCTIONS_H_ */
|
||||
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
/* Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2006 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
/* Copyright (C) 1997,1998,2000,2001, 2002, 2006 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 3 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue