n_file * tranfer_out_json(void) { n_file *output_file = 0L; noble_simulation *local_sim = sim_sim(); n_object * simulation_object = obj_object(0L, "information", transfer_sim_obj()); obj_object(simulation_object, "land", transfer_land_obj()); if (local_sim->num > 0) { n_uint count = 1; noble_being *local_beings = local_sim->beings; n_object *being_object = transfer_being_obj(&(local_beings[0])); n_array *beings = array_object(being_object); while (count < local_sim->num) { being_object = transfer_being_obj(&(local_beings[count++])); array_add(beings, array_object(being_object)); } obj_array(simulation_object, "beings", beings); } output_file = obj_json(simulation_object); obj_free((n_array **) &simulation_object); return output_file; }
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; }
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; }
void objVectorMap::print_objVector(oop obj) { lprintf("object array: {"); if (obj->is_map()) { lprintf("..."); } else { bool first = true; oop* p = obj_array(obj); oop* end = p + length_obj_array(obj); oop* end2 = p + VectorPrintLimit < end ? p + VectorPrintLimit : end; for (; p < end2; p ++) { if (first) first = false; else lprintf(", "); (*p)->print_oop(); } if (end != end2) { lprintf(", ... (%d more elements) ", end - end2); } } lprintf("} "); }
KNIEXPORT void KNI_SetObjectArrayElement(jobjectArray arrayHandle, jsize index, jobject fromHandle) { ObjArray::Raw obj_array = kni_read_handle(arrayHandle); GUARANTEE(obj_array.not_null(), "null arg to KNI_SetObjectArrayElement"); obj_array().obj_at_put(index, kni_read_handle(fromHandle)); }
KNIEXPORT void KNI_GetObjectArrayElement(jobjectArray arrayHandle, jsize index, jobject toHandle) { ObjArray::Raw obj_array = kni_read_handle(arrayHandle); GUARANTEE(obj_array.not_null(), "null arg to KNI_GetObjectArrayElement"); kni_set_handle(toHandle, obj_array().obj_at(index)); }
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; }