[uim-commit] r1952 - branches/r5rs/sigscheme
kzk at freedesktop.org
kzk at freedesktop.org
Wed Nov 2 22:59:48 PST 2005
Author: kzk
Date: 2005-11-02 22:59:14 -0800 (Wed, 02 Nov 2005)
New Revision: 1952
Modified:
branches/r5rs/sigscheme/config.h
branches/r5rs/sigscheme/datas.c
branches/r5rs/sigscheme/debug.c
branches/r5rs/sigscheme/error.c
branches/r5rs/sigscheme/io.c
branches/r5rs/sigscheme/operations-srfi6.c
branches/r5rs/sigscheme/read.c
branches/r5rs/sigscheme/sigscheme.c
branches/r5rs/sigscheme/sigscheme.h
branches/r5rs/sigscheme/sigschemeinternal.h
branches/r5rs/sigscheme/sigschemetype-compact.h
branches/r5rs/sigscheme/sigschemetype.h
Log:
* introduce new Port scheme as default
Modified: branches/r5rs/sigscheme/config.h
===================================================================
--- branches/r5rs/sigscheme/config.h 2005-11-03 05:10:43 UTC (rev 1951)
+++ branches/r5rs/sigscheme/config.h 2005-11-03 06:59:14 UTC (rev 1952)
@@ -82,7 +82,6 @@
#define SCM_VOLATILE_OUTPUT 0 /* always flush files on write */
#define SCM_EXCEPTION_HANDLING 1 /* use SRFI-34 base exception handling */
#define SCM_OBJ_COMPACT 0 /* object representation compaction (experimental) */
-#define SCM_USE_NEWPORT 1 /* use experimental port implementation */
#define SCM_GCC4_READY_GC 1 /* use experimental gcc4-ready stack protection */
@@ -129,10 +128,8 @@
#define SCM_VOLATILE_OUTPUT 1
#endif /* SCM_DEBUG */
-#if SCM_USE_NEWPORT
/* for Scm_eval_c_string_internal() */
#undef SCM_USE_SRFI6
#define SCM_USE_SRFI6 1
-#endif /* SCM_USE_NEWPORT */
#endif /* __SIGSCHEME_CONFIG_H */
Modified: branches/r5rs/sigscheme/datas.c
===================================================================
--- branches/r5rs/sigscheme/datas.c 2005-11-03 05:10:43 UTC (rev 1951)
+++ branches/r5rs/sigscheme/datas.c 2005-11-03 06:59:14 UTC (rev 1952)
@@ -236,14 +236,6 @@
static void enter_dynamic_extent(ScmObj dest);
static void exit_dynamic_extent(ScmObj dest);
-#if !SCM_USE_NEWPORT
-/* port */
-static int fileport_getc(ScmObj port);
-static void fileport_print(ScmObj port, const char *str);
-static int stringport_getc(ScmObj port);
-static void stringport_print(ScmObj port, const char *str);
-#endif /* SCM_USE_NEWPORT */
-
/* continuation */
static void initialize_continuation_env(void);
static void finalize_continuation_env(void);
@@ -641,25 +633,8 @@
break;
case ScmPort:
-#if SCM_USE_NEWPORT
if (SCM_PORT_IMPL(obj))
SCM_PORT_CLOSE_IMPL(obj);
-#else /* SCM_USE_NEWPORT */
- /* handle each port type */
- switch (SCM_PORT_PORTTYPE(obj)) {
- case PORT_FILE:
- if (SCM_PORT_FILENAME(obj))
- free(SCM_PORT_FILENAME(obj));
- break;
- case PORT_STRING:
- if (SCM_PORT_STR(obj))
- free(SCM_PORT_STR(obj));
- break;
- }
- /* free port info */
- if (SCM_PORT_PORTINFO(obj))
- free(SCM_PORT_PORTINFO(obj));
-#endif /* SCM_USE_NEWPORT */
break;
/* rarely swept objects */
@@ -870,7 +845,6 @@
return obj;
}
-#if SCM_USE_NEWPORT
ScmObj Scm_NewPort(ScmCharPort *cport, enum ScmPortFlag flag)
{
ScmObj obj = SCM_FALSE;
@@ -890,110 +864,6 @@
return obj;
}
-#else /* SCM_USE_NEWPORT */
-
-ScmObj Scm_NewFilePort(FILE *file, const char *filename,
- enum ScmPortDirection pdirection)
-{
- ScmObj obj = SCM_FALSE;
- ScmPortInfo *pinfo = (ScmPortInfo *)malloc(sizeof(ScmPortInfo));
-
- SCM_NEW_OBJ_INTERNAL(obj);
-
- SCM_ENTYPE_PORT(obj);
- SCM_PORT_SET_PORTDIRECTION(obj, pdirection);
-
- SCM_PORT_SET_PORTINFO(obj, pinfo);
- SCM_PORT_SET_PORTTYPE(obj, PORT_FILE);
- SCM_PORT_SET_FILE(obj, file);
- SCM_PORT_SET_FILENAME(obj, strdup(filename));
- SCM_PORT_SET_LINE(obj, 0);
- SCM_PORT_SET_GETC_FUNC(obj, fileport_getc);
- SCM_PORT_SET_PRINT_FUNC(obj, fileport_print);
- SCM_PORT_SET_UNGOTTENCHAR(obj, 0);
-
- return obj;
-}
-
-static int fileport_getc(ScmObj port)
-{
- int c = SCM_PORT_UNGOTTENCHAR(port);
- if (!c) {
- c = fgetc(SCM_PORT_FILE(port));
- if (c == '\n')
- SCM_PORT_LINE(port)++;
- }
-
- SCM_PORT_SET_UNGOTTENCHAR(port, 0);
- return c;
-}
-
-static void fileport_print(ScmObj port, const char *str)
-{
- fputs(str, SCM_PORT_FILE(port));
-}
-
-ScmObj Scm_NewStringPort(const char *str, enum ScmPortDirection pdirection)
-{
- ScmObj obj = SCM_FALSE;
- ScmPortInfo *pinfo = (ScmPortInfo *)malloc(sizeof(ScmPortInfo));
-
- SCM_NEW_OBJ_INTERNAL(obj);
-
- SCM_ENTYPE_PORT(obj);
- SCM_PORT_SET_PORTDIRECTION(obj, pdirection);
-
- SCM_PORT_SET_PORTINFO(obj, pinfo);
- SCM_PORT_SET_PORTTYPE(obj, PORT_STRING);
- if (str)
- SCM_PORT_SET_STR(obj, strdup(str));
- else
- SCM_PORT_SET_STR(obj, NULL);
- SCM_PORT_SET_STR_CURRENTPOS(obj, SCM_PORT_STR(obj));
- SCM_PORT_SET_GETC_FUNC(obj, stringport_getc);
- SCM_PORT_SET_PRINT_FUNC(obj, stringport_print);
- SCM_PORT_SET_UNGOTTENCHAR(obj, 0);
-
- return obj;
-}
-
-static int stringport_getc(ScmObj port)
-{
- int c = SCM_PORT_UNGOTTENCHAR(port);
- if (!c) {
- c = (*SCM_PORT_STR_CURRENTPOS(port));
- if (c == '\0')
- c = EOF;
- SCM_PORT_STR_CURRENTPOS(port)++;
- }
-
- SCM_PORT_SET_UNGOTTENCHAR(port, 0);
- return c;
-}
-
-static void stringport_print(ScmObj port, const char *str)
-{
- char *p = NULL;
- char *str_start = SCM_PORT_STR(port);
- int len_delta = strlen(str);
- int old_len = 0;
- int new_len = 0;
-
- if (str_start)
- old_len = SCM_PORT_STR_CURRENTPOS(port) - str_start;
- else
- old_len = 0;
-
- new_len = old_len + len_delta;
-
- p = (char *)realloc(str_start, new_len + 1);
- memcpy(p + old_len, str, len_delta + 1); /* Copy '\0' as well. */
-
- SCM_PORT_SET_STR(port, p);
- SCM_PORT_SET_STR_CURRENTPOS(port, p + new_len);
-}
-#endif /* SCM_USE_NEWPORT */
-
ScmObj Scm_NewContinuation(void)
{
ScmObj obj = SCM_FALSE;
Modified: branches/r5rs/sigscheme/debug.c
===================================================================
--- branches/r5rs/sigscheme/debug.c 2005-11-03 05:10:43 UTC (rev 1951)
+++ branches/r5rs/sigscheme/debug.c 2005-11-03 06:59:14 UTC (rev 1952)
@@ -188,23 +188,14 @@
return;
ASSERT_PORTP(port);
-#if SCM_USE_NEWPORT
SCM_ASSERT_LIVE_PORT(port);
if (!(SCM_PORT_FLAG(port) & SCM_PORTFLAG_OUTPUT))
-#else
- if (SCM_PORT_PORTDIRECTION(port) != PORT_OUTPUT)
-#endif
ERR("output port is required");
print_ScmObj_internal(port, obj, AS_WRITE);
#if SCM_VOLATILE_OUTPUT
-#if SCM_USE_NEWPORT
SCM_PORT_FLUSH(port);
-#else /* SCM_USE_NEWPORT */
- if (SCM_PORT_PORTTYPE(port) == PORT_FILE)
- fflush(SCM_PORT_FILE(port));
-#endif /* SCM_USE_NEWPORT */
#endif /* SCM_VOLATILE_OUTPUT */
}
@@ -216,23 +207,14 @@
return;
ASSERT_PORTP(port);
-#if SCM_USE_NEWPORT
SCM_ASSERT_LIVE_PORT(port);
if (!(SCM_PORT_FLAG(port) & SCM_PORTFLAG_OUTPUT))
-#else
- if (SCM_PORT_PORTDIRECTION(port) != PORT_OUTPUT)
-#endif
ERR("output port is required");
print_ScmObj_internal(port, obj, AS_DISPLAY);
#if SCM_VOLATILE_OUTPUT
-#if SCM_USE_NEWPORT
SCM_PORT_FLUSH(port);
-#else /* SCM_USE_NEWPORT */
- if (SCM_PORT_PORTTYPE(port) == PORT_FILE)
- fflush(SCM_PORT_FILE(port));
-#endif /* SCM_USE_NEWPORT */
#endif /* SCM_VOLATILE_OUTPUT */
}
@@ -469,46 +451,26 @@
static void print_port(ScmObj port, ScmObj obj, enum OutputType otype)
{
-#if SCM_USE_NEWPORT
char *info;
-#endif
SCM_PORT_PRINT(port, "#<");
/* input or output */
-#if SCM_USE_NEWPORT
/* print "i", "o" or "io" if bidirectional port */
if (SCM_PORT_FLAG(obj) & SCM_PORTFLAG_INPUT)
SCM_PORT_PRINT(port, "i");
if (SCM_PORT_FLAG(obj) & SCM_PORTFLAG_OUTPUT)
SCM_PORT_PRINT(port, "o");
-#else
- if (SCM_PORT_PORTDIRECTION(obj) == PORT_INPUT)
- SCM_PORT_PRINT(port, "i");
- else
- SCM_PORT_PRINT(port, "o");
-#endif
SCM_PORT_PRINT(port, "port");
/* file or string */
-
-#if SCM_USE_NEWPORT
info = SCM_PORT_INSPECT(obj);
if (*info) {
SCM_PORT_PRINT(port, " ");
SCM_PORT_PRINT(port, info);
}
free(info);
-#else /* SCM_USE_NEWPORT */
- if (SCM_PORT_PORTTYPE(obj) == PORT_FILE) {
- snprintf(scm_portbuffer, PORTBUFFER_SIZE, " file %s", SCM_PORT_FILENAME(obj));
- SCM_PORT_PRINT(port, scm_portbuffer);
- } else if (SCM_PORT_PORTTYPE(obj) == PORT_STRING) {
- snprintf(scm_portbuffer, PORTBUFFER_SIZE, " string %s", SCM_PORT_STR(obj));
- SCM_PORT_PRINT(port, scm_portbuffer);
- }
-#endif /* SCM_USE_NEWPORT */
SCM_PORT_PRINT(port, ">");
}
Modified: branches/r5rs/sigscheme/error.c
===================================================================
--- branches/r5rs/sigscheme/error.c 2005-11-03 05:10:43 UTC (rev 1951)
+++ branches/r5rs/sigscheme/error.c 2005-11-03 06:59:14 UTC (rev 1952)
@@ -223,7 +223,6 @@
}
/* TODO: move to io.c */
-#if SCM_USE_NEWPORT
void SigScm_PortPrintf(ScmObj port, const char *fmt, ...)
{
va_list args;
@@ -242,7 +241,6 @@
#endif
}
}
-#endif /* SCM_USE_NEWPORT */
void SigScm_ErrorPrintf(const char *fmt, ...)
{
@@ -255,34 +253,10 @@
void SigScm_VErrorPrintf(const char *fmt, va_list args)
{
-#if SCM_USE_NEWPORT
SigScm_VPortPrintf(scm_current_error_port, fmt, args);
-#else /* SCM_USE_NEWPORT */
- FILE *err;
-
- if (!FALSEP(scm_current_error_port)) {
- err = SCM_PORT_FILE(scm_current_error_port);
- vfprintf(err, fmt, args);
-#if SCM_VOLATILE_OUTPUT
- fflush(err);
-#endif
- }
-#endif /* SCM_USE_NEWPORT */
}
void SigScm_ErrorNewline(void)
{
-#if SCM_USE_NEWPORT
SigScm_PortPrintf(scm_current_error_port, "\n");
-#else /* SCM_USE_NEWPORT */
- FILE *err;
-
- if (!FALSEP(scm_current_error_port)) {
- err = SCM_PORT_FILE(scm_current_error_port);
- fputc('\n', err);
-#if SCM_VOLATILE_OUTPUT
- fflush(err);
-#endif
- }
-#endif /* SCM_USE_NEWPORT */
}
Modified: branches/r5rs/sigscheme/io.c
===================================================================
--- branches/r5rs/sigscheme/io.c 2005-11-03 05:10:43 UTC (rev 1951)
+++ branches/r5rs/sigscheme/io.c 2005-11-03 06:59:14 UTC (rev 1952)
@@ -42,10 +42,8 @@
=======================================*/
#include "sigscheme.h"
#include "sigschemeinternal.h"
-#if SCM_USE_NEWPORT
#include "sbcport.h"
#include "fileport.h"
-#endif
/*=======================================
File Local Struct Declarations
@@ -120,7 +118,6 @@
}
#endif
-#if SCM_USE_NEWPORT
ScmObj Scm_MakeSharedFilePort(FILE *file, const char *aux_info,
enum ScmPortFlag flag)
{
@@ -130,7 +127,6 @@
bport = ScmFilePort_new_shared(file, aux_info);
return Scm_NewPort(ScmSingleByteCharPort_new(bport), flag);
}
-#endif
/*=======================================
R5RS : 6.6 Input and Output
@@ -179,11 +175,7 @@
DECLARE_FUNCTION("input-port?", ProcedureFixed1);
ASSERT_PORTP(port);
-#if SCM_USE_NEWPORT
return (SCM_PORT_FLAG(port) & SCM_PORTFLAG_INPUT) ? SCM_TRUE : SCM_FALSE;
-#else /* SCM_USE_NEWPORT */
- return (SCM_PORT_PORTDIRECTION(port) == PORT_INPUT) ? SCM_TRUE : SCM_FALSE;
-#endif /* SCM_USE_NEWPORT */
}
ScmObj ScmOp_output_portp(ScmObj port)
@@ -191,11 +183,7 @@
DECLARE_FUNCTION("output-port?", ProcedureFixed1);
ASSERT_PORTP(port);
-#if SCM_USE_NEWPORT
return (SCM_PORT_FLAG(port) & SCM_PORTFLAG_OUTPUT) ? SCM_TRUE : SCM_FALSE;
-#else /* SCM_USE_NEWPORT */
- return (SCM_PORT_PORTDIRECTION(port) == PORT_OUTPUT) ? SCM_TRUE : SCM_FALSE;
-#endif /* SCM_USE_NEWPORT */
}
ScmObj ScmOp_current_input_port(void)
@@ -252,100 +240,58 @@
ScmObj ScmOp_open_input_file(ScmObj filepath)
{
-#if SCM_USE_NEWPORT
ScmBytePort *bport;
-#else
- FILE *f = NULL;
-#endif
DECLARE_FUNCTION("open-input-file", ProcedureFixed1);
ASSERT_STRINGP(filepath);
-#if SCM_USE_NEWPORT
bport = ScmFilePort_open_input_file(SCM_STRING_STR(filepath));
if (!bport)
ERR_OBJ("cannot open file ", filepath);
return Scm_NewPort(ScmSingleByteCharPort_new(bport), SCM_PORTFLAG_INPUT);
-#else /* SCM_USE_NEWPORT */
- f = fopen(SCM_STRING_STR(filepath), "r");
- if (!f)
- ERR_OBJ("cannot open file ", filepath);
-
- return Scm_NewFilePort(f, SCM_STRING_STR(filepath), PORT_INPUT);
-#endif /* SCM_USE_NEWPORT */
}
ScmObj ScmOp_open_output_file(ScmObj filepath)
{
-#if SCM_USE_NEWPORT
ScmBytePort *bport;
-#else
- FILE *f = NULL;
-#endif
DECLARE_FUNCTION("open-output-file", ProcedureFixed1);
ASSERT_STRINGP(filepath);
-#if SCM_USE_NEWPORT
bport = ScmFilePort_open_output_file(SCM_STRING_STR(filepath));
if (!bport)
ERR_OBJ("cannot open file ", filepath);
return Scm_NewPort(ScmSingleByteCharPort_new(bport), SCM_PORTFLAG_OUTPUT);
-#else /* SCM_USE_NEWPORT */
- f = fopen(SCM_STRING_STR(filepath), "w");
- if (!f)
- ERR_OBJ("cannot open file ", filepath);
-
- return Scm_NewFilePort(f, SCM_STRING_STR(filepath), PORT_OUTPUT);
-#endif /* SCM_USE_NEWPORT */
}
ScmObj ScmOp_close_input_port(ScmObj port)
{
-#if SCM_USE_NEWPORT
int flag;
-#endif
DECLARE_FUNCTION("close-input-port", ProcedureFixed1);
ASSERT_PORTP(port);
-#if SCM_USE_NEWPORT
flag = SCM_PORT_FLAG(port) & ~SCM_PORTFLAG_LIVE_INPUT;
SCM_PORT_SET_FLAG(port, flag);
if (!(flag & SCM_PORTFLAG_ALIVENESS_MASK) && SCM_PORT_IMPL(port))
SCM_PORT_CLOSE_IMPL(port);
-#else /* SCM_USE_NEWPORT */
- if (SCM_PORT_PORTTYPE(port) == PORT_FILE
- && SCM_PORT_PORTDIRECTION(port) == PORT_INPUT
- && SCM_PORT_FILE(port))
- fclose(SCM_PORT_FILE(port));
-#endif /* SCM_USE_NEWPORT */
return SCM_UNDEF;
}
ScmObj ScmOp_close_output_port(ScmObj port)
{
-#if SCM_USE_NEWPORT
int flag;
-#endif
DECLARE_FUNCTION("close-output-port", ProcedureFixed1);
ASSERT_PORTP(port);
-#if SCM_USE_NEWPORT
flag = SCM_PORT_FLAG(port) & ~SCM_PORTFLAG_LIVE_OUTPUT;
SCM_PORT_SET_FLAG(port, flag);
if (!(flag & SCM_PORTFLAG_ALIVENESS_MASK) && SCM_PORT_IMPL(port))
SCM_PORT_CLOSE_IMPL(port);
-#else /* SCM_USE_NEWPORT */
- if (SCM_PORT_PORTTYPE(port) == PORT_FILE
- && SCM_PORT_PORTDIRECTION(port) == PORT_OUTPUT
- && SCM_PORT_FILE(port))
- fclose(SCM_PORT_FILE(port));
-#endif /* SCM_USE_NEWPORT */
return SCM_UNDEF;
}
@@ -382,17 +328,13 @@
PREPARE_PORT(port, args, scm_current_input_port);
-#if SCM_USE_NEWPORT
ch = SCM_PORT_GET_CHAR(port);
if (ch == EOF)
return SCM_EOF;
buf[0] = ch;
buf[1] = '\0';
-#else /* SCM_USE_NEWPORT */
- SCM_PORT_GETC(port, buf[0]);
- buf[1] = '\0';
-#endif /* SCM_USE_NEWPORT */
+
return Scm_NewChar(strdup(buf));
}
@@ -406,7 +348,6 @@
PREPARE_PORT(port, args, scm_current_input_port);
-#if SCM_USE_NEWPORT
ch = SCM_PORT_PEEK_CHAR(port);
if (ch == EOF)
return SCM_EOF;
@@ -414,10 +355,6 @@
buf[0] = ch;
buf[1] = '\0';
return Scm_NewChar(strdup(buf));
-#else /* SCM_USE_NEWPORT */
- /* FIXME: implement this */
- return SCM_FALSE;
-#endif /* SCM_USE_NEWPORT */
}
ScmObj ScmOp_eof_objectp(ScmObj obj)
@@ -433,12 +370,7 @@
PREPARE_PORT(port, args, scm_current_input_port);
-#if SCM_USE_NEWPORT
return (SCM_PORT_CHAR_READYP(port))? SCM_TRUE : SCM_FALSE;
-#else /* SCM_USE_NEWPORT */
- /* FIXME: implement this */
- return SCM_FALSE;
-#endif /* SCM_USE_NEWPORT */
}
/*===========================================================================
@@ -713,7 +645,5 @@
/* FIXME: link conditionally with autoconf */
-#if SCM_USE_NEWPORT
#include "sbcport.c"
#include "fileport.c"
-#endif
Modified: branches/r5rs/sigscheme/operations-srfi6.c
===================================================================
--- branches/r5rs/sigscheme/operations-srfi6.c 2005-11-03 05:10:43 UTC (rev 1951)
+++ branches/r5rs/sigscheme/operations-srfi6.c 2005-11-03 06:59:14 UTC (rev 1952)
@@ -41,11 +41,9 @@
=======================================*/
#include "sigscheme.h"
#include "sigschemeinternal.h"
-#if SCM_USE_NEWPORT
#include "baseport.h"
#include "sbcport.h"
#include "strport.h"
-#endif
/*=======================================
File Local Struct Declarations
@@ -62,18 +60,14 @@
/*=======================================
File Local Function Declarations
=======================================*/
-#if SCM_USE_NEWPORT
static void istrport_finalize(char **str, int ownership, void **opaque);
-#endif
/*=======================================
Function Implementations
=======================================*/
void SigScm_Initialize_SRFI6(void)
{
-#if SCM_USE_NEWPORT
Scm_strport_init();
-#endif
/*=======================================================================
SRFI-6 Procedures
@@ -83,72 +77,50 @@
Scm_RegisterProcedureFixed1("get-output-string", ScmOp_SRFI6_get_output_string);
}
-#if SCM_USE_NEWPORT
static void istrport_finalize(char **str, int ownership, void **opaque)
{
SigScm_GC_Unprotect((ScmObj *)opaque);
}
-#endif /* SCM_USE_NEWPORT */
ScmObj ScmOp_SRFI6_open_input_string(ScmObj str)
{
-#if SCM_USE_NEWPORT
ScmObj *hold_str;
ScmBytePort *bport;
-#endif
DECLARE_FUNCTION("open-input-string", ProcedureFixed1);
ASSERT_STRINGP(str);
-#if SCM_USE_NEWPORT
bport = ScmInputStrPort_new_const(SCM_STRING_STR(str), istrport_finalize);
hold_str = (ScmObj *)ScmInputStrPort_ref_opaque(bport);
*hold_str = str;
SigScm_GC_Protect(hold_str);
return Scm_NewPort(ScmSingleByteCharPort_new(bport), SCM_PORTFLAG_INPUT);
-#else /* SCM_USE_NEWPORT */
- return Scm_NewStringPort(SCM_STRING_STR(str), PORT_INPUT);
-#endif /* SCM_USE_NEWPORT */
}
ScmObj ScmOp_SRFI6_open_output_string(void)
{
-#if SCM_USE_NEWPORT
ScmBytePort *bport;
-#endif
DECLARE_FUNCTION("open-output-string", ProcedureFixed0);
-#if SCM_USE_NEWPORT
bport = ScmOutputStrPort_new(NULL);
return Scm_NewPort(ScmSingleByteCharPort_new(bport), SCM_PORTFLAG_OUTPUT);
-#else /* SCM_USE_NEWPORT */
- return Scm_NewStringPort(NULL, PORT_OUTPUT);
-#endif /* SCM_USE_NEWPORT */
}
ScmObj ScmOp_SRFI6_get_output_string(ScmObj port)
{
-#if SCM_USE_NEWPORT
ScmBaseCharPort *cport;
-#endif
DECLARE_FUNCTION("get-output-string", ProcedureFixed1);
ASSERT_PORTP(port);
-#if SCM_USE_NEWPORT
SCM_ASSERT_LIVE_PORT(port);
cport = SCM_PORT_DYNAMIC_CAST(ScmBaseCharPort, SCM_PORT_IMPL(port));
if (!cport)
SCM_PORT_ERROR_INVALID_TYPE(CHAR,
SCM_PORT_IMPL(port), ScmBaseCharPort);
return Scm_NewStringCopying(ScmOutputStrPort_str(cport->bport));
-#else /* SCM_USE_NEWPORT */
- return Scm_NewStringCopying(SCM_PORT_STR(port));
-#endif /* SCM_USE_NEWPORT */
}
/* FIXME: link conditionally with autoconf */
-#if SCM_USE_NEWPORT
#include "strport.c"
-#endif
Modified: branches/r5rs/sigscheme/read.c
===================================================================
--- branches/r5rs/sigscheme/read.c 2005-11-03 05:10:43 UTC (rev 1951)
+++ branches/r5rs/sigscheme/read.c 2005-11-03 06:59:14 UTC (rev 1952)
@@ -65,19 +65,15 @@
=======================================*/
#include "sigscheme.h"
#include "sigschemeinternal.h"
-#if SCM_USE_NEWPORT
#include "sbcport.h"
-#endif
/*=======================================
File Local Struct Declarations
=======================================*/
-#if SCM_USE_NEWPORT
enum LexerState {
LEX_ST_NORMAL,
LEX_ST_COMMENT
};
-#endif
/*=======================================
File Local Macro Declarations
@@ -87,11 +83,7 @@
case ' ': case '\t': case '\n': case '\r': case '\v': case '\f'
/* FIXME: discard at first of each reader instead of caller */
-#if SCM_USE_NEWPORT
#define DISCARD_LOOKAHEAD(port) (SCM_PORT_GET_CHAR(port))
-#else
-#define DISCARD_LOOKAHEAD(port)
-#endif
/*=======================================
Variable Declarations
@@ -149,8 +141,6 @@
static int skip_comment_and_space(ScmObj port)
{
-#if SCM_USE_NEWPORT
- /* WARNING: the behavior is different to !SCM_USE_NEWPORT */
int c, state;
for (state = LEX_ST_NORMAL;;) {
@@ -172,28 +162,6 @@
}
SCM_PORT_GET_CHAR(port); /* skip the char */
}
-#else /* SCM_USE_NEWPORT */
- int c = 0;
- while (1) {
- SCM_PORT_GETC(port, c);
- if (c == EOF) {
- return c;
- } else if(c == ';') {
- while (1) {
- SCM_PORT_GETC(port, c);
- if (c == '\n' || c == '\r') {
- break;
- }
- if (c == EOF) return c;
- }
- continue;
- } else if(isspace(c)) {
- continue;
- }
-
- return c;
- }
-#endif /* SCM_USE_NEWPORT */
}
static ScmObj read_sexpression(ScmObj port)
@@ -228,11 +196,7 @@
return read_quote(port, SCM_QUASIQUOTE);
case ',':
DISCARD_LOOKAHEAD(port);
-#if SCM_USE_NEWPORT
c1 = SCM_PORT_PEEK_CHAR(port);
-#else
- SCM_PORT_GETC(port, c1);
-#endif
if (c1 == EOF) {
SigScm_Error("EOF in unquote");
} else if (c1 == '@') {
@@ -245,11 +209,7 @@
break;
case '#':
DISCARD_LOOKAHEAD(port);
-#if SCM_USE_NEWPORT
c1 = SCM_PORT_PEEK_CHAR(port);
-#else
- SCM_PORT_GETC(port, c1);
-#endif
switch (c1) {
case 't': case 'T':
DISCARD_LOOKAHEAD(port);
@@ -291,22 +251,16 @@
ScmObj list_tail = SCM_NULL;
ScmObj item = SCM_NULL;
ScmObj cdr = SCM_NULL;
-#if SCM_USE_NEWPORT
ScmBaseCharPort *basecport;
int start_line, cur_line;
-#else
- int line = SCM_PORT_LINE(port);
-#endif
int c = 0;
int c2 = 0;
char *token = NULL;
CDBG((SCM_DBG_PARSER, "read_list"));
-#if SCM_USE_NEWPORT
basecport = SCM_PORT_DYNAMIC_CAST(ScmBaseCharPort, SCM_PORT_IMPL(port));
if (basecport)
start_line = ScmBaseCharPort_line_number(basecport);
-#endif
while (1) {
c = skip_comment_and_space(port);
@@ -314,16 +268,11 @@
CDBG((SCM_DBG_PARSER, "read_list c = [%c]", c));
if (c == EOF) {
-#if SCM_USE_NEWPORT
if (basecport) {
cur_line = ScmBaseCharPort_line_number(basecport);
ERR("EOF inside list at line %d. (starting from line %d)",
cur_line, start_line);
}
-#else
- if (SCM_PORT_PORTTYPE(port) == PORT_FILE)
- SigScm_Error("EOF inside list. (starting from line %d)", line + 1);
-#endif
else
SigScm_Error("EOF inside list.");
} else if (c == closeParen) {
@@ -331,12 +280,7 @@
return list_head;
} else if (c == '.') {
DISCARD_LOOKAHEAD(port);
- c2 = 0;
-#if SCM_USE_NEWPORT
c2 = SCM_PORT_PEEK_CHAR(port);
-#else
- SCM_PORT_GETC(port, c2);
-#endif
CDBG((SCM_DBG_PARSER, "read_list process_dot c2 = [%c]", c2));
if (isspace(c2) || c2 == '(' || c2 == '"' || c2 == ';') {
DISCARD_LOOKAHEAD(port);
@@ -515,11 +459,7 @@
char *dst = NULL;
while (1) {
-#if SCM_USE_NEWPORT
c = SCM_PORT_PEEK_CHAR(port);
-#else
- SCM_PORT_GETC(port, c);
-#endif
CDBG((SCM_DBG_PARSER, "c = %c", c));
@@ -548,11 +488,7 @@
char *dst = NULL;
while (1) {
-#if SCM_USE_NEWPORT
c = SCM_PORT_PEEK_CHAR(port);
-#else
- SCM_PORT_GETC(port, c);
-#endif
CDBG((SCM_DBG_PARSER, "c = %c", c));
Modified: branches/r5rs/sigscheme/sigscheme.c
===================================================================
--- branches/r5rs/sigscheme/sigscheme.c 2005-11-03 05:10:43 UTC (rev 1951)
+++ branches/r5rs/sigscheme/sigscheme.c 2005-11-03 06:59:14 UTC (rev 1952)
@@ -40,12 +40,10 @@
=======================================*/
#include "sigscheme.h"
#include "sigschemeinternal.h"
-#if SCM_USE_NEWPORT
#include "baseport.h"
#include "sbcport.h"
#include "fileport.h"
#include "strport.h"
-#endif
/*=======================================
File Local Struct Declarations
@@ -160,7 +158,6 @@
/*=======================================================================
Preallocated Ports
=======================================================================*/
-#if SCM_USE_NEWPORT
Scm_fileport_init();
Scm_sbcport_init();
@@ -170,11 +167,6 @@
SCM_PORTFLAG_OUTPUT);
scm_current_error_port = Scm_MakeSharedFilePort(stderr, "stderr",
SCM_PORTFLAG_OUTPUT);
-#else /* SCM_USE_NEWPORT */
- scm_current_input_port = Scm_NewFilePort(stdin, "stdin", PORT_INPUT);
- scm_current_output_port = Scm_NewFilePort(stdout, "stdout", PORT_OUTPUT);
- scm_current_error_port = Scm_NewFilePort(stderr, "stderr", PORT_OUTPUT);
-#endif /* SCM_USE_NEWPORT */
SigScm_GC_Protect(&scm_current_input_port);
SigScm_GC_Protect(&scm_current_output_port);
SigScm_GC_Protect(&scm_current_error_port);
@@ -445,16 +437,12 @@
{
ScmObj str_port = SCM_FALSE;
ScmObj ret = SCM_FALSE;
-#if SCM_USE_NEWPORT
ScmBytePort *bport;
ScmCharPort *cport;
bport = ScmInputStrPort_new_const(exp, NULL);
cport = ScmSingleByteCharPort_new(bport);
str_port = Scm_NewPort(cport, SCM_PORTFLAG_INPUT);
-#else
- str_port = Scm_NewStringPort(exp, PORT_INPUT);
-#endif
ret = SigScm_Read(str_port);
ret = EVAL(ret, SCM_INTERACTION_ENV);
Modified: branches/r5rs/sigscheme/sigscheme.h
===================================================================
--- branches/r5rs/sigscheme/sigscheme.h 2005-11-03 05:10:43 UTC (rev 1951)
+++ branches/r5rs/sigscheme/sigscheme.h 2005-11-03 06:59:14 UTC (rev 1952)
@@ -129,7 +129,6 @@
/*
* Port I/O Handling macros
*/
-#if SCM_USE_NEWPORT
#define SCM_CHARPORT_ERROR(cport, msg) (SigScm_Error(msg))
#define SCM_BYTEPORT_ERROR(bport, msg) (SigScm_Error(msg))
@@ -169,21 +168,8 @@
* SCM_CHARPORT_ERROR and SCM_BYTEPORT_ERROR must be defined before this
* inclusion
*/
-#if SCM_USE_NEWPORT
#include "baseport.h"
-#endif
-#else /* SCM_USE_NEWPORT */
-
-#define SCM_PORT_GETC(port, c) \
- (c = SCM_PORT_GETC_FUNC(port)(port))
-#define SCM_PORT_UNGETC(port,c) \
- (SCM_PORT_SET_UNGOTTENCHAR(port, c))
-#define SCM_PORT_PRINT(port, str) \
- (SCM_PORT_PRINT_FUNC(port)(port, str))
-#endif /* SCM_USE_NEWPORT */
-
-
/*=======================================
Struct Declarations
=======================================*/
@@ -406,12 +392,7 @@
ScmObj Scm_NewFunc(enum ScmFuncTypeCode type, ScmFuncType func);
ScmObj Scm_NewClosure(ScmObj exp, ScmObj env);
ScmObj Scm_NewVector(ScmObj *vec, int len);
-#if SCM_USE_NEWPORT
ScmObj Scm_NewPort(ScmCharPort *cport, enum ScmPortFlag flag);
-#else /* SCM_USE_NEWPORT */
-ScmObj Scm_NewFilePort(FILE *file, const char *filename, enum ScmPortDirection pdireciton);
-ScmObj Scm_NewStringPort(const char *str, enum ScmPortDirection pdirection);
-#endif /* SCM_USE_NEWPORT */
ScmObj Scm_NewContinuation(void);
#if !SCM_USE_VALUECONS
ScmObj Scm_NewValuePacket(ScmObj values);
@@ -580,10 +561,8 @@
/* io.c */
void SigScm_set_lib_path(const char *path);
-#if SCM_USE_NEWPORT
ScmObj Scm_MakeSharedFilePort(FILE *file, const char *aux_info,
enum ScmPortFlag flag);
-#endif
ScmObj ScmOp_call_with_input_file(ScmObj filepath, ScmObj proc);
ScmObj ScmOp_call_with_output_file(ScmObj filepath, ScmObj proc);
Modified: branches/r5rs/sigscheme/sigschemeinternal.h
===================================================================
--- branches/r5rs/sigscheme/sigschemeinternal.h 2005-11-03 05:10:43 UTC (rev 1951)
+++ branches/r5rs/sigscheme/sigschemeinternal.h 2005-11-03 06:59:14 UTC (rev 1952)
@@ -353,10 +353,8 @@
/* error.c */
void SigScm_ShowErrorHeader(void);
/* TODO: Move these functions to io.c */
-#if SCM_USE_NEWPORT
void SigScm_PortPrintf(ScmObj port, const char *fmt, ...);
void SigScm_VPortPrintf(ScmObj port, const char *fmt, va_list args);
-#endif /* SCM_USE_NEWPORT */
void SigScm_ErrorPrintf(const char *fmt, ...);
void SigScm_VErrorPrintf(const char *fmt, va_list args);
void SigScm_ErrorNewline(void);
Modified: branches/r5rs/sigscheme/sigschemetype-compact.h
===================================================================
--- branches/r5rs/sigscheme/sigschemetype-compact.h 2005-11-03 05:10:43 UTC (rev 1951)
+++ branches/r5rs/sigscheme/sigschemetype-compact.h 2005-11-03 06:59:14 UTC (rev 1952)
@@ -104,9 +104,6 @@
typedef struct ScmCell_ ScmCell;
typedef ScmCell *ScmObj;
typedef ScmObj *ScmRef;
-#if !SCM_USE_NEWPORT
-typedef struct _ScmPortInfo ScmPortInfo;
-#endif
typedef struct ScmEvalState_ ScmEvalState;
typedef ScmObj (*ScmFuncType)();
@@ -130,7 +127,6 @@
ScmObj cdr;
};
-#if SCM_USE_NEWPORT
enum ScmPortFlag {
SCM_PORTFLAG_NONE = 0,
SCM_PORTFLAG_OUTPUT = 1 << 0,
@@ -143,43 +139,6 @@
| SCM_PORTFLAG_LIVE_INPUT)
};
-#else /* SCM_USE_NEWPORT */
-
-/* ScmPort direction */
-enum ScmPortDirection {
- PORT_INPUT = 0,
- PORT_OUTPUT = 1
-};
-
-/* ScmPort type */
-enum ScmPortType {
- PORT_FILE = 0,
- PORT_STRING = 1
-};
-
-/* ScmPort Info */
-struct _ScmPortInfo {
- enum ScmPortType port_type; /* (PORT_FILE | PORT_STRING) */
-
- union {
- struct {
- FILE *file;
- char *filename;
- int line;
- } file_port;
-
- struct {
- char *port_str;
- const char *str_currentpos;
- } str_port;
- } info;
-
- int (*getc_func) (ScmObj port);
- void (*print_func) (ScmObj port, const char* str);
- int ungottenchar;
-};
-#endif /* SCM_USE_NEWPORT */
-
/*
* Function types:
*
@@ -494,39 +453,11 @@
#define SCM_FUNC_SET_CFUNC(a, fptr) (SCM_SET_VALUE_AS_PTR(SCM_AS_FUNC(a)->car, fptr, SCM_TAG_OTHERS_FUNC))
#define SCM_FUNC_SET_TYPECODE(a, code) (SCM_SET_VALUE_AS_INT(SCM_AS_FUNC(a)->cdr, code, SCM_TAG_OTHERS_VALUE_OFFSET_FUNC, SCM_TAG_OTHERS_FUNC))
-#if SCM_USE_NEWPORT
#define SCM_PORT_IMPL(a) (SCM_GET_VALUE_AS_PTR(SCM_AS_PORT(a)->car, ~SCM_TAG_OTHERS_MASK_PORT))
#define SCM_PORT_FLAG(a) (SCM_GET_VALUE_AS_INT(SCM_AS_PORT(a)->cdr, SCM_TAG_OTHERS_VALUE_OFFSET_PORT))
#define SCM_PORT_SET_IMPL(a, impl) (SCM_SET_VALUE_AS_PTR(SCM_AS_PORT(a)->car, impl, SCM_TAG_OTHERS_PORT))
#define SCM_PORT_SET_FLAG(a, flag) (SCM_SET_VALUE_AS_INT(SCM_AS_PORT(a)->cdr, flag, SCM_TAG_OTHERS_VALUE_OFFSET_PORT, SCM_TAG_OTHERS_PORT))
-#else /* SCM_USE_NEWPORT */
-#define SCM_PORT_PORTINFO(a) (SCM_GET_VALUE_AS_PTR(SCM_AS_PORT(a)->car, ~SCM_TAG_OTHERS_MASK_PORT))
-#define SCM_PORT_PORTDIRECTION(a) (SCM_GET_VALUE_AS_INT(SCM_AS_PORT(a)->cdr, SCM_TAG_OTHERS_VALUE_OFFSET_PORT))
-#define SCM_PORT_SET_PORTINFO(a, info) (SCM_SET_VALUE_AS_PTR(SCM_AS_PORT(a)->car, info, SCM_TAG_OTHERS_PORT))
-#define SCM_PORT_SET_PORTDIRECTION(a, dir) (SCM_SET_VALUE_AS_INT(SCM_AS_PORT(a)->cdr, dir, SCM_TAG_OTHERS_VALUE_OFFSET_PORT, SCM_TAG_OTHERS_PORT))
-#define SCM_PORT_PORTTYPE(a) (SCM_PORT_PORTINFO(a)->port_type)
-#define SCM_PORT_SET_PORTTYPE(a, type) (SCM_PORT_PORTTYPE(a) = type)
-#define SCM_PORT_UNGOTTENCHAR(a) (SCM_PORT_PORTINFO(a)->ungottenchar)
-#define SCM_PORT_SET_UNGOTTENCHAR(a, ch) (SCM_PORT_UNGOTTENCHAR(a) = ch)
-#define SCM_PORT_GETC_FUNC(a) (SCM_PORT_PORTINFO(a)->getc_func)
-#define SCM_PORT_SET_GETC_FUNC(a, func) (SCM_PORT_GETC_FUNC(a) = func)
-#define SCM_PORT_PRINT_FUNC(a) (SCM_PORT_PORTINFO(a)->print_func)
-#define SCM_PORT_SET_PRINT_FUNC(a, func) (SCM_PORT_PRINT_FUNC(a) = func)
-/* File Port */
-#define SCM_PORT_FILE(a) (SCM_PORT_PORTINFO(a)->info.file_port.file)
-#define SCM_PORT_SET_FILE(a, file) (SCM_PORT_FILE(a) = file)
-#define SCM_PORT_FILENAME(a) (SCM_PORT_PORTINFO(a)->info.file_port.filename)
-#define SCM_PORT_SET_FILENAME(a, filename) (SCM_PORT_FILENAME(a) = filename)
-#define SCM_PORT_LINE(a) (SCM_PORT_PORTINFO(a)->info.file_port.line)
-#define SCM_PORT_SET_LINE(a, line) (SCM_PORT_LINE(a) = line)
-/* String Port */
-#define SCM_PORT_STR(a) (SCM_PORT_PORTINFO(a)->info.str_port.port_str)
-#define SCM_PORT_SET_STR(a, str) (SCM_PORT_STR(a) = str)
-#define SCM_PORT_STR_CURRENTPOS(a) (SCM_PORT_PORTINFO(a)->info.str_port.str_currentpos)
-#define SCM_PORT_SET_STR_CURRENTPOS(a, pos) (SCM_PORT_STR_CURRENTPOS(a) = pos)
-#endif /* SCM_USE_NEWPORT */
-
#define SCM_CONTINUATION_ENV(a) (SCM_GET_VALUE_AS_PTR(a, ~SCM_TAG_OTHERS_MASK_CONTINUATION))
#define SCM_CONTINUATION_JMPENV(a) (SCM_CONTINUATION_ENV(a)->jmpenv)
#define SCM_CONTINUATION_DYNEXT(a) (SCM_CONTINUATION_ENV(a)->dynext)
Modified: branches/r5rs/sigscheme/sigschemetype.h
===================================================================
--- branches/r5rs/sigscheme/sigschemetype.h 2005-11-03 05:10:43 UTC (rev 1951)
+++ branches/r5rs/sigscheme/sigschemetype.h 2005-11-03 06:59:14 UTC (rev 1952)
@@ -49,9 +49,7 @@
typedef struct ScmCell_ ScmCell;
typedef ScmCell *ScmObj;
typedef ScmObj *ScmRef;
-#if !SCM_USE_NEWPORT
-typedef struct _ScmPortInfo ScmPortInfo;
-#endif
+
typedef struct ScmEvalState_ ScmEvalState;
typedef ScmObj (*ScmFuncType)();
@@ -90,7 +88,6 @@
ScmCFuncPointer = 21
};
-#if SCM_USE_NEWPORT
enum ScmPortFlag {
SCM_PORTFLAG_NONE = 0,
SCM_PORTFLAG_OUTPUT = 1 << 0,
@@ -103,43 +100,6 @@
| SCM_PORTFLAG_LIVE_INPUT)
};
-#else /* SCM_USE_NEWPORT */
-
-/* ScmPort direction */
-enum ScmPortDirection {
- PORT_INPUT = 0,
- PORT_OUTPUT = 1
-};
-
-/* ScmPort type */
-enum ScmPortType {
- PORT_FILE = 0,
- PORT_STRING = 1
-};
-
-/* ScmPort Info */
-struct _ScmPortInfo {
- enum ScmPortType port_type; /* (PORT_FILE | PORT_STRING) */
-
- union {
- struct {
- FILE *file;
- char *filename;
- int line;
- } file_port;
-
- struct {
- char *port_str;
- const char *str_currentpos;
- } str_port;
- } info;
-
- int (*getc_func) (ScmObj port);
- void (*print_func) (ScmObj port, const char* str);
- int ungottenchar;
-};
-#endif /* SCM_USE_NEWPORT */
-
/*
* Function types:
*
@@ -247,13 +207,8 @@
} vector;
struct ScmPort {
-#if SCM_USE_NEWPORT
enum ScmPortFlag flag;
ScmCharPort *impl;
-#else
- enum ScmPortDirection port_direction; /* (PORT_INPUT | PORT_OUTPUT) */
- ScmPortInfo *port_info;
-#endif
} port;
struct ScmContinuation {
@@ -375,40 +330,11 @@
#define SCM_PORTP(a) (SCM_TYPE(a) == ScmPort)
#define SCM_ENTYPE_PORT(a) (SCM_ENTYPE((a), ScmPort))
-#if SCM_USE_NEWPORT
#define SCM_PORT_FLAG(a) (SCM_AS_PORT(a)->obj.port.flag)
#define SCM_PORT_SET_FLAG(a, flag) (SCM_PORT_FLAG(a) = (flag))
#define SCM_PORT_IMPL(a) (SCM_AS_PORT(a)->obj.port.impl)
#define SCM_PORT_SET_IMPL(a, impl) (SCM_PORT_IMPL(a) = (impl))
-#else /* SCM_USE_NEWPORT */
-#define SCM_PORT_PORTDIRECTION(a) (SCM_AS_PORT(a)->obj.port.port_direction)
-#define SCM_PORT_SET_PORTDIRECTION(a, pdirection) (SCM_PORT_PORTDIRECTION(a) = pdirection)
-#define SCM_PORT_PORTINFO(a) (SCM_AS_PORT(a)->obj.port.port_info)
-#define SCM_PORT_SET_PORTINFO(a, pinfo) (SCM_PORT_PORTINFO(a) = (pinfo))
-#define SCM_PORT_PORTTYPE(a) (SCM_PORT_PORTINFO(a)->port_type)
-#define SCM_PORT_SET_PORTTYPE(a, type) (SCM_PORT_PORTTYPE(a) = type)
-#define SCM_PORT_UNGOTTENCHAR(a) (SCM_PORT_PORTINFO(a)->ungottenchar)
-#define SCM_PORT_SET_UNGOTTENCHAR(a, ch) (SCM_PORT_UNGOTTENCHAR(a) = ch)
-#define SCM_PORT_GETC_FUNC(a) (SCM_PORT_PORTINFO(a)->getc_func)
-#define SCM_PORT_SET_GETC_FUNC(a, func) (SCM_PORT_GETC_FUNC(a) = func)
-#define SCM_PORT_PRINT_FUNC(a) (SCM_PORT_PORTINFO(a)->print_func)
-#define SCM_PORT_SET_PRINT_FUNC(a, func) (SCM_PORT_PRINT_FUNC(a) = func)
-
-/* File Port */
-#define SCM_PORT_FILE(a) (SCM_PORT_PORTINFO(a)->info.file_port.file)
-#define SCM_PORT_SET_FILE(a, file) (SCM_PORT_FILE(a) = file)
-#define SCM_PORT_FILENAME(a) (SCM_PORT_PORTINFO(a)->info.file_port.filename)
-#define SCM_PORT_SET_FILENAME(a, filename) (SCM_PORT_FILENAME(a) = filename)
-#define SCM_PORT_LINE(a) (SCM_PORT_PORTINFO(a)->info.file_port.line)
-#define SCM_PORT_SET_LINE(a, line) (SCM_PORT_LINE(a) = line)
-/* String Port */
-#define SCM_PORT_STR(a) (SCM_PORT_PORTINFO(a)->info.str_port.port_str)
-#define SCM_PORT_SET_STR(a, str) (SCM_PORT_STR(a) = str)
-#define SCM_PORT_STR_CURRENTPOS(a) (SCM_PORT_PORTINFO(a)->info.str_port.str_currentpos)
-#define SCM_PORT_SET_STR_CURRENTPOS(a, pos) (SCM_PORT_STR_CURRENTPOS(a) = pos)
-#endif /* SCM_USE_NEWPORT */
-
#define SCM_CONTINUATIONP(a) (SCM_TYPE(a) == ScmContinuation)
#define SCM_ENTYPE_CONTINUATION(a) (SCM_ENTYPE((a), ScmContinuation))
#define SCM_CONTINUATION_OPAQUE0(a) (SCM_AS_CONTINUATION(a)->obj.continuation.opaque0)
More information about the uim-commit
mailing list