283 lines
10 KiB
Diff
283 lines
10 KiB
Diff
--- uim-1.8.9.orig/uim/uim-scm-sigscheme.c 2017-08-14 09:07:27.000000000 +0900
|
|
+++ uim-1.8.9/uim/uim-scm-sigscheme.c 2025-01-29 11:24:25.385409870 +0900
|
|
@@ -722,7 +722,7 @@
|
|
|
|
return (void **)uim_scm_call_with_gc_ready_stack((uim_gc_gate_func_ptr)uim_scm_list2array_internal, &args);
|
|
}
|
|
-
|
|
+
|
|
static void *
|
|
uim_scm_list2array_internal(struct list2array_args *args)
|
|
{
|
|
@@ -780,7 +780,7 @@
|
|
|
|
return (void **)uim_scm_call_with_gc_ready_stack((uim_gc_gate_func_ptr)uim_scm_vector2array_internal, &args);
|
|
}
|
|
-
|
|
+
|
|
static void *
|
|
uim_scm_vector2array_internal(struct vector2array_args *args)
|
|
{
|
|
@@ -1225,7 +1225,7 @@
|
|
assert(name);
|
|
assert(func);
|
|
|
|
- scm_register_func(name, (scm_procedure_fixed_0)func, SCM_PROCEDURE_FIXED_0);
|
|
+ scm_register_func(name, (ScmFuncType)func, SCM_PROCEDURE_FIXED_0);
|
|
}
|
|
|
|
void
|
|
@@ -1235,7 +1235,7 @@
|
|
assert(name);
|
|
assert(func);
|
|
|
|
- scm_register_func(name, (scm_procedure_fixed_1)func, SCM_PROCEDURE_FIXED_1);
|
|
+ scm_register_func(name, (ScmFuncType)func, SCM_PROCEDURE_FIXED_1);
|
|
}
|
|
|
|
void
|
|
@@ -1245,7 +1245,7 @@
|
|
assert(name);
|
|
assert(func);
|
|
|
|
- scm_register_func(name, (scm_procedure_fixed_2)func, SCM_PROCEDURE_FIXED_2);
|
|
+ scm_register_func(name, (ScmFuncType)func, SCM_PROCEDURE_FIXED_2);
|
|
}
|
|
|
|
void
|
|
@@ -1256,7 +1256,7 @@
|
|
assert(name);
|
|
assert(func);
|
|
|
|
- scm_register_func(name, (scm_procedure_fixed_3)func, SCM_PROCEDURE_FIXED_3);
|
|
+ scm_register_func(name, (ScmFuncType)func, SCM_PROCEDURE_FIXED_3);
|
|
}
|
|
|
|
void
|
|
@@ -1267,7 +1267,7 @@
|
|
assert(name);
|
|
assert(func);
|
|
|
|
- scm_register_func(name, (scm_procedure_fixed_4)func, SCM_PROCEDURE_FIXED_4);
|
|
+ scm_register_func(name, (ScmFuncType)func, SCM_PROCEDURE_FIXED_4);
|
|
}
|
|
|
|
void
|
|
@@ -1279,7 +1279,7 @@
|
|
assert(name);
|
|
assert(func);
|
|
|
|
- scm_register_func(name, (scm_procedure_fixed_5)func, SCM_PROCEDURE_FIXED_5);
|
|
+ scm_register_func(name, (ScmFuncType)func, SCM_PROCEDURE_FIXED_5);
|
|
}
|
|
|
|
void
|
|
diff -pruN uim-1.8.9.orig/sigscheme/src/eval.c uim-1.8.9/sigscheme/src/eval.c
|
|
--- uim-1.8.9.orig/sigscheme/src/eval.c 2015-05-30 22:08:55.000000000 +0900
|
|
+++ uim-1.8.9/sigscheme/src/eval.c 2025-01-29 11:40:17.497789730 +0900
|
|
@@ -48,6 +48,24 @@
|
|
/*=======================================
|
|
File Local Type Definitions
|
|
=======================================*/
|
|
+typedef union ScmFuncClosure {
|
|
+ ScmObj (* efunc1) (ScmEvalState *);
|
|
+ ScmObj (* efunc2) (ScmObj, ScmEvalState *);
|
|
+ ScmObj (* efunc3) (ScmObj, ScmObj, ScmEvalState *);
|
|
+ ScmObj (* efunc4) (ScmObj, ScmObj, ScmObj, ScmEvalState *);
|
|
+ ScmObj (* efunc5) (ScmObj, ScmObj, ScmObj, ScmObj, ScmEvalState *);
|
|
+ ScmObj (* efunc6) (ScmObj, ScmObj, ScmObj, ScmObj, ScmObj, ScmEvalState *);
|
|
+ ScmObj (* efunc7) (ScmObj, ScmObj, ScmObj, ScmObj, ScmObj, ScmObj, ScmEvalState *);
|
|
+ ScmObj (* func0) (void);
|
|
+ ScmObj (* func1) (ScmObj);
|
|
+ ScmObj (* func2) (ScmObj, ScmObj);
|
|
+ ScmObj (* func3) (ScmObj, ScmObj, ScmObj);
|
|
+ ScmObj (* func4) (ScmObj, ScmObj, ScmObj, ScmObj);
|
|
+ ScmObj (* func5) (ScmObj, ScmObj, ScmObj, ScmObj, ScmObj);
|
|
+ ScmObj (* func6) (ScmObj, ScmObj, ScmObj, ScmObj, ScmObj, ScmObj);
|
|
+ ScmObj (* func7) (ScmObj, ScmObj, ScmObj, ScmObj, ScmObj, ScmObj, ScmObj);
|
|
+ ScmObj (* rfunc) (ScmObj, ScmObj, enum ScmReductionState *);
|
|
+} ScmFuncClosure;
|
|
|
|
/*=======================================
|
|
Variable Definitions
|
|
@@ -56,7 +74,7 @@
|
|
/*=======================================
|
|
File Local Function Declarations
|
|
=======================================*/
|
|
-static ScmObj reduce(ScmObj (*func)(), ScmObj args, ScmObj env,
|
|
+static ScmObj reduce(ScmFuncClosure *func, ScmObj args, ScmObj env,
|
|
enum ScmValueType need_eval);
|
|
#if SCM_USE_CONTINUATION
|
|
static void call_continuation(ScmObj cont, ScmObj args,
|
|
@@ -96,7 +114,7 @@ scm_call(ScmObj proc, ScmObj args)
|
|
|
|
/* ARGS should NOT have been evaluated yet. */
|
|
static ScmObj
|
|
-reduce(ScmObj (*func)(), ScmObj args, ScmObj env, enum ScmValueType need_eval)
|
|
+reduce(ScmFuncClosure *func, ScmObj args, ScmObj env, enum ScmValueType need_eval)
|
|
{
|
|
ScmObj left, right;
|
|
enum ScmReductionState state;
|
|
@@ -104,7 +122,7 @@ reduce(ScmObj (*func)(), ScmObj args, Sc
|
|
|
|
if (NO_MORE_ARG(args)) {
|
|
state = SCM_REDUCE_0;
|
|
- return (*func)(SCM_INVALID, SCM_INVALID, &state);
|
|
+ return (func->rfunc)(SCM_INVALID, SCM_INVALID, &state);
|
|
}
|
|
|
|
left = POP(args);
|
|
@@ -113,7 +131,7 @@ reduce(ScmObj (*func)(), ScmObj args, Sc
|
|
|
|
if (NO_MORE_ARG(args)) {
|
|
state = SCM_REDUCE_1;
|
|
- return (*func)(left, left, &state);
|
|
+ return (func->rfunc)(left, left, &state);
|
|
}
|
|
|
|
/* Reduce upto the penult. */
|
|
@@ -121,7 +139,7 @@ reduce(ScmObj (*func)(), ScmObj args, Sc
|
|
FOR_EACH_BUTLAST (right, args) {
|
|
if (need_eval)
|
|
right = EVAL(right, env);
|
|
- left = (*func)(left, right, &state);
|
|
+ left = (func->rfunc)(left, right, &state);
|
|
if (state == SCM_REDUCE_STOP)
|
|
return left;
|
|
}
|
|
@@ -131,7 +149,7 @@ reduce(ScmObj (*func)(), ScmObj args, Sc
|
|
state = SCM_REDUCE_LAST;
|
|
if (need_eval)
|
|
right = EVAL(right, env);
|
|
- return (*func)(left, right, &state);
|
|
+ return (func->rfunc)(left, right, &state);
|
|
}
|
|
|
|
#if SCM_USE_CONTINUATION
|
|
@@ -235,7 +253,7 @@ call(ScmObj proc, ScmObj args, ScmEvalSt
|
|
enum ScmValueType need_eval)
|
|
{
|
|
ScmObj env, vals;
|
|
- ScmObj (*func)();
|
|
+ ScmFuncClosure func;
|
|
enum ScmFuncTypeCode type;
|
|
scm_bool syntaxp;
|
|
int mand_count, i;
|
|
@@ -324,10 +342,10 @@ call(ScmObj proc, ScmObj args, ScmEvalSt
|
|
/* We have a C function. */
|
|
|
|
type = SCM_FUNC_TYPECODE(proc);
|
|
- func = SCM_FUNC_CFUNC(proc);
|
|
+ func = (ScmFuncClosure) SCM_FUNC_CFUNC(proc);
|
|
|
|
if (type == SCM_REDUCTION_OPERATOR)
|
|
- return reduce(func, args, env, need_eval);
|
|
+ return reduce(&func, args, env, need_eval);
|
|
|
|
syntaxp = type & SCM_FUNCTYPE_SYNTAX;
|
|
if (syntaxp) {
|
|
@@ -379,28 +397,28 @@ call(ScmObj proc, ScmObj args, ScmEvalSt
|
|
if (type & SCM_FUNCTYPE_TAILREC) {
|
|
switch (i) {
|
|
case 1:
|
|
- return (*func)(eval_state);
|
|
+ return (func.efunc1)(eval_state);
|
|
case 2:
|
|
- return (*func)(argbuf[0], eval_state);
|
|
+ return (func.efunc2)(argbuf[0], eval_state);
|
|
case 3:
|
|
#if SCM_FUNCTYPE_MAND_MAX >= 1
|
|
- return (*func)(argbuf[0], argbuf[1], eval_state);
|
|
+ return (func.efunc3)(argbuf[0], argbuf[1], eval_state);
|
|
#endif
|
|
case 4:
|
|
#if SCM_FUNCTYPE_MAND_MAX >= 2
|
|
- return (*func)(argbuf[0], argbuf[1], argbuf[2], eval_state);
|
|
+ return (func.efunc4)(argbuf[0], argbuf[1], argbuf[2], eval_state);
|
|
#endif
|
|
case 5:
|
|
#if SCM_FUNCTYPE_MAND_MAX >= 3
|
|
- return (*func)(argbuf[0], argbuf[1], argbuf[2], argbuf[3], eval_state);
|
|
+ return (func.efunc5)(argbuf[0], argbuf[1], argbuf[2], argbuf[3], eval_state);
|
|
#endif
|
|
case 6:
|
|
#if SCM_FUNCTYPE_MAND_MAX >= 4
|
|
- return (*func)(argbuf[0], argbuf[1], argbuf[2], argbuf[3], argbuf[4], eval_state);
|
|
+ return (func.efunc6)(argbuf[0], argbuf[1], argbuf[2], argbuf[3], argbuf[4], eval_state);
|
|
#endif
|
|
case 7:
|
|
#if SCM_FUNCTYPE_MAND_MAX >= 5
|
|
- return (*func)(argbuf[0], argbuf[1], argbuf[2], argbuf[3], argbuf[4], argbuf[5], eval_state);
|
|
+ return (func.efunc7)(argbuf[0], argbuf[1], argbuf[2], argbuf[3], argbuf[4], argbuf[5], eval_state);
|
|
#endif
|
|
default:
|
|
SCM_NOTREACHED;
|
|
@@ -410,30 +428,30 @@ call(ScmObj proc, ScmObj args, ScmEvalSt
|
|
|
|
switch (i) {
|
|
case 0:
|
|
- return (*func)();
|
|
+ return (func.func0)();
|
|
case 1:
|
|
- return (*func)(argbuf[0]);
|
|
+ return (func.func1)(argbuf[0]);
|
|
case 2:
|
|
- return (*func)(argbuf[0], argbuf[1]);
|
|
+ return (func.func2)(argbuf[0], argbuf[1]);
|
|
case 3:
|
|
#if SCM_FUNCTYPE_MAND_MAX >= 1
|
|
- return (*func)(argbuf[0], argbuf[1], argbuf[2]);
|
|
+ return (func.func3)(argbuf[0], argbuf[1], argbuf[2]);
|
|
#endif
|
|
case 4:
|
|
#if SCM_FUNCTYPE_MAND_MAX >= 2
|
|
- return (*func)(argbuf[0], argbuf[1], argbuf[2], argbuf[3]);
|
|
+ return (func.func4)(argbuf[0], argbuf[1], argbuf[2], argbuf[3]);
|
|
#endif
|
|
case 5:
|
|
#if SCM_FUNCTYPE_MAND_MAX >= 3
|
|
- return (*func)(argbuf[0], argbuf[1], argbuf[2], argbuf[3], argbuf[4]);
|
|
+ return (func.func5)(argbuf[0], argbuf[1], argbuf[2], argbuf[3], argbuf[4]);
|
|
#endif
|
|
case 6:
|
|
#if SCM_FUNCTYPE_MAND_MAX >= 4
|
|
- return (*func)(argbuf[0], argbuf[1], argbuf[2], argbuf[3], argbuf[4], argbuf[5]);
|
|
+ return (func.func6)(argbuf[0], argbuf[1], argbuf[2], argbuf[3], argbuf[4], argbuf[5]);
|
|
#endif
|
|
case 7:
|
|
#if SCM_FUNCTYPE_MAND_MAX >= 5
|
|
- return (*func)(argbuf[0], argbuf[1], argbuf[2], argbuf[3], argbuf[4], argbuf[5], argbuf[6]);
|
|
+ return (func.func7)(argbuf[0], argbuf[1], argbuf[2], argbuf[3], argbuf[4], argbuf[5], argbuf[6]);
|
|
#endif
|
|
|
|
default:
|
|
diff -pruN uim-1.8.9.orig/sigscheme/src/module-srfi34.c uim-1.8.9/sigscheme/src/module-srfi34.c
|
|
--- uim-1.8.9.orig/sigscheme/src/module-srfi34.c 2015-05-30 22:08:55.000000000 +0900
|
|
+++ uim-1.8.9/sigscheme/src/module-srfi34.c 2025-01-29 11:40:17.498789749 +0900
|
|
@@ -190,19 +190,19 @@ scm_initialize_srfi34(void)
|
|
SCM_ASSERT_FUNCTYPE(scm_syntax_fixed_tailrec_0, &guard_body);
|
|
|
|
l_syn_raw_quote
|
|
- = MAKE_FUNC(SCM_SYNTAX_FIXED_1, &raw_quote);
|
|
+ = MAKE_FUNC(SCM_SYNTAX_FIXED_1, (ScmFuncType)&raw_quote);
|
|
l_syn_set_cur_handlers
|
|
- = MAKE_FUNC(SCM_SYNTAX_FIXED_1, &set_cur_handlers);
|
|
+ = MAKE_FUNC(SCM_SYNTAX_FIXED_1, (ScmFuncType)&set_cur_handlers);
|
|
l_proc_with_exception_handlers
|
|
- = MAKE_FUNC(SCM_PROCEDURE_FIXED_2, &with_exception_handlers);
|
|
+ = MAKE_FUNC(SCM_PROCEDURE_FIXED_2, (ScmFuncType)&with_exception_handlers);
|
|
l_syn_guard_internal
|
|
- = MAKE_FUNC(SCM_SYNTAX_FIXED_1, &guard_internal);
|
|
+ = MAKE_FUNC(SCM_SYNTAX_FIXED_1, (ScmFuncType)&guard_internal);
|
|
l_syn_guard_handler
|
|
- = MAKE_FUNC(SCM_SYNTAX_FIXED_TAILREC_1, &guard_handler);
|
|
+ = MAKE_FUNC(SCM_SYNTAX_FIXED_TAILREC_1, (ScmFuncType)&guard_handler);
|
|
l_syn_guard_handler_body
|
|
- = MAKE_FUNC(SCM_SYNTAX_FIXED_1, &guard_handler_body);
|
|
+ = MAKE_FUNC(SCM_SYNTAX_FIXED_1, (ScmFuncType)&guard_handler_body);
|
|
l_syn_guard_body
|
|
- = MAKE_FUNC(SCM_SYNTAX_FIXED_TAILREC_0, &guard_body);
|
|
+ = MAKE_FUNC(SCM_SYNTAX_FIXED_TAILREC_0, (ScmFuncType)&guard_body);
|
|
|
|
/*
|
|
* The 'error' procedure should not be invoked directly by
|