Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
0
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;
}
Example #5
0
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;
}
Example #6
0
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("} ");
}
Example #7
0
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));
}
Example #8
0
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));
}
Example #9
0
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;
}