pic_value pic_ref(pic_state *pic, const char *name) { size_t ai = pic_enter(pic); pic_value r = pic_global_ref(pic, pic_intern_cstr(pic, name)); pic_leave(pic, ai); return pic_protect(pic, r); }
struct object * pic_obj_alloc(pic_state *pic, int type) { struct object *obj; obj = pic_obj_alloc_unsafe(pic, type); pic_protect(pic, obj_value(pic, obj)); return obj; }
pic_value pic_funcall(pic_state *pic, const char *name, int n, ...) { size_t ai = pic_enter(pic); pic_value proc, r; va_list ap; proc = pic_ref(pic, name); TYPE_CHECK(pic, proc, proc); va_start(ap, n); r = pic_vcall(pic, proc, n, ap); va_end(ap); pic_leave(pic, ai); return pic_protect(pic, r); }