diff --git a/include/picrin.h b/include/picrin.h index 3007db00..39b55161 100644 --- a/include/picrin.h +++ b/include/picrin.h @@ -144,6 +144,7 @@ void pic_close(pic_state *); void pic_add_feature(pic_state *, const char *); void pic_define(pic_state *, const char *, pic_value); /* automatic export */ +bool pic_defined_p(pic_state *, struct pic_lib *, const char *); 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, const char *name, pic_list args); diff --git a/vm.c b/vm.c index f0139de6..ad265e9b 100644 --- a/vm.c +++ b/vm.c @@ -425,6 +425,12 @@ pic_define(pic_state *pic, const char *name, pic_value val) pic_export(pic, sym); } +bool +pic_defined_p(pic_state *pic, struct pic_lib *lib, const char *name) +{ + return pic_find_rename(pic, lib->env, pic_intern_cstr(pic, name), NULL); +} + pic_value pic_ref(pic_state *pic, struct pic_lib *lib, const char *name) {