Error messages: Print accessor name and function

This commit is contained in:
Shahram Najm 2023-06-04 12:23:49 +01:00
parent a0a32c5334
commit c2160c2f99
2 changed files with 32 additions and 34 deletions

View File

@ -150,6 +150,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
{
grib_accessor_data_run_length_packing* self = (grib_accessor_data_run_length_packing*)a;
grib_handle* gh = grib_handle_of_accessor(a);
const char* cclass_name = a->cclass->name;
int err = GRIB_SUCCESS;
long seclen, number_of_values, bits_per_value, max_level_value, number_of_level_values, decimal_scale_factor;
long* level_values = NULL;
@ -194,9 +195,9 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
range = (1 << bits_per_value) - 1 - max_level_value;
if ((max_level_value <= 0) || (number_of_level_values <= 0) || (max_level_value > number_of_level_values) || (range <= 0)) {
grib_context_log(a->context, GRIB_LOG_ERROR,
"data_run_length_packing: parameters are invalid: max_level_value=%ld(>0, <=number_of_level_values), "
"%s: parameters are invalid: max_level_value=%ld(>0, <=number_of_level_values), "
"number_of_level_values=%ld(>0, >=max_level_value), range=%ld(>0)",
max_level_value, number_of_level_values, range);
cclass_name, max_level_value, number_of_level_values, range);
return GRIB_DECODING_ERROR;
}
if (decimal_scale_factor > 127) {
@ -219,9 +220,9 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
while (i < number_of_compressed_values) {
if (compressed_values[i] > max_level_value) {
grib_context_log(a->context, GRIB_LOG_ERROR,
"data_run_length_packing: numberOfValues mismatch: i=%d, "
"%s: numberOfValues mismatch: i=%d, "
"compressed_values[i]=%ld, max_level_value=%ld",
i, compressed_values[i], max_level_value);
cclass_name, i, compressed_values[i], max_level_value);
break;
}
v = compressed_values[i++];
@ -233,8 +234,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
i++;
}
if (n > number_of_values) {
grib_context_log(a->context, GRIB_LOG_ERROR, "data_run_length_packing: numberOfValues mismatch: n=%ld, number_of_values=%ld",
n, number_of_values);
grib_context_log(a->context, GRIB_LOG_ERROR, "%s: numberOfValues mismatch: n=%ld, number_of_values=%ld",
cclass_name, n, number_of_values);
break;
}
for (k = 0; k < n; k++) {
@ -245,8 +246,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
grib_context_free(a->context, levels);
grib_context_free(a->context, compressed_values);
if (j != number_of_values) {
grib_context_log(a->context, GRIB_LOG_ERROR, "data_run_length_packing: numberOfValues mismatch: j=%ld, number_of_values=%ld",
j, number_of_values);
grib_context_log(a->context, GRIB_LOG_ERROR, "%s: numberOfValues mismatch: j=%ld, number_of_values=%ld",
cclass_name, j, number_of_values);
return GRIB_DECODING_ERROR;
}
return err;
@ -254,6 +255,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
static int pack_double(grib_accessor* a, const double* val, size_t* len)
{
grib_context_log(a->context, GRIB_LOG_ERROR, "Changing the packing type to 'grid_run_length' is not implemented.");
grib_context_log(a->context, GRIB_LOG_ERROR,
"%s: Function '%s' is not implemented", a->cclass->name, __func__);
return GRIB_NOT_IMPLEMENTED;
}

View File

@ -8,10 +8,6 @@
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
*/
/********************************
* Enrico Fucile
*******************************/
#include "grib_api_internal_cpp.h"
#include "grib_optimize_decimal_factor.h"
#include <float.h>
@ -198,6 +194,7 @@ static int value_count(grib_accessor* a, long* number_of_values)
static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
{
grib_accessor_data_simple_packing* self = (grib_accessor_data_simple_packing*)a;
const char* cclass_name = a->cclass->name;
long n_vals;
int err = 0;
@ -242,8 +239,8 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
d = grib_power(-decimal_scale_factor, 10);
grib_context_log(a->context, GRIB_LOG_DEBUG,
"grib_accessor_data_simple_packing: unpack_double_element: creating %s, %d values (idx=%ld)",
a->name, n_vals, idx);
"%s: %s: creating %s, %ld values (idx=%zu)",
cclass_name, __func__, a->name, n_vals, idx);
buf += grib_byte_offset(a);
@ -251,13 +248,10 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
if (bits_per_value % 8) {
grib_context_log(a->context, GRIB_LOG_DEBUG,
"unpack_double_element: calling outline function : bpv %d, rv : %g, sf : %d, dsf : %d ",
bits_per_value, reference_value, binary_scale_factor, decimal_scale_factor);
"%s: calling outline function : bpv %ld, rv: %g, bsf: %ld, dsf: %ld ",
cclass_name, bits_per_value, reference_value, binary_scale_factor, decimal_scale_factor);
pos = idx * bits_per_value;
*val = (double)(((
grib_decode_unsigned_long(buf, &pos, bits_per_value) * s) +
reference_value) *
d);
*val = (double)(((grib_decode_unsigned_long(buf, &pos, bits_per_value) * s) + reference_value) * d);
/* val[i] = grib_decode_unsigned_long(buf, &pos, bits_per_value); */
/* fprintf(stdout,"unpck uuu-o: %d vals %d bitspv buf %d by long \n", n_vals, bits_per_value, pos/8);*/
}
@ -298,6 +292,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
static_assert(std::is_floating_point<T>::value, "Requires floating point numbers");
grib_accessor_data_simple_packing* self = (grib_accessor_data_simple_packing*)a;
const char* cclass_name = a->cclass->name;
grib_handle* gh = grib_handle_of_accessor(a);
unsigned char* buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
@ -377,8 +372,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
d = grib_power(-decimal_scale_factor, 10);
grib_context_log(a->context, GRIB_LOG_DEBUG,
"grib_accessor_data_simple_packing: unpack_double : creating %s, %d values",
a->name, n_vals);
"%s %s: Creating %s, %zu values", cclass_name, __func__, a->name, n_vals);
offsetBeforeData = grib_byte_offset(a);
buf += offsetBeforeData;
@ -394,8 +388,9 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
const long valuesSize = (bits_per_value * n_vals) / 8; /*in bytes*/
if (offsetBeforeData + valuesSize > offsetAfterData) {
grib_context_log(a->context, GRIB_LOG_ERROR,
"Data section size mismatch: offset before data=%ld, offset after data=%ld (num values=%ld, bits per value=%ld)",
offsetBeforeData, offsetAfterData, n_vals, bits_per_value);
"%s: Data section size mismatch: "
"offset before data=%ld, offset after data=%ld (num values=%zu, bits per value=%ld)",
cclass_name, offsetBeforeData, offsetAfterData, n_vals, bits_per_value);
return GRIB_DECODING_ERROR;
}
}
@ -411,8 +406,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
}
grib_context_log(a->context, GRIB_LOG_DEBUG,
"unpack_double: calling outline function : bpv %d, rv : %g, sf : %d, dsf : %d ",
bits_per_value, reference_value, binary_scale_factor, decimal_scale_factor);
"%s %s: calling outline function: bpv: %ld, rv: %g, bsf: %ld, dsf: %ld",
cclass_name, __func__, bits_per_value, reference_value, binary_scale_factor, decimal_scale_factor);
grib_decode_array<T>(buf, &pos, bits_per_value, reference_value, s, d, n_vals, val);
*len = (long)n_vals;
@ -445,6 +440,7 @@ static int _unpack_double(grib_accessor* a, double* val, size_t* len, unsigned c
{
grib_accessor_data_simple_packing* self = (grib_accessor_data_simple_packing*)a;
grib_handle* gh = grib_handle_of_accessor(a);
const char* cclass_name = a->cclass->name;
size_t i = 0;
int err = 0;
@ -514,8 +510,7 @@ static int _unpack_double(grib_accessor* a, double* val, size_t* len, unsigned c
d = grib_power(-decimal_scale_factor, 10);
grib_context_log(a->context, GRIB_LOG_DEBUG,
"grib_accessor_data_simple_packing: unpack_double : creating %s, %d values",
a->name, n_vals);
"%s %s: Creating %s, %zu values", cclass_name, __func__, a->name, n_vals);
offsetBeforeData = grib_byte_offset(a);
buf += offsetBeforeData;
@ -620,6 +615,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
{
grib_accessor_data_simple_packing* self = (grib_accessor_data_simple_packing*)a;
grib_handle* gh = grib_handle_of_accessor(a);
const char* cclass_name = a->cclass->name;
size_t i = 0;
size_t n_vals = *len;
@ -694,8 +690,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
double ref = 1e-100;
grib_get_double_internal(gh, self->reference_value, &ref);
if (ref != reference_value) {
grib_context_log(a->context, GRIB_LOG_ERROR, "data_simple_packing %s: (ref=%.10e != reference_value=%.10e)",
__func__, ref, reference_value);
grib_context_log(a->context, GRIB_LOG_ERROR, "%s %s: (ref=%.10e != reference_value=%.10e)",
cclass_name, __func__, ref, reference_value);
return GRIB_INTERNAL_ERROR;
}
}
@ -756,8 +752,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
err = number_of_bits((unsigned long)ceil(fabs(max - min)), &bits_per_value);
if (err) {
grib_context_log(a->context, GRIB_LOG_ERROR,
"Range of values too large. Try a smaller value for decimal precision (less than %ld)",
decimal_scale_factor);
"%s %s: Range of values too large. Try a smaller value for decimal precision (less than %ld)",
cclass_name, __func__, decimal_scale_factor);
return err;
}