int main() { OBJ env; OBJ find; OBJ name; env = env_null(); obj_write(stdout,env_frame(env)); printf("\n"); name = obj_make_symbol("if"); find = lookup_variable_value(name,env); obj_write(stdout,find); find = lookup_variable_value(name,env); obj_write(stdout,find); printf("\n"); obj_write(stdout,env_frame(env)); printf("\n"); gc(env); printf("\n"); obj_write(stdout,env_frame(env)); printf("\n"); return 0; }
int edb_array_pop(obj_handle *h, void* data) { LOG_HERE; int err = 0; u32 root; CHECK(obj_write(h, &root)); CHECK(array_pop(h->db, root, data)); err: return err; }
int edb_array_set(obj_handle *h, u32 index, void* data) { LOG_HERE; int err = 0; u32 root; CHECK(obj_write(h, &root)); CHECK(array_get(h->db, root, index, data)); err: return err; }
static void gd_set_dump(struct gd_set *s, FILE *o) { struct gd_val *v; gd_set_lock(s, LOCK_RO); v = s->set; while (v) { fprintf(o, "store_%s\n", s->name); obj_write(v->v, o, NULL); v = v->n; } gd_set_lock(s, UNLOCK_RO); }
static void gd_set_get(struct gd_set *s, FILE *i, FILE *o) { struct gd_val *obj; char *a; a = arg_read(i, o); gd_set_lock(s, LOCK_RO); if ((obj = gd_val_get(s->set, a)) != NULL) { obj_write(obj->v, o, o); } else fprintf(o, "ERROR %s %s not found\n", a, s->name); gd_set_lock(s, UNLOCK_RO); free(a); }
static int do_work(struct kid_t *kid) { int rc = 0, err, iter = 0; if (!(kid->k_cmd.c_flags & C_CREATE_EVERY)) rc = obj_create(kid); for (iter = 0; iter < kid->k_cmd.c_rpt; iter++) { if (rc || sig_received) break; if (kid->k_cmd.c_flags & C_CREATE_EVERY) { rc = obj_create(kid); if (rc) break; } if (kid->k_cmd.c_flags & C_WRITE) { rc = obj_write(kid); grant_estimate(kid->k_id); } if (kid->k_cmd.c_flags & C_CREATE_EVERY) { err = obj_delete(kid); if (!rc) rc = err; } if ((o_verbose > 3) && (iter % 10 == 0)) printf("%d: i%d\n", kid->k_id, iter); if (!rc) sleep(kid->k_cmd.c_delay); } if (!(kid->k_cmd.c_flags & C_CREATE_EVERY)) { err = obj_delete(kid); if (!rc) rc = err; } if (o_verbose > 2) printf("%d: done (%d)\n", kid->k_id, rc); return rc; }
static int obj_fini(FILE *stream, void **ud) { int rc = 0; struct obj_fdata *u = *ud; struct obj *o = u->o; if (u->flags & ASM_ASSEMBLE) { o->records->size = u->insns; o->sym_count = u->syms; o->rlc_count = u->rlcs; obj_write(u->o, stream); } obj_free(u->o); free(*ud); *ud = NULL; return rc; }
static void dialog(FILE *i, FILE *o) { int done = 0; while (!done) { char *cmd = line_read(i); if (cmd == NULL || strcmp(cmd, "bye") == 0) { done = 1; } else if (strcmp(cmd, "about") == 0) { obj_write(about, o, o); } else if (strcmp(cmd, "topic") == 0) { gd_set_get(topics, i, o); } else if (strcmp(cmd, "store_topic") == 0) { gd_set_store(topics, i, o); } else if (strcmp(cmd, "topics") == 0) { gd_set_list_write(topics, i, o); } else if (strcmp(cmd, "user") == 0) { gd_set_get(users, i, o); } else if (strcmp(cmd, "store_user") == 0) { gd_set_store(users, i, o); } else if (strcmp(cmd, "users") == 0) { gd_set_list_write(users, i, o); } else if (strcmp(cmd, "template") == 0) { gd_set_get(templates, i, o); } else if (strcmp(cmd, "store_template") == 0) { gd_set_store(templates, i, o); } else if (strcmp(cmd, "templates") == 0) { gd_set_list_write(templates, i, o); } else if (strcmp(cmd, "store_story") == 0) { gd_set_store_story(i, o); } else if (strcmp(cmd, "delete_story") == 0) { gd_set_delete(stories, i, o); } else if (strcmp(cmd, "story") == 0) { gd_set_get(stories, i, o); } else if (strcmp(cmd, "story_set") == 0) { gd_story_set(i, o); } else if (strcmp(cmd, "_dump") == 0) { FILE *f; f = fopen("dump.bin", "w"); dump(f); fclose(f); } else { fprintf(o, "ERROR %s command not found\n", cmd); } free(cmd); } }