mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-24 12:20:20 +02:00
Import R6RS bytevectors and I/O ports from Guile-R6RS-Libs 0.2.
* README: Document dependency on GNU libunistring. * benchmark-suite/Makefile.am (SCM_BENCHMARKS): Add `benchmark/bytevectors.bm'. * configure.in: Make sure we have libunistring; update $LIBS. * libguile.h: Include "bytevectors.h" and "r6rs-ports.h". * libguile/Makefile.am (libguile_la_SOURCES): Add `bytevectors.c' and `r6rs-ports.c' (DOT_X_FILES): Add `bytevectors.x' and `r6rs-ports.x'. (DOT_DOC_FILES): Add `bytevectors.doc' and `r6rs-ports.doc'. (noinst_HEADERS): Add `ieee-754.h'. (modinclude_HEADERS): Add `bytevectors.h' and `r6rs-ports.h' * libguile/validate.h (SCM_VALIDATE_BYTEVECTOR): New macro. * module/Makefile.am (SOURCES): Add $(RNRS_SOURCES). (RNRS_SOURCES): New variable. * test-suite/Makefile.am (SCM_TESTS): Add `bytevectors.test' and `r6rs-ports.test'.
This commit is contained in:
parent
24d56127bb
commit
1ee2c72eaf
18 changed files with 4688 additions and 12 deletions
|
@ -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-mark.c gc-segment.c gc-malloc.c gc-card.c \
|
||||
|
@ -115,7 +116,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 \
|
||||
|
@ -134,7 +136,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 eq.x error.x eval.x evalext.x \
|
||||
extensions.x feature.x fluids.x fports.x futures.x gc.x gc-mark.x \
|
||||
|
@ -143,7 +146,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 \
|
||||
|
@ -155,7 +159,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 \
|
||||
|
@ -165,7 +170,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 \
|
||||
|
@ -204,7 +210,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 \
|
||||
|
@ -223,7 +229,8 @@ 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 \
|
||||
boolean.h chars.h continuations.h convert.h debug.h debug-malloc.h \
|
||||
boolean.h bytevectors.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 \
|
||||
feature.h filesys.h fluids.h fports.h futures.h gc.h \
|
||||
|
@ -232,7 +239,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 \
|
||||
|
|
1978
libguile/bytevectors.c
Normal file
1978
libguile/bytevectors.c
Normal file
File diff suppressed because it is too large
Load diff
133
libguile/bytevectors.h
Normal file
133
libguile/bytevectors.h
Normal file
|
@ -0,0 +1,133 @@
|
|||
#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 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
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "libguile/__scm.h"
|
||||
|
||||
|
||||
/* R6RS bytevectors. */
|
||||
|
||||
#define SCM_BYTEVECTOR_LENGTH(_bv) \
|
||||
((unsigned) 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_make_bytevector (SCM, SCM);
|
||||
SCM_API SCM scm_c_make_bytevector (unsigned);
|
||||
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_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_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_API void scm_init_bytevectors (void);
|
||||
|
||||
SCM_INTERNAL scm_t_bits scm_tc16_bytevector;
|
||||
SCM_INTERNAL SCM scm_c_take_bytevector (signed char *, unsigned);
|
||||
|
||||
#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, unsigned);
|
||||
SCM_INTERNAL SCM scm_null_bytevector;
|
||||
|
||||
#endif /* SCM_BYTEVECTORS_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 */
|
1118
libguile/r6rs-ports.c
Normal file
1118
libguile/r6rs-ports.c
Normal file
File diff suppressed because it is too large
Load diff
43
libguile/r6rs-ports.h
Normal file
43
libguile/r6rs-ports.h
Normal file
|
@ -0,0 +1,43 @@
|
|||
#ifndef SCM_R6RS_PORTS_H
|
||||
#define SCM_R6RS_PORTS_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 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
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "libguile/__scm.h"
|
||||
|
||||
/* R6RS I/O Ports. */
|
||||
|
||||
SCM_API SCM scm_eof_object (void);
|
||||
SCM_API SCM scm_open_bytevector_input_port (SCM, SCM);
|
||||
SCM_API SCM scm_make_custom_binary_input_port (SCM, SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_get_u8 (SCM);
|
||||
SCM_API SCM scm_lookahead_u8 (SCM);
|
||||
SCM_API SCM scm_get_bytevector_n (SCM, SCM);
|
||||
SCM_API SCM scm_get_bytevector_n_x (SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_get_bytevector_some (SCM);
|
||||
SCM_API SCM scm_get_bytevector_all (SCM);
|
||||
SCM_API SCM scm_put_u8 (SCM, SCM);
|
||||
SCM_API SCM scm_put_bytevector (SCM, SCM, SCM, SCM);
|
||||
SCM_API SCM scm_open_bytevector_output_port (SCM);
|
||||
SCM_API SCM scm_make_custom_binary_output_port (SCM, SCM, SCM, SCM, SCM);
|
||||
|
||||
SCM_API void scm_init_r6rs_ports (void);
|
||||
|
||||
#endif /* SCM_R6RS_PORTS_H */
|
|
@ -3,7 +3,7 @@
|
|||
#ifndef SCM_VALIDATE_H
|
||||
#define SCM_VALIDATE_H
|
||||
|
||||
/* Copyright (C) 1999,2000,2001, 2002, 2004, 2006, 2007 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1999,2000,2001, 2002, 2004, 2006, 2007, 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
|
||||
|
@ -150,6 +150,9 @@
|
|||
cvar = scm_to_bool (flag); \
|
||||
} while (0)
|
||||
|
||||
#define SCM_VALIDATE_BYTEVECTOR(_pos, _obj) \
|
||||
SCM_VALIDATE_SMOB ((_pos), (_obj), bytevector)
|
||||
|
||||
#define SCM_VALIDATE_CHAR(pos, scm) SCM_MAKE_VALIDATE_MSG (pos, scm, CHARP, "character")
|
||||
|
||||
#define SCM_VALIDATE_CHAR_COPY(pos, scm, cvar) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue