use dict for pic->macros
This commit is contained in:
parent
42f378b20e
commit
889291049f
|
@ -133,27 +133,27 @@ pic_set_identifier(pic_state *pic, pic_value id, pic_value uid, pic_value env)
|
||||||
static void
|
static void
|
||||||
define_macro(pic_state *pic, pic_value uid, pic_value mac)
|
define_macro(pic_state *pic, pic_value uid, pic_value mac)
|
||||||
{
|
{
|
||||||
if (pic_weak_has(pic, pic->macros, uid)) {
|
if (pic_dict_has(pic, pic->macros, uid)) {
|
||||||
pic_warnf(pic, "redefining syntax variable: %s", pic_sym(pic, uid));
|
pic_warnf(pic, "redefining syntax variable: %s", pic_sym(pic, uid));
|
||||||
}
|
}
|
||||||
pic_weak_set(pic, pic->macros, uid, mac);
|
pic_dict_set(pic, pic->macros, uid, mac);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
find_macro(pic_state *pic, pic_value uid, pic_value *mac)
|
find_macro(pic_state *pic, pic_value uid, pic_value *mac)
|
||||||
{
|
{
|
||||||
if (! pic_weak_has(pic, pic->macros, uid)) {
|
if (! pic_dict_has(pic, pic->macros, uid)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
*mac = pic_weak_ref(pic, pic->macros, uid);
|
*mac = pic_dict_ref(pic, pic->macros, uid);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shadow_macro(pic_state *pic, pic_value uid)
|
shadow_macro(pic_state *pic, pic_value uid)
|
||||||
{
|
{
|
||||||
if (pic_weak_has(pic, pic->macros, uid)) {
|
if (pic_dict_has(pic, pic->macros, uid)) {
|
||||||
pic_weak_del(pic, pic->macros, uid);
|
pic_dict_del(pic, pic->macros, uid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -212,7 +212,7 @@ pic_open(pic_allocf allocf, void *userdata)
|
||||||
|
|
||||||
/* root tables */
|
/* root tables */
|
||||||
pic->globals = pic_make_dict(pic);
|
pic->globals = pic_make_dict(pic);
|
||||||
pic->macros = pic_make_weak(pic);
|
pic->macros = pic_make_dict(pic);
|
||||||
pic->dyn_env = pic_list(pic, 1, pic_make_weak(pic));
|
pic->dyn_env = pic_list(pic, 1, pic_make_weak(pic));
|
||||||
|
|
||||||
/* turn on GC */
|
/* turn on GC */
|
||||||
|
|
|
@ -46,7 +46,7 @@ struct pic_state {
|
||||||
khash_t(oblist) oblist; /* string to symbol */
|
khash_t(oblist) oblist; /* string to symbol */
|
||||||
int ucnt;
|
int ucnt;
|
||||||
pic_value globals; /* dict */
|
pic_value globals; /* dict */
|
||||||
pic_value macros; /* weak */
|
pic_value macros; /* dict */
|
||||||
|
|
||||||
bool gc_enable;
|
bool gc_enable;
|
||||||
struct heap *heap;
|
struct heap *heap;
|
||||||
|
|
Loading…
Reference in New Issue