use pic_reg to implement pic->macros

This commit is contained in:
Yuichi Nishiwaki 2015-08-05 09:42:17 +09:00
parent 5fa24f9767
commit 98662215e1
3 changed files with 8 additions and 8 deletions

View File

@ -54,26 +54,26 @@ pic_resolve(pic_state *pic, pic_value var, struct pic_env *env)
static void
define_macro(pic_state *pic, pic_sym *uid, struct pic_proc *mac)
{
if (pic_dict_has(pic, pic->macros, uid)) {
if (pic_reg_has(pic, pic->macros, uid)) {
pic_warnf(pic, "redefining syntax variable: ~s", pic_obj_value(uid));
}
pic_dict_set(pic, pic->macros, uid, pic_obj_value(mac));
pic_reg_set(pic, pic->macros, uid, pic_obj_value(mac));
}
static struct pic_proc *
find_macro(pic_state *pic, pic_sym *uid)
{
if (! pic_dict_has(pic, pic->macros, uid)) {
if (! pic_reg_has(pic, pic->macros, uid)) {
return NULL;
}
return pic_proc_ptr(pic_dict_ref(pic, pic->macros, uid));
return pic_proc_ptr(pic_reg_ref(pic, pic->macros, uid));
}
static void
shadow_macro(pic_state *pic, pic_sym *uid)
{
if (pic_dict_has(pic, pic->macros, uid)) {
pic_dict_del(pic, pic->macros, uid);
if (pic_reg_has(pic, pic->macros, uid)) {
pic_reg_del(pic, pic->macros, uid);
}
}

View File

@ -120,7 +120,7 @@ struct pic_state {
khash_t(s) syms; /* name to symbol */
int ucnt;
struct pic_reg *globals;
struct pic_dict *macros;
struct pic_reg *macros;
pic_value libs;
struct pic_reg *attrs;

View File

@ -408,7 +408,7 @@ pic_open(pic_allocf allocf, void *userdata)
/* root tables */
pic->globals = pic_make_reg(pic);
pic->macros = pic_make_dict(pic);
pic->macros = pic_make_reg(pic);
pic->attrs = pic_make_reg(pic);
/* root block */