diff --git a/contrib/40.srfi/src/106.c b/contrib/40.srfi/src/106.c index b7328172..cafea041 100644 --- a/contrib/40.srfi/src/106.c +++ b/contrib/40.srfi/src/106.c @@ -399,6 +399,9 @@ pic_socket_call_with_socket(pic_state *pic) void pic_init_srfi_106(pic_state *pic) { +#define pic_defun_(pic, name, f) pic_define(pic, pic->lib, name, pic_obj_value(pic_make_proc(pic, f))) +#define pic_define_(pic, name, v) pic_define(pic, pic->lib, name, v) + pic_deflibrary (pic, "(srfi 106)") { pic_defun_(pic, "socket?", pic_socket_socket_p); pic_defun_(pic, "make-socket", pic_socket_make_socket); diff --git a/extlib/benz/include/picrin.h b/extlib/benz/include/picrin.h index 99ab5562..84a54f71 100644 --- a/extlib/benz/include/picrin.h +++ b/extlib/benz/include/picrin.h @@ -145,14 +145,10 @@ void pic_gc(pic_state *); void pic_add_feature(pic_state *, const char *); -void pic_define(pic_state *, const char *, pic_value); void pic_defun(pic_state *, const char *, pic_func_t); void pic_defvar(pic_state *, const char *, pic_value, struct pic_proc *); -/* functions suffixed with '_' do not involve automatic export */ -void pic_define_(pic_state *, const char *, pic_value); -void pic_defun_(pic_state *, const char *, pic_func_t); -void pic_defvar_(pic_state *, const char *, pic_value, struct pic_proc *); +void pic_define(pic_state *, struct pic_lib *, const char *, pic_value); pic_value pic_ref(pic_state *, struct pic_lib *, const char *); void pic_set(pic_state *, struct pic_lib *, const char *, pic_value); pic_value pic_funcall(pic_state *pic, struct pic_lib *, const char *, pic_value); diff --git a/extlib/benz/proc.c b/extlib/benz/proc.c index 2f3aa9ba..1298acae 100644 --- a/extlib/benz/proc.c +++ b/extlib/benz/proc.c @@ -900,53 +900,34 @@ pic_apply5(pic_state *pic, struct pic_proc *proc, pic_value arg1, pic_value arg2 } void -pic_define_(pic_state *pic, const char *name, pic_value val) +pic_define(pic_state *pic, struct pic_lib *lib, const char *name, pic_value val) { pic_sym *sym, *uid; sym = pic_intern_cstr(pic, name); - if ((uid = pic_find_identifier(pic, (pic_id *)sym, pic->lib->env)) == NULL) { - uid = pic_add_identifier(pic, (pic_id *)sym, pic->lib->env); + if ((uid = pic_find_identifier(pic, (pic_id *)sym, lib->env)) == NULL) { + uid = pic_add_identifier(pic, (pic_id *)sym, lib->env); } else { if (pic_weak_has(pic, pic->globals, uid)) { pic_warnf(pic, "redefining variable: ~s", pic_obj_value(uid)); } } - pic_set(pic, pic->lib, name, val); -} - -void -pic_define(pic_state *pic, const char *name, pic_value val) -{ - pic_define_(pic, name, val); - pic_export(pic, pic_intern_cstr(pic, name)); -} - -void -pic_defun_(pic_state *pic, const char *name, pic_func_t cfunc) -{ - pic_define_(pic, name, pic_obj_value(pic_make_proc(pic, cfunc))); + pic_set(pic, lib, name, val); } void pic_defun(pic_state *pic, const char *name, pic_func_t cfunc) { - pic_defun_(pic, name, cfunc); + pic_define(pic, pic->lib, name, pic_obj_value(pic_make_proc(pic, cfunc))); pic_export(pic, pic_intern_cstr(pic, name)); } -void -pic_defvar_(pic_state *pic, const char *name, pic_value init, struct pic_proc *conv) -{ - pic_define_(pic, name, pic_obj_value(pic_make_var(pic, init, conv))); -} - void pic_defvar(pic_state *pic, const char *name, pic_value init, struct pic_proc *conv) { - pic_defvar_(pic, name, init, conv); + pic_define(pic, pic->lib, name, pic_obj_value(pic_make_var(pic, init, conv))); pic_export(pic, pic_intern_cstr(pic, name)); }