mirror of https://github.com/ecmwf/eccodes.git
Performance: Call grib_handle_of_accessor once
This commit is contained in:
parent
f72f8bc5b8
commit
9736f663dc
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -94,6 +94,8 @@ int grib_accessor_data_jpeg2000_packing_t::unpack_float(float* val, size_t* len)
|
||||||
int grib_accessor_data_jpeg2000_packing_t::unpack_double(double* val, size_t* len)
|
int grib_accessor_data_jpeg2000_packing_t::unpack_double(double* val, size_t* len)
|
||||||
{
|
{
|
||||||
int err = GRIB_SUCCESS;
|
int err = GRIB_SUCCESS;
|
||||||
|
grib_handle* hand = grib_handle_of_accessor(this);
|
||||||
|
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
size_t buflen = byte_count();
|
size_t buflen = byte_count();
|
||||||
double bscale = 0;
|
double bscale = 0;
|
||||||
|
@ -116,18 +118,18 @@ int grib_accessor_data_jpeg2000_packing_t::unpack_double(double* val, size_t* le
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
if (units_factor_)
|
if (units_factor_)
|
||||||
grib_get_double_internal(grib_handle_of_accessor(this), units_factor_, &units_factor);
|
grib_get_double_internal(hand, units_factor_, &units_factor);
|
||||||
|
|
||||||
if (units_bias_)
|
if (units_bias_)
|
||||||
grib_get_double_internal(grib_handle_of_accessor(this), units_bias_, &units_bias);
|
grib_get_double_internal(hand, units_bias_, &units_bias);
|
||||||
|
|
||||||
if ((err = grib_get_long_internal(grib_handle_of_accessor(this), bits_per_value_, &bits_per_value)) != GRIB_SUCCESS)
|
if ((err = grib_get_long_internal(hand, bits_per_value_, &bits_per_value)) != GRIB_SUCCESS)
|
||||||
return err;
|
return err;
|
||||||
if ((err = grib_get_double_internal(grib_handle_of_accessor(this), reference_value_, &reference_value)) != GRIB_SUCCESS)
|
if ((err = grib_get_double_internal(hand, reference_value_, &reference_value)) != GRIB_SUCCESS)
|
||||||
return err;
|
return err;
|
||||||
if ((err = grib_get_long_internal(grib_handle_of_accessor(this), binary_scale_factor_, &binary_scale_factor)) != GRIB_SUCCESS)
|
if ((err = grib_get_long_internal(hand, binary_scale_factor_, &binary_scale_factor)) != GRIB_SUCCESS)
|
||||||
return err;
|
return err;
|
||||||
if ((err = grib_get_long_internal(grib_handle_of_accessor(this), decimal_scale_factor_, &decimal_scale_factor)) != GRIB_SUCCESS)
|
if ((err = grib_get_long_internal(hand, decimal_scale_factor_, &decimal_scale_factor)) != GRIB_SUCCESS)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
dirty_ = 0;
|
dirty_ = 0;
|
||||||
|
@ -194,7 +196,6 @@ int grib_accessor_data_jpeg2000_packing_t::pack_double(const double* cval, size_
|
||||||
{
|
{
|
||||||
size_t n_vals = *len;
|
size_t n_vals = *len;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
int i;
|
|
||||||
double reference_value = 0;
|
double reference_value = 0;
|
||||||
long binary_scale_factor = 0;
|
long binary_scale_factor = 0;
|
||||||
long bits_per_value = 0;
|
long bits_per_value = 0;
|
||||||
|
@ -237,14 +238,14 @@ int grib_accessor_data_jpeg2000_packing_t::pack_double(const double* cval, size_
|
||||||
|
|
||||||
if (units_factor != 1.0) {
|
if (units_factor != 1.0) {
|
||||||
if (units_bias != 0.0)
|
if (units_bias != 0.0)
|
||||||
for (i = 0; i < n_vals; i++)
|
for (size_t i = 0; i < n_vals; i++)
|
||||||
val[i] = val[i] * units_factor + units_bias;
|
val[i] = val[i] * units_factor + units_bias;
|
||||||
else
|
else
|
||||||
for (i = 0; i < n_vals; i++)
|
for (size_t i = 0; i < n_vals; i++)
|
||||||
val[i] *= units_factor;
|
val[i] *= units_factor;
|
||||||
}
|
}
|
||||||
else if (units_bias != 0.0)
|
else if (units_bias != 0.0)
|
||||||
for (i = 0; i < n_vals; i++)
|
for (size_t i = 0; i < n_vals; i++)
|
||||||
val[i] += units_bias;
|
val[i] += units_bias;
|
||||||
|
|
||||||
ret = grib_accessor_data_simple_packing_t::pack_double(val, len);
|
ret = grib_accessor_data_simple_packing_t::pack_double(val, len);
|
||||||
|
|
|
@ -16,15 +16,16 @@ grib_accessor* grib_accessor_evaluate = &_grib_accessor_evaluate;
|
||||||
void grib_accessor_evaluate_t::init(const long l, grib_arguments* c)
|
void grib_accessor_evaluate_t::init(const long l, grib_arguments* c)
|
||||||
{
|
{
|
||||||
grib_accessor_long_t::init(l, c);
|
grib_accessor_long_t::init(l, c);
|
||||||
arg_ = c;
|
arg_ = c; // the expression to be evaluated
|
||||||
flags_ |= GRIB_ACCESSOR_FLAG_READ_ONLY;
|
flags_ |= GRIB_ACCESSOR_FLAG_READ_ONLY;
|
||||||
}
|
}
|
||||||
|
|
||||||
int grib_accessor_evaluate_t::unpack_long(long* val, size_t* len)
|
int grib_accessor_evaluate_t::unpack_long(long* val, size_t* len)
|
||||||
{
|
{
|
||||||
grib_expression* e = grib_arguments_get_expression(grib_handle_of_accessor(this), arg_, 0);
|
grib_handle* h = grib_handle_of_accessor(this);
|
||||||
|
grib_expression* e = grib_arguments_get_expression(h, arg_, 0);
|
||||||
|
|
||||||
int ret = grib_expression_evaluate_long(grib_handle_of_accessor(this), e, val);
|
int ret = grib_expression_evaluate_long(h, e, val);
|
||||||
*len = 1;
|
*len = 1;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -22,5 +22,5 @@ public:
|
||||||
void init(const long, grib_arguments*) override;
|
void init(const long, grib_arguments*) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
grib_arguments* arg_;
|
grib_arguments* arg_; // expression to be evaluated
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -403,8 +403,8 @@ int grib_accessor_g2end_step_t::unpack_double(double* val, size_t* len)
|
||||||
|
|
||||||
int grib_accessor_g2end_step_t::pack_long_(const long end_step_value, const long end_step_unit)
|
int grib_accessor_g2end_step_t::pack_long_(const long end_step_value, const long end_step_unit)
|
||||||
{
|
{
|
||||||
grib_handle* h = grib_handle_of_accessor(this);
|
grib_handle* h = grib_handle_of_accessor(this);
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
long year;
|
long year;
|
||||||
long month;
|
long month;
|
||||||
|
@ -527,13 +527,13 @@ int grib_accessor_g2end_step_t::pack_long_(const long end_step_value, const long
|
||||||
time_range_opt = eccodes::Step{ time_range.value<long>(eccodes::Unit{ force_step_units }), eccodes::Unit{ force_step_units } };
|
time_range_opt = eccodes::Step{ time_range.value<long>(eccodes::Unit{ force_step_units }), eccodes::Unit{ force_step_units } };
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((err = grib_set_long_internal(grib_handle_of_accessor(this), time_range_value_, time_range_opt.value<long>())) != GRIB_SUCCESS)
|
if ((err = grib_set_long_internal(h, time_range_value_, time_range_opt.value<long>())) != GRIB_SUCCESS)
|
||||||
return err;
|
return err;
|
||||||
if ((err = grib_set_long_internal(grib_handle_of_accessor(this), time_range_unit_, time_range_opt.unit().value<long>())) != GRIB_SUCCESS)
|
if ((err = grib_set_long_internal(h, time_range_unit_, time_range_opt.unit().value<long>())) != GRIB_SUCCESS)
|
||||||
return err;
|
return err;
|
||||||
if ((err = grib_set_long_internal(grib_handle_of_accessor(this), forecast_time_value_key, forecast_time_opt.value<long>())) != GRIB_SUCCESS)
|
if ((err = grib_set_long_internal(h, forecast_time_value_key, forecast_time_opt.value<long>())) != GRIB_SUCCESS)
|
||||||
return err;
|
return err;
|
||||||
if ((err = grib_set_long_internal(grib_handle_of_accessor(this), forecast_time_unit_key, forecast_time_opt.unit().value<long>())) != GRIB_SUCCESS)
|
if ((err = grib_set_long_internal(h, forecast_time_unit_key, forecast_time_opt.unit().value<long>())) != GRIB_SUCCESS)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
return GRIB_SUCCESS;
|
return GRIB_SUCCESS;
|
||||||
|
@ -639,7 +639,7 @@ int grib_accessor_g2end_step_t::pack_string(const char* val, size_t* len)
|
||||||
|
|
||||||
long grib_accessor_g2end_step_t::get_native_type()
|
long grib_accessor_g2end_step_t::get_native_type()
|
||||||
{
|
{
|
||||||
grib_handle* h = grib_handle_of_accessor(this);
|
grib_handle* h = grib_handle_of_accessor(this);
|
||||||
const int show_units_for_hours = context_->grib_hourly_steps_with_units;
|
const int show_units_for_hours = context_->grib_hourly_steps_with_units;
|
||||||
|
|
||||||
if (!show_units_for_hours) {
|
if (!show_units_for_hours) {
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2005- ECMWF.
|
* (C) Copyright 2005- ECMWF.
|
||||||
*
|
*
|
||||||
|
|
|
@ -17,11 +17,12 @@ void grib_accessor_julian_day_t::init(const long l, grib_arguments* c)
|
||||||
{
|
{
|
||||||
grib_accessor_double_t::init(l, c);
|
grib_accessor_double_t::init(l, c);
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
grib_handle* h = grib_handle_of_accessor(this);
|
||||||
|
|
||||||
date_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
date_ = grib_arguments_get_name(h, c, n++);
|
||||||
hour_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
hour_ = grib_arguments_get_name(h, c, n++);
|
||||||
minute_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
minute_ = grib_arguments_get_name(h, c, n++);
|
||||||
second_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
second_ = grib_arguments_get_name(h, c, n++);
|
||||||
|
|
||||||
length_ = 0;
|
length_ = 0;
|
||||||
}
|
}
|
||||||
|
@ -39,29 +40,27 @@ int grib_accessor_julian_day_t::pack_long(const long* val, size_t* len)
|
||||||
|
|
||||||
int grib_accessor_julian_day_t::pack_double(const double* val, size_t* len)
|
int grib_accessor_julian_day_t::pack_double(const double* val, size_t* len)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = GRIB_SUCCESS;
|
||||||
long hour = 0;
|
long hour = 0, minute = 0, second = 0;
|
||||||
long minute = 0;
|
long year = 0, month = 0, day = 0;
|
||||||
long second = 0;
|
grib_handle* h = grib_handle_of_accessor(this);
|
||||||
long date = 0;
|
|
||||||
long year, month, day;
|
|
||||||
|
|
||||||
ret = grib_julian_to_datetime(*val, &year, &month, &day, &hour, &minute, &second);
|
ret = grib_julian_to_datetime(*val, &year, &month, &day, &hour, &minute, &second);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
date = year * 10000 + month * 100 + day;
|
long date = year * 10000 + month * 100 + day;
|
||||||
|
|
||||||
ret = grib_set_long_internal(grib_handle_of_accessor(this), date_, date);
|
ret = grib_set_long_internal(h, date_, date);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
return ret;
|
return ret;
|
||||||
ret = grib_set_long_internal(grib_handle_of_accessor(this), hour_, hour);
|
ret = grib_set_long_internal(h, hour_, hour);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
return ret;
|
return ret;
|
||||||
ret = grib_set_long_internal(grib_handle_of_accessor(this), minute_, minute);
|
ret = grib_set_long_internal(h, minute_, minute);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
return ret;
|
return ret;
|
||||||
ret = grib_set_long_internal(grib_handle_of_accessor(this), second_, second);
|
ret = grib_set_long_internal(h, second_, second);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -82,17 +81,18 @@ int grib_accessor_julian_day_t::unpack_double(double* val, size_t* len)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
long date, hour, minute, second;
|
long date, hour, minute, second;
|
||||||
long year, month, day;
|
long year, month, day;
|
||||||
|
grib_handle* h = grib_handle_of_accessor(this);
|
||||||
|
|
||||||
ret = grib_get_long_internal(grib_handle_of_accessor(this), date_, &date);
|
ret = grib_get_long_internal(h, date_, &date);
|
||||||
if (ret != GRIB_SUCCESS)
|
if (ret != GRIB_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
ret = grib_get_long_internal(grib_handle_of_accessor(this), hour_, &hour);
|
ret = grib_get_long_internal(h, hour_, &hour);
|
||||||
if (ret != GRIB_SUCCESS)
|
if (ret != GRIB_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
ret = grib_get_long_internal(grib_handle_of_accessor(this), minute_, &minute);
|
ret = grib_get_long_internal(h, minute_, &minute);
|
||||||
if (ret != GRIB_SUCCESS)
|
if (ret != GRIB_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
ret = grib_get_long_internal(grib_handle_of_accessor(this), second_, &second);
|
ret = grib_get_long_internal(h, second_, &second);
|
||||||
if (ret != GRIB_SUCCESS)
|
if (ret != GRIB_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
|
|
@ -16,12 +16,14 @@ grib_accessor* grib_accessor_number_of_coded_values = &_grib_accessor_number_of_
|
||||||
void grib_accessor_number_of_coded_values_t::init(const long l, grib_arguments* c)
|
void grib_accessor_number_of_coded_values_t::init(const long l, grib_arguments* c)
|
||||||
{
|
{
|
||||||
grib_accessor_long_t::init(l, c);
|
grib_accessor_long_t::init(l, c);
|
||||||
|
grib_handle* h = grib_handle_of_accessor(this);
|
||||||
|
|
||||||
int n = 0;
|
int n = 0;
|
||||||
bitsPerValue_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
bitsPerValue_ = grib_arguments_get_name(h, c, n++);
|
||||||
offsetBeforeData_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
offsetBeforeData_ = grib_arguments_get_name(h, c, n++);
|
||||||
offsetAfterData_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
offsetAfterData_ = grib_arguments_get_name(h, c, n++);
|
||||||
unusedBits_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
unusedBits_ = grib_arguments_get_name(h, c, n++);
|
||||||
numberOfValues_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
numberOfValues_ = grib_arguments_get_name(h, c, n++);
|
||||||
flags_ |= GRIB_ACCESSOR_FLAG_READ_ONLY;
|
flags_ |= GRIB_ACCESSOR_FLAG_READ_ONLY;
|
||||||
flags_ |= GRIB_ACCESSOR_FLAG_FUNCTION;
|
flags_ |= GRIB_ACCESSOR_FLAG_FUNCTION;
|
||||||
length_ = 0;
|
length_ = 0;
|
||||||
|
@ -29,30 +31,31 @@ void grib_accessor_number_of_coded_values_t::init(const long l, grib_arguments*
|
||||||
|
|
||||||
int grib_accessor_number_of_coded_values_t::unpack_long(long* val, size_t* len)
|
int grib_accessor_number_of_coded_values_t::unpack_long(long* val, size_t* len)
|
||||||
{
|
{
|
||||||
int ret = GRIB_SUCCESS;
|
int ret = GRIB_SUCCESS;
|
||||||
long bpv = 0;
|
long bpv = 0, offsetBeforeData = 0, offsetAfterData = 0, unusedBits = 0, numberOfValues;
|
||||||
long offsetBeforeData = 0, offsetAfterData = 0, unusedBits = 0, numberOfValues;
|
grib_handle* h = grib_handle_of_accessor(this);
|
||||||
|
|
||||||
if ((ret = grib_get_long_internal(grib_handle_of_accessor(this), bitsPerValue_, &bpv)) != GRIB_SUCCESS)
|
if ((ret = grib_get_long_internal(h, bitsPerValue_, &bpv)) != GRIB_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if ((ret = grib_get_long_internal(grib_handle_of_accessor(this), offsetBeforeData_, &offsetBeforeData)) != GRIB_SUCCESS)
|
if ((ret = grib_get_long_internal(h, offsetBeforeData_, &offsetBeforeData)) != GRIB_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if ((ret = grib_get_long_internal(grib_handle_of_accessor(this), offsetAfterData_, &offsetAfterData)) != GRIB_SUCCESS)
|
if ((ret = grib_get_long_internal(h, offsetAfterData_, &offsetAfterData)) != GRIB_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if ((ret = grib_get_long_internal(grib_handle_of_accessor(this), unusedBits_, &unusedBits)) != GRIB_SUCCESS)
|
if ((ret = grib_get_long_internal(h, unusedBits_, &unusedBits)) != GRIB_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (bpv != 0) {
|
if (bpv != 0) {
|
||||||
grib_context_log(context_, GRIB_LOG_DEBUG, "grib_accessor_number_of_coded_values_t: offsetAfterData=%ld offsetBeforeData=%ld unusedBits=%ld bpv=%ld\n",
|
grib_context_log(context_, GRIB_LOG_DEBUG,
|
||||||
offsetAfterData, offsetBeforeData, unusedBits, bpv);
|
"grib_accessor_number_of_coded_values_t: offsetAfterData=%ld offsetBeforeData=%ld unusedBits=%ld bpv=%ld",
|
||||||
|
offsetAfterData, offsetBeforeData, unusedBits, bpv);
|
||||||
DEBUG_ASSERT(offsetAfterData > offsetBeforeData);
|
DEBUG_ASSERT(offsetAfterData > offsetBeforeData);
|
||||||
*val = ((offsetAfterData - offsetBeforeData) * 8 - unusedBits) / bpv;
|
*val = ((offsetAfterData - offsetBeforeData) * 8 - unusedBits) / bpv;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if ((ret = grib_get_long_internal(grib_handle_of_accessor(this), numberOfValues_, &numberOfValues)) != GRIB_SUCCESS)
|
if ((ret = grib_get_long_internal(h, numberOfValues_, &numberOfValues)) != GRIB_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
*val = numberOfValues;
|
*val = numberOfValues;
|
||||||
|
|
|
@ -17,12 +17,13 @@ void grib_accessor_statistics_spectral_t::init(const long l, grib_arguments* c)
|
||||||
{
|
{
|
||||||
grib_accessor_abstract_vector_t::init(l, c);
|
grib_accessor_abstract_vector_t::init(l, c);
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
grib_handle* h = grib_handle_of_accessor(this);
|
||||||
|
|
||||||
values_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
values_ = grib_arguments_get_name(h, c, n++);
|
||||||
J_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
J_ = grib_arguments_get_name(h, c, n++);
|
||||||
K_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
K_ = grib_arguments_get_name(h, c, n++);
|
||||||
M_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
M_ = grib_arguments_get_name(h, c, n++);
|
||||||
JS_ = grib_arguments_get_name(grib_handle_of_accessor(this), c, n++);
|
JS_ = grib_arguments_get_name(h, c, n++);
|
||||||
|
|
||||||
flags_ |= GRIB_ACCESSOR_FLAG_READ_ONLY;
|
flags_ |= GRIB_ACCESSOR_FLAG_READ_ONLY;
|
||||||
flags_ |= GRIB_ACCESSOR_FLAG_FUNCTION;
|
flags_ |= GRIB_ACCESSOR_FLAG_FUNCTION;
|
||||||
|
@ -53,13 +54,13 @@ int grib_accessor_statistics_spectral_t::unpack_double(double* val, size_t* len)
|
||||||
if ((ret = grib_get_size(h, values_, &size)) != GRIB_SUCCESS)
|
if ((ret = grib_get_size(h, values_, &size)) != GRIB_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if ((ret = grib_get_long(grib_handle_of_accessor(this), J_, &J)) != GRIB_SUCCESS)
|
if ((ret = grib_get_long(h, J_, &J)) != GRIB_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if ((ret = grib_get_long(grib_handle_of_accessor(this), K_, &K)) != GRIB_SUCCESS)
|
if ((ret = grib_get_long(h, K_, &K)) != GRIB_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if ((ret = grib_get_long(grib_handle_of_accessor(this), M_, &M)) != GRIB_SUCCESS)
|
if ((ret = grib_get_long(h, M_, &M)) != GRIB_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (J != M || M != K)
|
if (J != M || M != K)
|
||||||
|
@ -114,7 +115,7 @@ int grib_accessor_statistics_spectral_t::unpack_double(double* val, size_t* len)
|
||||||
int grib_accessor_statistics_spectral_t::value_count(long* count)
|
int grib_accessor_statistics_spectral_t::value_count(long* count)
|
||||||
{
|
{
|
||||||
*count = number_of_elements_;
|
*count = number_of_elements_;
|
||||||
return 0;
|
return GRIB_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
void grib_accessor_statistics_spectral_t::destroy(grib_context* c)
|
void grib_accessor_statistics_spectral_t::destroy(grib_context* c)
|
||||||
|
|
Loading…
Reference in New Issue