コード例 #1
0
ファイル: state.c プロジェクト: picrin-scheme/benz
pic_value
pic_global_ref(pic_state *pic, pic_value sym)
{
  if (! pic_dict_has(pic, pic->globals, sym)) {
    pic_error(pic, "undefined variable", 1, sym);
  }
  return pic_dict_ref(pic, pic->globals, sym);
}
コード例 #2
0
ファイル: record.c プロジェクト: hopkinsr/picrin
pic_value
pic_record_ref(pic_state *pic, struct pic_record *rec, pic_sym *slot)
{
  if (! pic_dict_has(pic, rec->data, slot)) {
    pic_errorf(pic, "slot named ~s is not found for record: ~s", pic_obj_value(slot), rec);
  }
  return pic_dict_ref(pic, rec->data, slot);
}
コード例 #3
0
ファイル: state.c プロジェクト: picrin-scheme/benz
void
pic_define(pic_state *pic, const char *name, pic_value val)
{
  pic_value sym = pic_intern_cstr(pic, name);

  if (pic_dict_has(pic, pic->globals, sym)) {
    pic_warnf(pic, "redefining variable: %s", pic_str(pic, pic_sym_name(pic, sym), NULL));
  }
  pic_dict_set(pic, pic->globals, sym, val);
}
コード例 #4
0
ファイル: dict.c プロジェクト: ktakashi/picrin
static pic_value
pic_dict_dictionary_ref(pic_state *pic)
{
  struct pic_dict *dict;
  pic_sym *key;

  pic_get_args(pic, "dm", &dict, &key);

  if (! pic_dict_has(pic, dict, key)) {
    return pic_false_value();
  }
  return pic_cons(pic, pic_obj_value(key), pic_dict_ref(pic, dict, key));
}
コード例 #5
0
ファイル: dict.c プロジェクト: ktakashi/picrin
static pic_value
pic_dict_dictionary_set(pic_state *pic)
{
  struct pic_dict *dict;
  pic_sym *key;
  pic_value val;

  pic_get_args(pic, "dmo", &dict, &key, &val);

  if (pic_undef_p(val)) {
    if (pic_dict_has(pic, dict, key)) {
      pic_dict_del(pic, dict, key);
    }
  }
  else {
    pic_dict_set(pic, dict, key, val);
  }
  return pic_undef_value();
}
コード例 #6
0
ファイル: proc.c プロジェクト: hopkinsr/picrin
bool
pic_proc_env_has(pic_state *pic, struct pic_proc *proc, const char *key)
{
  return pic_dict_has(pic, pic_proc_env(pic, proc), pic_intern_cstr(pic, key));
}