remove pic_defun_vm
This commit is contained in:
parent
c9245bbe84
commit
65ade266d1
|
@ -186,13 +186,11 @@ pic_bool_boolean_eq_p(pic_state *pic)
|
||||||
void
|
void
|
||||||
pic_init_bool(pic_state *pic)
|
pic_init_bool(pic_state *pic)
|
||||||
{
|
{
|
||||||
void pic_defun_vm(pic_state *, const char *, pic_sym *, pic_func_t);
|
|
||||||
|
|
||||||
pic_defun(pic, "eq?", pic_bool_eq_p);
|
pic_defun(pic, "eq?", pic_bool_eq_p);
|
||||||
pic_defun(pic, "eqv?", pic_bool_eqv_p);
|
pic_defun(pic, "eqv?", pic_bool_eqv_p);
|
||||||
pic_defun(pic, "equal?", pic_bool_equal_p);
|
pic_defun(pic, "equal?", pic_bool_equal_p);
|
||||||
|
|
||||||
pic_defun_vm(pic, "not", pic->uNOT, pic_bool_not);
|
pic_defun(pic, "not", pic_bool_not);
|
||||||
|
|
||||||
pic_defun(pic, "boolean?", pic_bool_boolean_p);
|
pic_defun(pic, "boolean?", pic_bool_boolean_p);
|
||||||
pic_defun(pic, "boolean=?", pic_bool_boolean_eq_p);
|
pic_defun(pic, "boolean=?", pic_bool_boolean_eq_p);
|
||||||
|
|
|
@ -304,12 +304,10 @@ pic_cont_call_with_values(pic_state *pic)
|
||||||
void
|
void
|
||||||
pic_init_cont(pic_state *pic)
|
pic_init_cont(pic_state *pic)
|
||||||
{
|
{
|
||||||
void pic_defun_vm(pic_state *, const char *, pic_sym *, pic_func_t);
|
|
||||||
|
|
||||||
pic_defun(pic, "call-with-current-continuation", pic_cont_callcc);
|
pic_defun(pic, "call-with-current-continuation", pic_cont_callcc);
|
||||||
pic_defun(pic, "call/cc", pic_cont_callcc);
|
pic_defun(pic, "call/cc", pic_cont_callcc);
|
||||||
pic_defun(pic, "dynamic-wind", pic_cont_dynamic_wind);
|
pic_defun(pic, "dynamic-wind", pic_cont_dynamic_wind);
|
||||||
|
|
||||||
pic_defun_vm(pic, "values", pic->uVALUES, pic_cont_values);
|
pic_defun(pic, "values", pic_cont_values);
|
||||||
pic_defun_vm(pic, "call-with-values", pic->uCALL_WITH_VALUES, pic_cont_call_with_values);
|
pic_defun(pic, "call-with-values", pic_cont_call_with_values);
|
||||||
}
|
}
|
||||||
|
|
|
@ -801,8 +801,6 @@ pic_number_sqrt(pic_state *pic)
|
||||||
void
|
void
|
||||||
pic_init_number(pic_state *pic)
|
pic_init_number(pic_state *pic)
|
||||||
{
|
{
|
||||||
void pic_defun_vm(pic_state *, const char *, pic_sym *, pic_func_t);
|
|
||||||
|
|
||||||
size_t ai = pic_gc_arena_preserve(pic);
|
size_t ai = pic_gc_arena_preserve(pic);
|
||||||
|
|
||||||
pic_defun(pic, "number?", pic_number_real_p);
|
pic_defun(pic, "number?", pic_number_real_p);
|
||||||
|
@ -816,17 +814,17 @@ pic_init_number(pic_state *pic)
|
||||||
pic_defun(pic, "inexact?", pic_number_inexact_p);
|
pic_defun(pic, "inexact?", pic_number_inexact_p);
|
||||||
pic_gc_arena_restore(pic, ai);
|
pic_gc_arena_restore(pic, ai);
|
||||||
|
|
||||||
pic_defun_vm(pic, "=", pic->uEQ, pic_number_eq);
|
pic_defun(pic, "=", pic_number_eq);
|
||||||
pic_defun_vm(pic, "<", pic->uLT, pic_number_lt);
|
pic_defun(pic, "<", pic_number_lt);
|
||||||
pic_defun_vm(pic, ">", pic->uGT, pic_number_gt);
|
pic_defun(pic, ">", pic_number_gt);
|
||||||
pic_defun_vm(pic, "<=", pic->uLE, pic_number_le);
|
pic_defun(pic, "<=", pic_number_le);
|
||||||
pic_defun_vm(pic, ">=", pic->uGE, pic_number_ge);
|
pic_defun(pic, ">=", pic_number_ge);
|
||||||
pic_gc_arena_restore(pic, ai);
|
pic_gc_arena_restore(pic, ai);
|
||||||
|
|
||||||
pic_defun_vm(pic, "+", pic->uADD, pic_number_add);
|
pic_defun(pic, "+", pic_number_add);
|
||||||
pic_defun_vm(pic, "-", pic->uSUB, pic_number_sub);
|
pic_defun(pic, "-", pic_number_sub);
|
||||||
pic_defun_vm(pic, "*", pic->uMUL, pic_number_mul);
|
pic_defun(pic, "*", pic_number_mul);
|
||||||
pic_defun_vm(pic, "/", pic->uDIV, pic_number_div);
|
pic_defun(pic, "/", pic_number_div);
|
||||||
pic_gc_arena_restore(pic, ai);
|
pic_gc_arena_restore(pic, ai);
|
||||||
|
|
||||||
pic_defun(pic, "abs", pic_number_abs);
|
pic_defun(pic, "abs", pic_number_abs);
|
||||||
|
|
|
@ -760,13 +760,11 @@ pic_pair_assoc(pic_state *pic)
|
||||||
void
|
void
|
||||||
pic_init_pair(pic_state *pic)
|
pic_init_pair(pic_state *pic)
|
||||||
{
|
{
|
||||||
void pic_defun_vm(pic_state *, const char *, pic_sym *, pic_func_t);
|
pic_defun(pic, "pair?", pic_pair_pair_p);
|
||||||
|
pic_defun(pic, "cons", pic_pair_cons);
|
||||||
pic_defun_vm(pic, "pair?", pic->uPAIRP, pic_pair_pair_p);
|
pic_defun(pic, "car", pic_pair_car);
|
||||||
pic_defun_vm(pic, "cons", pic->uCONS, pic_pair_cons);
|
pic_defun(pic, "cdr", pic_pair_cdr);
|
||||||
pic_defun_vm(pic, "car", pic->uCAR, pic_pair_car);
|
pic_defun(pic, "null?", pic_pair_null_p);
|
||||||
pic_defun_vm(pic, "cdr", pic->uCDR, pic_pair_cdr);
|
|
||||||
pic_defun_vm(pic, "null?", pic->uNILP, pic_pair_null_p);
|
|
||||||
|
|
||||||
pic_defun(pic, "set-car!", pic_pair_set_car);
|
pic_defun(pic, "set-car!", pic_pair_set_car);
|
||||||
pic_defun(pic, "set-cdr!", pic_pair_set_cdr);
|
pic_defun(pic, "set-cdr!", pic_pair_set_cdr);
|
||||||
|
|
|
@ -115,6 +115,9 @@ pic_features(pic_state *pic)
|
||||||
#define define_builtin_syntax(uid, name) \
|
#define define_builtin_syntax(uid, name) \
|
||||||
pic_define_syntactic_keyword_(pic, pic->lib->env, pic_intern_cstr(pic, name), uid)
|
pic_define_syntactic_keyword_(pic, pic->lib->env, pic_intern_cstr(pic, name), uid)
|
||||||
|
|
||||||
|
#define VM(uid, name) \
|
||||||
|
pic_define_syntactic_keyword_(pic, pic->lib->env, pic_intern_cstr(pic, name), uid)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
pic_init_core(pic_state *pic)
|
pic_init_core(pic_state *pic)
|
||||||
{
|
{
|
||||||
|
@ -135,6 +138,21 @@ pic_init_core(pic_state *pic)
|
||||||
|
|
||||||
pic_defun(pic, "features", pic_features);
|
pic_defun(pic, "features", pic_features);
|
||||||
|
|
||||||
|
VM(pic->uCONS, "cons");
|
||||||
|
VM(pic->uCAR, "car");
|
||||||
|
VM(pic->uCDR, "cdr");
|
||||||
|
VM(pic->uNILP, "null?");
|
||||||
|
VM(pic->uSYMBOLP, "symbol?");
|
||||||
|
VM(pic->uPAIRP, "pair?");
|
||||||
|
VM(pic->uNOT, "not");
|
||||||
|
VM(pic->uADD, "+");
|
||||||
|
VM(pic->uSUB, "-");
|
||||||
|
VM(pic->uMUL, "*");
|
||||||
|
VM(pic->uDIV, "/");
|
||||||
|
VM(pic->uEQ, "=");
|
||||||
|
VM(pic->uLT, "<");
|
||||||
|
VM(pic->uLE, "<=");
|
||||||
|
|
||||||
pic_init_undef(pic); DONE;
|
pic_init_undef(pic); DONE;
|
||||||
pic_init_bool(pic); DONE;
|
pic_init_bool(pic); DONE;
|
||||||
pic_init_pair(pic); DONE;
|
pic_init_pair(pic); DONE;
|
||||||
|
|
|
@ -99,9 +99,7 @@ pic_symbol_string_to_symbol(pic_state *pic)
|
||||||
void
|
void
|
||||||
pic_init_symbol(pic_state *pic)
|
pic_init_symbol(pic_state *pic)
|
||||||
{
|
{
|
||||||
void pic_defun_vm(pic_state *, const char *, pic_sym *, pic_func_t);
|
pic_defun(pic, "symbol?", pic_symbol_symbol_p);
|
||||||
|
|
||||||
pic_defun_vm(pic, "symbol?", pic->uSYMBOLP, pic_symbol_symbol_p);
|
|
||||||
|
|
||||||
pic_defun(pic, "symbol->string", pic_symbol_symbol_to_string);
|
pic_defun(pic, "symbol->string", pic_symbol_symbol_to_string);
|
||||||
pic_defun(pic, "string->symbol", pic_symbol_string_to_symbol);
|
pic_defun(pic, "string->symbol", pic_symbol_string_to_symbol);
|
||||||
|
|
|
@ -1134,23 +1134,6 @@ pic_define_syntactic_keyword(pic_state *pic, struct pic_env *env, pic_sym *sym,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
pic_defun_vm(pic_state *pic, const char *name, pic_sym *uid, pic_func_t func)
|
|
||||||
{
|
|
||||||
struct pic_proc *proc;
|
|
||||||
pic_sym *sym;
|
|
||||||
|
|
||||||
proc = pic_make_proc(pic, func);
|
|
||||||
|
|
||||||
sym = pic_intern_cstr(pic, name);
|
|
||||||
|
|
||||||
pic_put_variable(pic, pic->lib->env, pic_obj_value(sym), uid);
|
|
||||||
|
|
||||||
pic_dict_set(pic, pic->globals, uid, pic_obj_value(proc));
|
|
||||||
|
|
||||||
pic_export(pic, sym);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
pic_define_(pic_state *pic, const char *name, pic_value val)
|
pic_define_(pic_state *pic, const char *name, pic_value val)
|
||||||
{
|
{
|
||||||
|
@ -1161,7 +1144,9 @@ pic_define_(pic_state *pic, const char *name, pic_value val)
|
||||||
if ((uid = pic_find_variable(pic, pic->lib->env, pic_obj_value(sym))) == NULL) {
|
if ((uid = pic_find_variable(pic, pic->lib->env, pic_obj_value(sym))) == NULL) {
|
||||||
uid = pic_add_variable(pic, pic->lib->env, pic_obj_value(sym));
|
uid = pic_add_variable(pic, pic->lib->env, pic_obj_value(sym));
|
||||||
} else {
|
} else {
|
||||||
pic_warnf(pic, "redefining global");
|
if (pic_dict_has(pic, pic->globals, uid)) {
|
||||||
|
pic_warnf(pic, "redefining variable: ~s", pic_obj_value(uid));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pic_dict_set(pic, pic->globals, uid, val);
|
pic_dict_set(pic, pic->globals, uid, val);
|
||||||
|
|
Loading…
Reference in New Issue