void ecl_util_memcpy_typed_data(void *_target_data , const void * _src_data , ecl_type_enum target_type , ecl_type_enum src_type, int size) { int i; if (target_type == src_type) memcpy(_target_data , _src_data , size * ecl_util_get_sizeof_ctype(src_type)); else { switch (target_type) { case(ECL_DOUBLE_TYPE): { double * target_data = (double *) _target_data; switch(src_type) { case(ECL_FLOAT_TYPE): util_float_to_double(target_data , (const float *) _src_data , size); break; case(ECL_INT_TYPE): for (i = 0; i < size; i++) target_data[i] = ((int *) _src_data)[i]; break; default: util_abort("%s: double type can only load from int/float/double - aborting \n",__func__); } break; } case(ECL_FLOAT_TYPE): { float * target_data = (float *) _target_data; switch(src_type) { case(ECL_FLOAT_TYPE): util_double_to_float(target_data , (const double *) _src_data , size); break; case(ECL_INT_TYPE): for (i = 0; i < size; i++) target_data[i] = ((int *) _src_data)[i]; break; default: util_abort("%s: float type can only load from int/float/double - aborting \n",__func__); } break; } default: util_abort("%s con not convert %d -> %d \n",__func__ , src_type , target_type); } } }
static void gen_data_set_data__(gen_data_type * gen_data , int size, const forward_load_context_type * load_context, ecl_data_type load_data_type , const void * data) { gen_data_assert_size(gen_data , size, forward_load_context_get_load_step( load_context )); if (gen_data_config_is_dynamic( gen_data->config )) gen_data_config_update_active( gen_data->config , load_context , gen_data->active_mask); gen_data_realloc_data(gen_data); if (size > 0) { ecl_data_type internal_type = gen_data_config_get_internal_data_type( gen_data->config ); int byte_size = ecl_type_get_sizeof_ctype( internal_type ) * size ; if (ecl_type_is_equal(load_data_type, internal_type)) memcpy(gen_data->data , data , byte_size ); else { if (ecl_type_is_float(load_data_type)) util_float_to_double((double *) gen_data->data , data , size); else util_double_to_float((float *) gen_data->data , data , size); } } }
static void gen_data_set_data__(gen_data_type * gen_data , int size, int report_step , ecl_type_enum load_type , const void * data) { gen_data_assert_size(gen_data , size, report_step); if (gen_data_config_is_dynamic( gen_data->config )) gen_data_config_update_active( gen_data->config , report_step , gen_data->active_mask); gen_data_realloc_data(gen_data); if (size > 0) { ecl_type_enum internal_type = gen_data_config_get_internal_type( gen_data->config ); int byte_size = ecl_util_get_sizeof_ctype( internal_type ) * size ; if (load_type == internal_type) memcpy(gen_data->data , data , byte_size ); else { if (load_type == ECL_FLOAT_TYPE) util_float_to_double((double *) gen_data->data , data , size); else util_double_to_float((float *) gen_data->data , data , size); } } }