static n_object * transfer_sim_obj(void) { n_object * noble_sim_identifier = obj_number(0L, "signature", NOBLE_APE_SIGNATURE); obj_number(noble_sim_identifier, "version number", VERSION_NUMBER); obj_string(noble_sim_identifier, "copyright", FULL_VERSION_COPYRIGHT); obj_string(noble_sim_identifier, "date", FULL_DATE); return noble_sim_identifier; }
static n_object * transfer_being_spacetime_obj(n_spacetime * value) { n_object * noble_spacetime = obj_number(0L, "date", value->date); n_array * noble_location = array_number(value->location[0]); array_add(noble_location, array_number(value->location[1])); obj_array(noble_spacetime, "location", noble_location); obj_number(noble_spacetime, "time", value->time); return noble_spacetime; }
static n_object * transfer_land_obj(void) { n_object * noble_land = obj_number(0L, "date", land_date()); n_byte2 * genetics_values = land_genetics(); n_array * land_genetics = array_number(genetics_values[0]); array_add(land_genetics, array_number(genetics_values[1])); obj_array(noble_land, "genetics", land_genetics); obj_number(noble_land, "time", land_time()); return noble_land; }
static n_object * transfer_being_delta_obj(noble_being_delta * delta) { n_object * noble_being_delta = obj_number(0L, "direction_facing", delta->direction_facing); n_array * location = array_number(delta->location[0]); n_array * seed = array_number(delta->seed[0]); n_array * goal = array_number(delta->goal[0]); n_array * social_coord = array_number(delta->social_coord_x); array_add(location, array_number(delta->location[1])); array_add(seed, array_number(delta->seed[1])); array_add(goal, array_number(delta->goal[1])); array_add(goal, array_number(delta->goal[2])); array_add(goal, array_number(delta->goal[3])); array_add(social_coord, array_number(delta->social_coord_y)); array_add(social_coord, array_number(delta->social_coord_nx)); array_add(social_coord, array_number(delta->social_coord_ny)); obj_array(noble_being_delta, "location", location); obj_number(noble_being_delta, "velocity", delta->velocity); obj_number(noble_being_delta, "stored_energy", delta->stored_energy); obj_array(noble_being_delta, "seed", seed); obj_number(noble_being_delta, "macro_state", delta->macro_state); obj_number(noble_being_delta, "parasites", delta->parasites); obj_number(noble_being_delta, "honor", delta->honor); obj_number(noble_being_delta, "crowding", delta->crowding); obj_number(noble_being_delta, "height", delta->height); obj_number(noble_being_delta, "mass", delta->mass); obj_number(noble_being_delta, "posture", delta->posture); obj_array(noble_being_delta, "goal", goal); obj_array(noble_being_delta, "social_coord", social_coord); return noble_being_delta; }
static n_object * transfer_being_constant_obj(noble_being_constant * constant) { n_int genetic_count = 1; n_object * noble_being_contant = obj_number(0L, "date_of_birth", constant->date_of_birth); n_array * generation = array_number(constant->generation_min); n_array * genetics = array_number(constant->genetics[0]); while (genetic_count < CHROMOSOMES) { array_add(genetics, array_number(constant->genetics[genetic_count++])); } obj_array(noble_being_contant, "genetics", genetics); array_add(generation, array_number(constant->generation_max)); obj_array(noble_being_contant, "generation_range", generation); return noble_being_contant; }
void set_light_tok(t_scene_tok *s_tok, char **tab) { int len; int *tmp; len = obj_number(tab, N_LIGHT); if (!len) s_tok->lights_tok = NULL; else { if (!(tmp = (int*)malloc(sizeof(int) * (len)))) check_errors(MALLOC, "tmp", "set_light_tok.c"); get_index(tab, tmp, N_LIGHT); new_lights_tok(s_tok, len); set_lights_tok_tab((s_tok->lights_tok), tab, tmp, len); free(tmp); } }
static n_object * object_file_base(n_file * file) { n_object * base_object = 0L; n_object_stream_type stream_type; CHECK_FILE_SIZE("file read outside end of file"); stream_type = object_stream_char(file->data[file->location]); if (stream_type == OBJ_TYPE_OBJECT_OPEN) { tracking_object_open++; do{ file->location++; CHECK_FILE_SIZE("file read outside end of file"); stream_type = object_stream_char(file->data[file->location]); if (stream_type == OBJ_TYPE_STRING_NOTATION) { n_string string_key = object_file_read_string(file); if (string_key) { stream_type = object_stream_char(file->data[file->location]); if (stream_type == OBJ_TYPE_COLON) { file->location++; CHECK_FILE_SIZE("file read outside end of file"); stream_type = object_stream_char(file->data[file->location]); if (stream_type == OBJ_TYPE_OBJECT_OPEN) { n_object * insert_object = object_file_base(file); if (insert_object) { if (base_object) { obj_object(base_object, string_key, insert_object); } else { base_object = obj_object(base_object, string_key, insert_object); } file->location++; CHECK_FILE_SIZE("file read outside end of file"); stream_type = object_stream_char(file->data[file->location]); } } if (stream_type == OBJ_TYPE_NUMBER) { n_int number_error; n_int number_value = object_file_read_number(file, &number_error); if (number_error == 0) { stream_type = object_stream_char(file->data[file->location]); if ((stream_type == OBJ_TYPE_OBJECT_CLOSE) || (stream_type == OBJ_TYPE_COMMA)) { if (base_object) { obj_number(base_object, string_key, number_value); } else { base_object = obj_number(base_object, string_key, number_value); } } } } if (stream_type == OBJ_TYPE_STRING_NOTATION) { n_string string_value = object_file_read_string(file); if (string_value) { stream_type = object_stream_char(file->data[file->location]); if ((stream_type == OBJ_TYPE_OBJECT_CLOSE) || (stream_type == OBJ_TYPE_COMMA)) { if (base_object) { obj_string(base_object, string_key, string_value); } else { base_object = obj_string(base_object, string_key, string_value); } } } } if (stream_type == OBJ_TYPE_ARRAY_OPEN) { n_array * array_value = object_file_array(file); // TODO: rename object_file_read_array if (array_value) { stream_type = object_stream_char(file->data[file->location]); if ((stream_type == OBJ_TYPE_OBJECT_CLOSE) || (stream_type == OBJ_TYPE_COMMA)) { if (base_object) { obj_array(base_object, string_key, array_value); } else { base_object = obj_array(base_object, string_key, array_value); } } CHECK_FILE_SIZE("file read outside end of file"); stream_type = object_stream_char(file->data[file->location]); } OBJ_DBG(array_value, "array value nil?"); } } } } if (stream_type == OBJ_TYPE_OBJECT_CLOSE) { tracking_object_open--; } } while (stream_type == OBJ_TYPE_COMMA); } return base_object; }