Пример #1
0
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);
}
Пример #2
0
static pic_value
pic_dict_dictionary(pic_state *pic)
{
  struct pic_dict *dict;
  pic_value *argv;
  int argc, i;

  pic_get_args(pic, "*", &argc, &argv);

  dict = pic_make_dict(pic);

  for (i = 0; i < argc; i += 2) {
    pic_assert_type(pic, argv[i], sym);
    pic_dict_set(pic, dict, pic_sym_ptr(argv[i]), argv[i+1]);
  }

  return pic_obj_value(dict);
}
Пример #3
0
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();
}
Пример #4
0
static void
import_table(pic_state *pic, pic_value spec, struct pic_dict *imports)
{
  struct pic_lib *lib;
  struct pic_dict *table;
  pic_value val, tmp, prefix;
  pic_sym *sym, *id, *tag;

  table = pic_make_dict(pic);

  if (pic_pair_p(spec) && pic_sym_p(pic_car(pic, spec))) {

    tag = pic_sym_ptr(pic_car(pic, spec));

    if (tag == pic->sONLY) {
      import_table(pic, pic_cadr(pic, spec), table);

      pic_for_each (val, pic_cddr(pic, spec)) {
        pic_dict_set(pic, imports, pic_sym_ptr(val), pic_dict_ref(pic, table, pic_sym_ptr(val)));
      }
Пример #5
0
void
pic_attr_set(pic_state *pic, pic_value obj, const char *key, pic_value v)
{
  pic_dict_set(pic, pic_attr(pic, obj), pic_intern_cstr(pic, key), v);
}
Пример #6
0
void
pic_proc_env_set(pic_state *pic, struct pic_proc *proc, const char *key, pic_value val)
{
  pic_dict_set(pic, pic_proc_env(pic, proc), pic_intern_cstr(pic, key), val);
}
Пример #7
0
void
pic_global_set(pic_state *pic, pic_value sym, pic_value value)
{
  pic_dict_set(pic, pic->globals, sym, value);
}
Пример #8
0
void
pic_record_set(pic_state *pic, struct pic_record *rec, pic_sym *slot, pic_value val)
{
  pic_dict_set(pic, rec->data, slot, val);
}