ECC-1510: GRIB2: Add support for template 5.200 (Run length packing with level values)

This commit is contained in:
Shahram Najm 2023-01-25 20:25:28 +00:00
parent deb77fc4e0
commit b5732d2b71
8 changed files with 461 additions and 162 deletions

View File

@ -0,0 +1,11 @@
# (C) Copyright 2005- ECMWF.
# Grid point data - Run length encoding
unsigned[1] bitsPerValue : dump;
unsigned[2] maxLevelValue : dump;
unsigned[2] numberOfLevelValues : dump;
unsigned[1] decimalScaleFactor : dump;
level_value_list list(numberOfLevelValues) {
unsigned[2] levelValues : dump;
}

View File

@ -0,0 +1,26 @@
# (C) Copyright 2005- ECMWF.
# Grid point data - Run length encoding
meta codedValues data_run_length_packing(
section7Length,
offsetBeforeData,
offsetSection7,
numberOfValues,
bitsPerValue,
maxLevelValue,
numberOfLevelValues,
decimalScaleFactor,
levelValues
): read_only;
meta values data_apply_bitmap(codedValues,
bitmap,
missingValue,
binaryScaleFactor,
numberOfDataPoints,
numberOfValues) : dump;
alias data.packedValues = codedValues;
template statistics "common/statistics_grid.def";

View File

@ -394,6 +394,7 @@ list( APPEND eccodes_src_files
grib_accessor_class_blob.c
grib_optimize_decimal_factor.c
grib_accessor_class_data_g2bifourier_packing.c
grib_accessor_class_data_run_length_packing.c
eccodes_windef.h
# We ship our own generated lex/yacc C files
grib_yacc.c grib_lex.c )

View File

@ -62,6 +62,7 @@ extern grib_accessor_class* grib_accessor_class_data_g2simple_packing_with_prepr
extern grib_accessor_class* grib_accessor_class_data_jpeg2000_packing;
extern grib_accessor_class* grib_accessor_class_data_png_packing;
extern grib_accessor_class* grib_accessor_class_data_raw_packing;
extern grib_accessor_class* grib_accessor_class_data_run_length_packing;
extern grib_accessor_class* grib_accessor_class_data_secondary_bitmap;
extern grib_accessor_class* grib_accessor_class_data_sh_packed;
extern grib_accessor_class* grib_accessor_class_data_sh_unpacked;

View File

@ -0,0 +1,254 @@
/*
* (C) Copyright 2005- ECMWF.
*
* This software is licensed under the terms of the Apache Licence Version 2.0
* which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
*
* In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
*/
#include "grib_api_internal.h"
/*
This is used by make_class.pl
START_CLASS_DEF
CLASS = accessor
SUPER = grib_accessor_class_values
IMPLEMENTS = init
IMPLEMENTS = unpack_double
IMPLEMENTS = value_count
MEMBERS=const char* number_of_values
MEMBERS=const char* bits_per_value
MEMBERS=const char* max_level_value
MEMBERS=const char* number_of_level_values
MEMBERS=const char* decimal_scale_factor
MEMBERS=const char* level_values
END_CLASS_DEF
*/
/* START_CLASS_IMP */
/*
Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
Instead edit values between START_CLASS_DEF and END_CLASS_DEF
or edit "accessor.class" and rerun ./make_class.pl
*/
static int unpack_double(grib_accessor*, double* val, size_t* len);
static int value_count(grib_accessor*, long*);
static void init(grib_accessor*, const long, grib_arguments*);
static void init_class(grib_accessor_class*);
typedef struct grib_accessor_data_run_length_packing
{
grib_accessor att;
/* Members defined in gen */
/* Members defined in values */
int carg;
const char* seclen;
const char* offsetdata;
const char* offsetsection;
int dirty;
/* Members defined in data_run_length_packing */
const char* number_of_values;
const char* bits_per_value;
const char* max_level_value;
const char* number_of_level_values;
const char* decimal_scale_factor;
const char* level_values;
} grib_accessor_data_run_length_packing;
extern grib_accessor_class* grib_accessor_class_values;
static grib_accessor_class _grib_accessor_class_data_run_length_packing = {
&grib_accessor_class_values, /* super */
"data_run_length_packing", /* name */
sizeof(grib_accessor_data_run_length_packing), /* size */
0, /* inited */
&init_class, /* init_class */
&init, /* init */
0, /* post_init */
0, /* free mem */
0, /* describes himself */
0, /* get length of section */
0, /* get length of string */
&value_count, /* get number of values */
0, /* get number of bytes */
0, /* get offset to bytes */
0, /* get native type */
0, /* get sub_section */
0, /* grib_pack procedures long */
0, /* grib_pack procedures long */
0, /* grib_pack procedures long */
0, /* grib_unpack procedures long */
0, /* grib_pack procedures double */
&unpack_double, /* grib_unpack procedures double */
0, /* grib_pack procedures string */
0, /* grib_unpack procedures string */
0, /* grib_pack array procedures string */
0, /* grib_unpack array procedures string */
0, /* grib_pack procedures bytes */
0, /* grib_unpack procedures bytes */
0, /* pack_expression */
0, /* notify_change */
0, /* update_size */
0, /* preferred_size */
0, /* resize */
0, /* nearest_smaller_value */
0, /* next accessor */
0, /* compare vs. another accessor */
0, /* unpack only ith value */
0, /* unpack a subarray */
0, /* clear */
0, /* clone accessor */
};
grib_accessor_class* grib_accessor_class_data_run_length_packing = &_grib_accessor_class_data_run_length_packing;
static void init_class(grib_accessor_class* c)
{
c->dump = (*(c->super))->dump;
c->next_offset = (*(c->super))->next_offset;
c->string_length = (*(c->super))->string_length;
c->byte_count = (*(c->super))->byte_count;
c->byte_offset = (*(c->super))->byte_offset;
c->get_native_type = (*(c->super))->get_native_type;
c->sub_section = (*(c->super))->sub_section;
c->pack_missing = (*(c->super))->pack_missing;
c->is_missing = (*(c->super))->is_missing;
c->pack_long = (*(c->super))->pack_long;
c->unpack_long = (*(c->super))->unpack_long;
c->pack_double = (*(c->super))->pack_double;
c->pack_string = (*(c->super))->pack_string;
c->unpack_string = (*(c->super))->unpack_string;
c->pack_string_array = (*(c->super))->pack_string_array;
c->unpack_string_array = (*(c->super))->unpack_string_array;
c->pack_bytes = (*(c->super))->pack_bytes;
c->unpack_bytes = (*(c->super))->unpack_bytes;
c->pack_expression = (*(c->super))->pack_expression;
c->notify_change = (*(c->super))->notify_change;
c->update_size = (*(c->super))->update_size;
c->preferred_size = (*(c->super))->preferred_size;
c->resize = (*(c->super))->resize;
c->nearest_smaller_value = (*(c->super))->nearest_smaller_value;
c->next = (*(c->super))->next;
c->compare = (*(c->super))->compare;
c->unpack_double_element = (*(c->super))->unpack_double_element;
c->unpack_double_subarray = (*(c->super))->unpack_double_subarray;
c->clear = (*(c->super))->clear;
c->make_clone = (*(c->super))->make_clone;
}
/* END_CLASS_IMP */
static void init(grib_accessor* a, const long v, grib_arguments* args)
{
grib_accessor_data_run_length_packing* self = (grib_accessor_data_run_length_packing*)a;
grib_handle* gh = grib_handle_of_accessor(a);
self->number_of_values = grib_arguments_get_name(gh, args, self->carg++);
self->bits_per_value = grib_arguments_get_name(gh, args, self->carg++);
self->max_level_value = grib_arguments_get_name(gh, args, self->carg++);
self->number_of_level_values = grib_arguments_get_name(gh, args, self->carg++);
self->decimal_scale_factor = grib_arguments_get_name(gh, args, self->carg++);
self->level_values = grib_arguments_get_name(gh, args, self->carg++);
a->flags |= GRIB_ACCESSOR_FLAG_DATA;
}
static int value_count(grib_accessor* a, long* number_of_values)
{
grib_accessor_data_run_length_packing* self = (grib_accessor_data_run_length_packing*)a;
*number_of_values = 0;
return grib_get_long_internal(grib_handle_of_accessor(a), self->number_of_values, number_of_values);
}
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);
int err = GRIB_SUCCESS;
long seclen, number_of_values, bits_per_value, max_level_value, number_of_level_values, decimal_scale_factor;
if ((err = grib_get_long_internal(gh, self->seclen, &seclen)) != GRIB_SUCCESS)
return err;
if ((err = grib_get_long_internal(gh, self->number_of_values, &number_of_values)) != GRIB_SUCCESS)
return err;
if ((err = grib_get_long_internal(gh, self->bits_per_value, &bits_per_value)) != GRIB_SUCCESS)
return err;
if ((err = grib_get_long_internal(gh, self->max_level_value, &max_level_value)) != GRIB_SUCCESS)
return err;
if ((err = grib_get_long_internal(gh, self->number_of_level_values, &number_of_level_values)) != GRIB_SUCCESS)
return err;
if ((err = grib_get_long_internal(gh, self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
return err;
long* level_values = (long*)grib_context_malloc_clear(a->context, sizeof(long) * number_of_level_values);
size_t level_values_size = number_of_level_values;
if ((err = grib_get_long_array_internal(gh, self->level_values, level_values, &level_values_size)) != GRIB_SUCCESS)
return err;
*len = number_of_values;
int i = 0;
long number_of_compressed_values = ((seclen - 5) * 8) / bits_per_value;
if (number_of_compressed_values == 0 || max_level_value == 0) {
for (i = 0; i < number_of_values; i++) {
val[i] = GRIB_MISSING_DOUBLE;
}
return GRIB_SUCCESS;
}
long 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, "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);
return GRIB_DECODING_ERROR;
}
if (decimal_scale_factor > 127) {
decimal_scale_factor = -(decimal_scale_factor - 128);
}
double level_scale_factor = grib_power(-decimal_scale_factor, 10.0);
double* levels = (double*)grib_context_malloc_clear(a->context, sizeof(double) * (number_of_level_values + 1));
levels[0] = 0;
for (i = 0; i < number_of_level_values; i++) {
levels[i + 1] = level_values[i] * level_scale_factor;
}
long* compressed_values = (long*)grib_context_malloc_clear(a->context, sizeof(long) * number_of_compressed_values);
unsigned char* buf = (unsigned char*)grib_handle_of_accessor(a)->buffer->data;
long offsetBeforeData = grib_byte_offset(a);
buf += offsetBeforeData;
long pos = 0;
grib_decode_long_array(buf, &pos, bits_per_value, number_of_compressed_values, compressed_values);
long v, n, factor, k;
long j = 0;
i = 0;
while (i < number_of_compressed_values) {
if (compressed_values[i] > max_level_value) {
grib_context_log(a->context, GRIB_LOG_ERROR, "numberOfValues mismatch: i=%ld, compressed_values[i]=%ld, max_level_value=%ld", i, compressed_values[i], max_level_value);
break;
}
v = compressed_values[i++];
n = 1;
factor = 1;
while (i < number_of_compressed_values && compressed_values[i] > max_level_value) {
n += factor * (compressed_values[i] - max_level_value - 1);
factor = factor * range;
i++;
}
if (n > number_of_values) {
grib_context_log(a->context, GRIB_LOG_ERROR, "numberOfValues mismatch: n=%ld, number_of_values=%ld", n, number_of_values);
break;
}
for (k = 0; k < n; k++) {
val[j++] = levels[v];
}
}
grib_context_free(a->context, level_values);
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, "numberOfValues mismatch: j=%ld, number_of_values=%ld", j, number_of_values);
return GRIB_DECODING_ERROR;
}
return err;
}

View File

@ -37,7 +37,7 @@
#line 6 "accessor_class_list.gperf"
struct accessor_class_hash { char *name; grib_accessor_class **cclass;};
#define TOTAL_KEYWORDS 220
#define TOTAL_KEYWORDS 221
#define MIN_WORD_LENGTH 1
#define MAX_WORD_LENGTH 44
#define MIN_HASH_VALUE 1
@ -52,7 +52,7 @@ struct accessor_class_hash { char *name; grib_accessor_class **cclass;};
#endif
#endif
static unsigned int
grib_accessor_classes_get_id (const char *str, size_t len)
grib_accessor_classes_get_id (register const char *str, register size_t len)
{
static const unsigned short asso_values[] =
{
@ -83,7 +83,7 @@ grib_accessor_classes_get_id (const char *str, size_t len)
832, 832, 832, 832, 832, 832, 832, 832, 832, 832,
832, 832, 832, 832, 832, 832
};
unsigned int hval = len;
register unsigned int hval = len;
switch (hval)
{
@ -118,100 +118,100 @@ static const struct accessor_class_hash classes[] =
#line 9 "accessor_class_list.gperf"
{" "},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 157 "accessor_class_list.gperf"
#line 158 "accessor_class_list.gperf"
{"nearest", &grib_accessor_class_nearest},
{""}, {""}, {""}, {""}, {""}, {""},
#line 119 "accessor_class_list.gperf"
#line 120 "accessor_class_list.gperf"
{"gen", &grib_accessor_class_gen},
{""}, {""},
#line 120 "accessor_class_list.gperf"
#line 121 "accessor_class_list.gperf"
{"getenv", &grib_accessor_class_getenv},
{""},
#line 85 "accessor_class_list.gperf"
#line 86 "accessor_class_list.gperf"
{"expanded_descriptors", &grib_accessor_class_expanded_descriptors},
{""}, {""}, {""}, {""},
#line 135 "accessor_class_list.gperf"
#line 136 "accessor_class_list.gperf"
{"int8", &grib_accessor_class_int8},
{""},
#line 73 "accessor_class_list.gperf"
#line 74 "accessor_class_list.gperf"
{"data_secondary_bitmap", &grib_accessor_class_data_secondary_bitmap},
#line 204 "accessor_class_list.gperf"
#line 205 "accessor_class_list.gperf"
{"time", &grib_accessor_class_time},
#line 71 "accessor_class_list.gperf"
{"data_png_packing", &grib_accessor_class_data_png_packing},
{""},
#line 192 "accessor_class_list.gperf"
#line 193 "accessor_class_list.gperf"
{"size", &grib_accessor_class_size},
#line 182 "accessor_class_list.gperf"
{"second_order_bits_per_value", &grib_accessor_class_second_order_bits_per_value},
#line 189 "accessor_class_list.gperf"
{"signed", &grib_accessor_class_signed},
#line 183 "accessor_class_list.gperf"
{"second_order_bits_per_value", &grib_accessor_class_second_order_bits_per_value},
#line 190 "accessor_class_list.gperf"
{"signed", &grib_accessor_class_signed},
#line 184 "accessor_class_list.gperf"
{"section", &grib_accessor_class_section},
#line 205 "accessor_class_list.gperf"
#line 206 "accessor_class_list.gperf"
{"times", &grib_accessor_class_times},
#line 72 "accessor_class_list.gperf"
{"data_raw_packing", &grib_accessor_class_data_raw_packing},
#line 118 "accessor_class_list.gperf"
#line 119 "accessor_class_list.gperf"
{"gds_not_present_bitmap", &grib_accessor_class_gds_not_present_bitmap},
#line 129 "accessor_class_list.gperf"
#line 130 "accessor_class_list.gperf"
{"int16", &grib_accessor_class_int16},
#line 14 "accessor_class_list.gperf"
{"ascii", &grib_accessor_class_ascii},
{""},
#line 184 "accessor_class_list.gperf"
{"section_length", &grib_accessor_class_section_length},
#line 185 "accessor_class_list.gperf"
{"section_length", &grib_accessor_class_section_length},
#line 186 "accessor_class_list.gperf"
{"section_padding", &grib_accessor_class_section_padding},
#line 198 "accessor_class_list.gperf"
#line 199 "accessor_class_list.gperf"
{"statistics", &grib_accessor_class_statistics},
#line 201 "accessor_class_list.gperf"
#line 202 "accessor_class_list.gperf"
{"step_in_units", &grib_accessor_class_step_in_units},
#line 190 "accessor_class_list.gperf"
#line 191 "accessor_class_list.gperf"
{"signed_bits", &grib_accessor_class_signed_bits},
#line 195 "accessor_class_list.gperf"
#line 196 "accessor_class_list.gperf"
{"spd", &grib_accessor_class_spd},
#line 169 "accessor_class_list.gperf"
#line 170 "accessor_class_list.gperf"
{"pad", &grib_accessor_class_pad},
#line 77 "accessor_class_list.gperf"
#line 78 "accessor_class_list.gperf"
{"data_simple_packing", &grib_accessor_class_data_simple_packing},
#line 80 "accessor_class_list.gperf"
#line 81 "accessor_class_list.gperf"
{"dirty", &grib_accessor_class_dirty},
{""},
#line 133 "accessor_class_list.gperf"
#line 134 "accessor_class_list.gperf"
{"int64", &grib_accessor_class_int64},
{""},
#line 199 "accessor_class_list.gperf"
#line 200 "accessor_class_list.gperf"
{"statistics_spectral", &grib_accessor_class_statistics_spectral},
#line 79 "accessor_class_list.gperf"
#line 80 "accessor_class_list.gperf"
{"dictionary", &grib_accessor_class_dictionary},
{""},
#line 117 "accessor_class_list.gperf"
#line 118 "accessor_class_list.gperf"
{"gds_is_present", &grib_accessor_class_gds_is_present},
{""},
#line 114 "accessor_class_list.gperf"
#line 115 "accessor_class_list.gperf"
{"g2lon", &grib_accessor_class_g2lon},
#line 207 "accessor_class_list.gperf"
#line 208 "accessor_class_list.gperf"
{"to_integer", &grib_accessor_class_to_integer},
{""}, {""},
#line 109 "accessor_class_list.gperf"
#line 110 "accessor_class_list.gperf"
{"g2date", &grib_accessor_class_g2date},
#line 48 "accessor_class_list.gperf"
{"data_apply_bitmap", &grib_accessor_class_data_apply_bitmap},
{""},
#line 186 "accessor_class_list.gperf"
#line 187 "accessor_class_list.gperf"
{"section_pointer", &grib_accessor_class_section_pointer},
#line 70 "accessor_class_list.gperf"
{"data_jpeg2000_packing", &grib_accessor_class_data_jpeg2000_packing},
#line 131 "accessor_class_list.gperf"
#line 132 "accessor_class_list.gperf"
{"int32", &grib_accessor_class_int32},
#line 63 "accessor_class_list.gperf"
{"data_g22order_packing", &grib_accessor_class_data_g22order_packing},
#line 110 "accessor_class_list.gperf"
#line 111 "accessor_class_list.gperf"
{"g2end_step", &grib_accessor_class_g2end_step},
#line 51 "accessor_class_list.gperf"
{"data_apply_gdsnotpresent", &grib_accessor_class_data_apply_gdsnotpresent},
#line 107 "accessor_class_list.gperf"
#line 108 "accessor_class_list.gperf"
{"g2bitmap", &grib_accessor_class_g2bitmap},
#line 49 "accessor_class_list.gperf"
{"data_apply_boustrophedonic", &grib_accessor_class_data_apply_boustrophedonic},
@ -221,141 +221,143 @@ static const struct accessor_class_hash classes[] =
{""}, {""}, {""}, {""},
#line 50 "accessor_class_list.gperf"
{"data_apply_boustrophedonic_bitmap", &grib_accessor_class_data_apply_boustrophedonic_bitmap},
#line 115 "accessor_class_list.gperf"
#line 116 "accessor_class_list.gperf"
{"g2step_range", &grib_accessor_class_g2step_range},
{""},
#line 111 "accessor_class_list.gperf"
#line 112 "accessor_class_list.gperf"
{"g2grid", &grib_accessor_class_g2grid},
#line 202 "accessor_class_list.gperf"
#line 203 "accessor_class_list.gperf"
{"sum", &grib_accessor_class_sum},
#line 208 "accessor_class_list.gperf"
#line 209 "accessor_class_list.gperf"
{"to_string", &grib_accessor_class_to_string},
{""}, {""},
#line 136 "accessor_class_list.gperf"
#line 137 "accessor_class_list.gperf"
{"iterator", &grib_accessor_class_iterator},
#line 170 "accessor_class_list.gperf"
#line 171 "accessor_class_list.gperf"
{"padding", &grib_accessor_class_padding},
{""}, {""}, {""}, {""},
#line 67 "accessor_class_list.gperf"
{"data_g2shsimple_packing", &grib_accessor_class_data_g2shsimple_packing},
#line 138 "accessor_class_list.gperf"
#line 139 "accessor_class_list.gperf"
{"julian_day", &grib_accessor_class_julian_day},
#line 137 "accessor_class_list.gperf"
#line 138 "accessor_class_list.gperf"
{"julian_date", &grib_accessor_class_julian_date},
#line 221 "accessor_class_list.gperf"
#line 222 "accessor_class_list.gperf"
{"unsigned", &grib_accessor_class_unsigned},
#line 171 "accessor_class_list.gperf"
#line 172 "accessor_class_list.gperf"
{"padto", &grib_accessor_class_padto},
#line 105 "accessor_class_list.gperf"
#line 106 "accessor_class_list.gperf"
{"g2_eps", &grib_accessor_class_g2_eps},
#line 54 "accessor_class_list.gperf"
{"data_dummy_field", &grib_accessor_class_data_dummy_field},
{""},
#line 158 "accessor_class_list.gperf"
#line 159 "accessor_class_list.gperf"
{"non_alpha", &grib_accessor_class_non_alpha},
#line 218 "accessor_class_list.gperf"
#line 219 "accessor_class_list.gperf"
{"uint8", &grib_accessor_class_uint8},
{""},
#line 200 "accessor_class_list.gperf"
#line 201 "accessor_class_list.gperf"
{"step_human_readable", &grib_accessor_class_step_human_readable},
{""}, {""},
#line 73 "accessor_class_list.gperf"
{"data_run_length_packing", &grib_accessor_class_data_run_length_packing},
{""},
#line 68 "accessor_class_list.gperf"
{"data_g2simple_packing", &grib_accessor_class_data_g2simple_packing},
#line 65 "accessor_class_list.gperf"
{"data_g2complex_packing", &grib_accessor_class_data_g2complex_packing},
#line 214 "accessor_class_list.gperf"
#line 215 "accessor_class_list.gperf"
{"uint32", &grib_accessor_class_uint32},
{""},
#line 103 "accessor_class_list.gperf"
#line 104 "accessor_class_list.gperf"
{"g2_aerosol", &grib_accessor_class_g2_aerosol},
#line 112 "accessor_class_list.gperf"
#line 113 "accessor_class_list.gperf"
{"g2latlon", &grib_accessor_class_g2latlon},
#line 16 "accessor_class_list.gperf"
{"bit", &grib_accessor_class_bit},
#line 18 "accessor_class_list.gperf"
{"bits", &grib_accessor_class_bits},
#line 216 "accessor_class_list.gperf"
#line 217 "accessor_class_list.gperf"
{"uint64", &grib_accessor_class_uint64},
{""}, {""},
#line 66 "accessor_class_list.gperf"
{"data_g2secondary_bitmap", &grib_accessor_class_data_g2secondary_bitmap},
#line 64 "accessor_class_list.gperf"
{"data_g2bifourier_packing", &grib_accessor_class_data_g2bifourier_packing},
#line 83 "accessor_class_list.gperf"
#line 84 "accessor_class_list.gperf"
{"element", &grib_accessor_class_element},
#line 33 "accessor_class_list.gperf"
{"bytes", &grib_accessor_class_bytes},
{""},
#line 17 "accessor_class_list.gperf"
{"bitmap", &grib_accessor_class_bitmap},
#line 222 "accessor_class_list.gperf"
#line 223 "accessor_class_list.gperf"
{"unsigned_bits", &grib_accessor_class_unsigned_bits},
{""},
#line 69 "accessor_class_list.gperf"
{"data_g2simple_packing_with_preprocessing", &grib_accessor_class_data_g2simple_packing_with_preprocessing},
#line 215 "accessor_class_list.gperf"
#line 216 "accessor_class_list.gperf"
{"uint32_little_endian", &grib_accessor_class_uint32_little_endian},
{""},
#line 142 "accessor_class_list.gperf"
#line 143 "accessor_class_list.gperf"
{"latitudes", &grib_accessor_class_latitudes},
#line 160 "accessor_class_list.gperf"
#line 161 "accessor_class_list.gperf"
{"number_of_points", &grib_accessor_class_number_of_points},
{""},
#line 19 "accessor_class_list.gperf"
{"bits_per_value", &grib_accessor_class_bits_per_value},
#line 217 "accessor_class_list.gperf"
#line 218 "accessor_class_list.gperf"
{"uint64_little_endian", &grib_accessor_class_uint64_little_endian},
{""}, {""},
#line 219 "accessor_class_list.gperf"
#line 220 "accessor_class_list.gperf"
{"unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors},
#line 12 "accessor_class_list.gperf"
{"apply_operators", &grib_accessor_class_apply_operators},
#line 21 "accessor_class_list.gperf"
{"box", &grib_accessor_class_box},
#line 161 "accessor_class_list.gperf"
#line 162 "accessor_class_list.gperf"
{"number_of_points_gaussian", &grib_accessor_class_number_of_points_gaussian},
{""}, {""}, {""}, {""},
#line 174 "accessor_class_list.gperf"
#line 175 "accessor_class_list.gperf"
{"position", &grib_accessor_class_position},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 121 "accessor_class_list.gperf"
#line 122 "accessor_class_list.gperf"
{"global_gaussian", &grib_accessor_class_global_gaussian},
{""},
#line 188 "accessor_class_list.gperf"
#line 189 "accessor_class_list.gperf"
{"sexagesimal2decimal", &grib_accessor_class_sexagesimal2decimal},
#line 141 "accessor_class_list.gperf"
#line 142 "accessor_class_list.gperf"
{"laplacian", &grib_accessor_class_laplacian},
{""}, {""}, {""},
#line 191 "accessor_class_list.gperf"
#line 192 "accessor_class_list.gperf"
{"simple_packing_error", &grib_accessor_class_simple_packing_error},
{""},
#line 147 "accessor_class_list.gperf"
#line 148 "accessor_class_list.gperf"
{"long", &grib_accessor_class_long},
#line 180 "accessor_class_list.gperf"
#line 181 "accessor_class_list.gperf"
{"scale", &grib_accessor_class_scale},
#line 82 "accessor_class_list.gperf"
#line 83 "accessor_class_list.gperf"
{"double", &grib_accessor_class_double},
{""}, {""},
#line 81 "accessor_class_list.gperf"
#line 82 "accessor_class_list.gperf"
{"divdouble", &grib_accessor_class_divdouble},
{""}, {""}, {""},
#line 106 "accessor_class_list.gperf"
#line 107 "accessor_class_list.gperf"
{"g2_mars_labeling", &grib_accessor_class_g2_mars_labeling},
{""}, {""},
#line 22 "accessor_class_list.gperf"
{"budgdate", &grib_accessor_class_budgdate},
{""}, {""}, {""},
#line 211 "accessor_class_list.gperf"
#line 212 "accessor_class_list.gperf"
{"trim", &grib_accessor_class_trim},
#line 52 "accessor_class_list.gperf"
{"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing},
{""},
#line 176 "accessor_class_list.gperf"
#line 177 "accessor_class_list.gperf"
{"raw", &grib_accessor_class_raw},
{""}, {""}, {""}, {""}, {""}, {""},
#line 24 "accessor_class_list.gperf"
{"bufr_data_element", &grib_accessor_class_bufr_data_element},
#line 209 "accessor_class_list.gperf"
#line 210 "accessor_class_list.gperf"
{"transient", &grib_accessor_class_transient},
#line 15 "accessor_class_list.gperf"
{"assert", &grib_accessor_class_assert},
@ -363,16 +365,16 @@ static const struct accessor_class_hash classes[] =
#line 23 "accessor_class_list.gperf"
{"bufr_data_array", &grib_accessor_class_bufr_data_array},
{""},
#line 206 "accessor_class_list.gperf"
#line 207 "accessor_class_list.gperf"
{"to_double", &grib_accessor_class_to_double},
#line 210 "accessor_class_list.gperf"
#line 211 "accessor_class_list.gperf"
{"transient_darray", &grib_accessor_class_transient_darray},
{""},
#line 32 "accessor_class_list.gperf"
{"bufrdc_expanded_descriptors", &grib_accessor_class_bufrdc_expanded_descriptors},
#line 31 "accessor_class_list.gperf"
{"bufr_string_values", &grib_accessor_class_bufr_string_values},
#line 228 "accessor_class_list.gperf"
#line 229 "accessor_class_list.gperf"
{"when", &grib_accessor_class_when},
{""}, {""},
#line 20 "accessor_class_list.gperf"
@ -387,122 +389,122 @@ static const struct accessor_class_hash classes[] =
{"concept", &grib_accessor_class_concept},
#line 43 "accessor_class_list.gperf"
{"constant", &grib_accessor_class_constant},
#line 177 "accessor_class_list.gperf"
#line 178 "accessor_class_list.gperf"
{"rdbtime_guess_date", &grib_accessor_class_rdbtime_guess_date},
{""},
#line 91 "accessor_class_list.gperf"
#line 92 "accessor_class_list.gperf"
{"g1area", &grib_accessor_class_g1area},
#line 165 "accessor_class_list.gperf"
#line 166 "accessor_class_list.gperf"
{"octet_number", &grib_accessor_class_octet_number},
#line 225 "accessor_class_list.gperf"
#line 226 "accessor_class_list.gperf"
{"values", &grib_accessor_class_values},
#line 93 "accessor_class_list.gperf"
#line 94 "accessor_class_list.gperf"
{"g1date", &grib_accessor_class_g1date},
#line 187 "accessor_class_list.gperf"
#line 188 "accessor_class_list.gperf"
{"select_step_template", &grib_accessor_class_select_step_template},
{""},
#line 173 "accessor_class_list.gperf"
#line 174 "accessor_class_list.gperf"
{"padtomultiple", &grib_accessor_class_padtomultiple},
{""}, {""},
#line 116 "accessor_class_list.gperf"
#line 117 "accessor_class_list.gperf"
{"gaussian_grid_name", &grib_accessor_class_gaussian_grid_name},
#line 179 "accessor_class_list.gperf"
#line 180 "accessor_class_list.gperf"
{"round", &grib_accessor_class_round},
{""},
#line 92 "accessor_class_list.gperf"
#line 93 "accessor_class_list.gperf"
{"g1bitmap", &grib_accessor_class_g1bitmap},
{""}, {""},
#line 122 "accessor_class_list.gperf"
{"group", &grib_accessor_class_group},
#line 123 "accessor_class_list.gperf"
{"group", &grib_accessor_class_group},
#line 124 "accessor_class_list.gperf"
{"gts_header", &grib_accessor_class_gts_header},
{""},
#line 89 "accessor_class_list.gperf"
#line 90 "accessor_class_list.gperf"
{"g1_message_length", &grib_accessor_class_g1_message_length},
#line 223 "accessor_class_list.gperf"
#line 224 "accessor_class_list.gperf"
{"validity_date", &grib_accessor_class_validity_date},
#line 140 "accessor_class_list.gperf"
#line 141 "accessor_class_list.gperf"
{"label", &grib_accessor_class_label},
#line 101 "accessor_class_list.gperf"
#line 102 "accessor_class_list.gperf"
{"g1step_range", &grib_accessor_class_g1step_range},
{""},
#line 126 "accessor_class_list.gperf"
#line 127 "accessor_class_list.gperf"
{"ibmfloat", &grib_accessor_class_ibmfloat},
{""},
#line 175 "accessor_class_list.gperf"
#line 176 "accessor_class_list.gperf"
{"proj_string", &grib_accessor_class_proj_string},
#line 150 "accessor_class_list.gperf"
#line 151 "accessor_class_list.gperf"
{"lookup", &grib_accessor_class_lookup},
{""}, {""}, {""}, {""},
#line 196 "accessor_class_list.gperf"
#line 197 "accessor_class_list.gperf"
{"spectral_truncation", &grib_accessor_class_spectral_truncation},
#line 47 "accessor_class_list.gperf"
{"data_2order_packing", &grib_accessor_class_data_2order_packing},
{""},
#line 61 "accessor_class_list.gperf"
{"data_g1shsimple_packing", &grib_accessor_class_data_g1shsimple_packing},
#line 224 "accessor_class_list.gperf"
#line 225 "accessor_class_list.gperf"
{"validity_time", &grib_accessor_class_validity_time},
#line 197 "accessor_class_list.gperf"
#line 198 "accessor_class_list.gperf"
{"sprintf", &grib_accessor_class_sprintf},
#line 159 "accessor_class_list.gperf"
#line 160 "accessor_class_list.gperf"
{"number_of_coded_values", &grib_accessor_class_number_of_coded_values},
#line 108 "accessor_class_list.gperf"
#line 109 "accessor_class_list.gperf"
{"g2bitmap_present", &grib_accessor_class_g2bitmap_present},
{""},
#line 90 "accessor_class_list.gperf"
#line 91 "accessor_class_list.gperf"
{"g1_section4_length", &grib_accessor_class_g1_section4_length},
{""}, {""},
#line 227 "accessor_class_list.gperf"
#line 228 "accessor_class_list.gperf"
{"vector", &grib_accessor_class_vector},
#line 166 "accessor_class_list.gperf"
#line 167 "accessor_class_list.gperf"
{"offset_file", &grib_accessor_class_offset_file},
#line 75 "accessor_class_list.gperf"
#line 76 "accessor_class_list.gperf"
{"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked},
#line 86 "accessor_class_list.gperf"
#line 87 "accessor_class_list.gperf"
{"forward", &grib_accessor_class_forward},
{""},
#line 62 "accessor_class_list.gperf"
{"data_g1simple_packing", &grib_accessor_class_data_g1simple_packing},
#line 55 "accessor_class_list.gperf"
{"data_g1complex_packing", &grib_accessor_class_data_g1complex_packing},
#line 76 "accessor_class_list.gperf"
#line 77 "accessor_class_list.gperf"
{"data_shsimple_packing", &grib_accessor_class_data_shsimple_packing},
{""}, {""},
#line 149 "accessor_class_list.gperf"
#line 150 "accessor_class_list.gperf"
{"longitudes", &grib_accessor_class_longitudes},
{""},
#line 203 "accessor_class_list.gperf"
#line 204 "accessor_class_list.gperf"
{"suppressed", &grib_accessor_class_suppressed},
{""}, {""}, {""},
#line 60 "accessor_class_list.gperf"
{"data_g1secondary_bitmap", &grib_accessor_class_data_g1secondary_bitmap},
{""}, {""},
#line 130 "accessor_class_list.gperf"
#line 131 "accessor_class_list.gperf"
{"int16_little_endian", &grib_accessor_class_int16_little_endian},
{""},
#line 127 "accessor_class_list.gperf"
#line 128 "accessor_class_list.gperf"
{"ieeefloat", &grib_accessor_class_ieeefloat},
{""},
#line 153 "accessor_class_list.gperf"
#line 154 "accessor_class_list.gperf"
{"md5", &grib_accessor_class_md5},
#line 95 "accessor_class_list.gperf"
#line 96 "accessor_class_list.gperf"
{"g1end_of_interval_monthly", &grib_accessor_class_g1end_of_interval_monthly},
#line 37 "accessor_class_list.gperf"
{"closest_date", &grib_accessor_class_closest_date},
{""}, {""},
#line 58 "accessor_class_list.gperf"
{"data_g1second_order_general_packing", &grib_accessor_class_data_g1second_order_general_packing},
#line 146 "accessor_class_list.gperf"
#line 147 "accessor_class_list.gperf"
{"local_definition", &grib_accessor_class_local_definition},
{""},
#line 59 "accessor_class_list.gperf"
{"data_g1second_order_row_by_row_packing", &grib_accessor_class_data_g1second_order_row_by_row_packing},
#line 134 "accessor_class_list.gperf"
#line 135 "accessor_class_list.gperf"
{"int64_little_endian", &grib_accessor_class_int64_little_endian},
#line 84 "accessor_class_list.gperf"
#line 85 "accessor_class_list.gperf"
{"evaluate", &grib_accessor_class_evaluate},
#line 154 "accessor_class_list.gperf"
#line 155 "accessor_class_list.gperf"
{"message", &grib_accessor_class_message},
#line 56 "accessor_class_list.gperf"
{"data_g1second_order_constant_width_packing", &grib_accessor_class_data_g1second_order_constant_width_packing},
@ -511,57 +513,57 @@ static const struct accessor_class_hash classes[] =
{"data_g1second_order_general_extended_packing", &grib_accessor_class_data_g1second_order_general_extended_packing},
#line 25 "accessor_class_list.gperf"
{"bufr_elements_table", &grib_accessor_class_bufr_elements_table},
#line 162 "accessor_class_list.gperf"
#line 163 "accessor_class_list.gperf"
{"number_of_values", &grib_accessor_class_number_of_values},
#line 152 "accessor_class_list.gperf"
#line 153 "accessor_class_list.gperf"
{"mars_step", &grib_accessor_class_mars_step},
{""},
#line 212 "accessor_class_list.gperf"
#line 213 "accessor_class_list.gperf"
{"uint16", &grib_accessor_class_uint16},
#line 193 "accessor_class_list.gperf"
#line 194 "accessor_class_list.gperf"
{"smart_table", &grib_accessor_class_smart_table},
#line 39 "accessor_class_list.gperf"
{"codetable", &grib_accessor_class_codetable},
#line 151 "accessor_class_list.gperf"
#line 152 "accessor_class_list.gperf"
{"mars_param", &grib_accessor_class_mars_param},
{""}, {""},
#line 132 "accessor_class_list.gperf"
#line 133 "accessor_class_list.gperf"
{"int32_little_endian", &grib_accessor_class_int32_little_endian},
#line 172 "accessor_class_list.gperf"
#line 173 "accessor_class_list.gperf"
{"padtoeven", &grib_accessor_class_padtoeven},
#line 194 "accessor_class_list.gperf"
#line 195 "accessor_class_list.gperf"
{"smart_table_column", &grib_accessor_class_smart_table_column},
{""}, {""},
#line 40 "accessor_class_list.gperf"
{"codetable_title", &grib_accessor_class_codetable_title},
{""}, {""},
#line 163 "accessor_class_list.gperf"
#line 164 "accessor_class_list.gperf"
{"number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing},
{""}, {""}, {""},
#line 213 "accessor_class_list.gperf"
#line 214 "accessor_class_list.gperf"
{"uint16_little_endian", &grib_accessor_class_uint16_little_endian},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 125 "accessor_class_list.gperf"
#line 126 "accessor_class_list.gperf"
{"headers_only", &grib_accessor_class_headers_only},
{""}, {""},
#line 46 "accessor_class_list.gperf"
{"count_total", &grib_accessor_class_count_total},
{""}, {""}, {""}, {""}, {""},
#line 155 "accessor_class_list.gperf"
#line 156 "accessor_class_list.gperf"
{"message_copy", &grib_accessor_class_message_copy},
#line 167 "accessor_class_list.gperf"
#line 168 "accessor_class_list.gperf"
{"offset_values", &grib_accessor_class_offset_values},
#line 226 "accessor_class_list.gperf"
#line 227 "accessor_class_list.gperf"
{"variable", &grib_accessor_class_variable},
{""}, {""},
#line 28 "accessor_class_list.gperf"
{"bufr_extract_subsets", &grib_accessor_class_bufr_extract_subsets},
{""},
#line 168 "accessor_class_list.gperf"
#line 169 "accessor_class_list.gperf"
{"pack_bufr_values", &grib_accessor_class_pack_bufr_values},
#line 148 "accessor_class_list.gperf"
#line 149 "accessor_class_list.gperf"
{"long_vector", &grib_accessor_class_long_vector},
#line 156 "accessor_class_list.gperf"
#line 157 "accessor_class_list.gperf"
{"missing", &grib_accessor_class_missing},
#line 26 "accessor_class_list.gperf"
{"bufr_extract_area_subsets", &grib_accessor_class_bufr_extract_area_subsets},
@ -572,30 +574,30 @@ static const struct accessor_class_hash classes[] =
#line 27 "accessor_class_list.gperf"
{"bufr_extract_datetime_subsets", &grib_accessor_class_bufr_extract_datetime_subsets},
{""},
#line 145 "accessor_class_list.gperf"
#line 146 "accessor_class_list.gperf"
{"library_version", &grib_accessor_class_library_version},
{""}, {""}, {""},
#line 143 "accessor_class_list.gperf"
#line 144 "accessor_class_list.gperf"
{"latlon_increment", &grib_accessor_class_latlon_increment},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 74 "accessor_class_list.gperf"
#line 75 "accessor_class_list.gperf"
{"data_sh_packed", &grib_accessor_class_data_sh_packed},
{""}, {""},
#line 181 "accessor_class_list.gperf"
#line 182 "accessor_class_list.gperf"
{"scale_values", &grib_accessor_class_scale_values},
{""},
#line 113 "accessor_class_list.gperf"
#line 114 "accessor_class_list.gperf"
{"g2level", &grib_accessor_class_g2level},
{""}, {""}, {""}, {""},
#line 144 "accessor_class_list.gperf"
#line 145 "accessor_class_list.gperf"
{"latlonvalues", &grib_accessor_class_latlonvalues},
#line 41 "accessor_class_list.gperf"
{"codetable_units", &grib_accessor_class_codetable_units},
{""}, {""},
#line 139 "accessor_class_list.gperf"
#line 140 "accessor_class_list.gperf"
{"ksec1expver", &grib_accessor_class_ksec1expver},
#line 124 "accessor_class_list.gperf"
#line 125 "accessor_class_list.gperf"
{"hash_array", &grib_accessor_class_hash_array},
{""}, {""},
#line 35 "accessor_class_list.gperf"
@ -604,7 +606,7 @@ static const struct accessor_class_hash classes[] =
#line 34 "accessor_class_list.gperf"
{"change_alternative_row_scanning", &grib_accessor_class_change_alternative_row_scanning},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 78 "accessor_class_list.gperf"
#line 79 "accessor_class_list.gperf"
{"decimal_precision", &grib_accessor_class_decimal_precision},
{""}, {""}, {""}, {""}, {""}, {""},
#line 44 "accessor_class_list.gperf"
@ -613,25 +615,25 @@ static const struct accessor_class_hash classes[] =
#line 38 "accessor_class_list.gperf"
{"codeflag", &grib_accessor_class_codeflag},
{""}, {""},
#line 164 "accessor_class_list.gperf"
#line 165 "accessor_class_list.gperf"
{"octahedral_gaussian", &grib_accessor_class_octahedral_gaussian},
{""},
#line 220 "accessor_class_list.gperf"
#line 221 "accessor_class_list.gperf"
{"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values},
{""}, {""}, {""}, {""}, {""},
#line 98 "accessor_class_list.gperf"
#line 99 "accessor_class_list.gperf"
{"g1monthlydate", &grib_accessor_class_g1monthlydate},
{""}, {""}, {""},
#line 96 "accessor_class_list.gperf"
#line 97 "accessor_class_list.gperf"
{"g1fcperiod", &grib_accessor_class_g1fcperiod},
{""}, {""}, {""}, {""}, {""},
#line 11 "accessor_class_list.gperf"
{"abstract_vector", &grib_accessor_class_abstract_vector},
{""}, {""},
#line 88 "accessor_class_list.gperf"
#line 89 "accessor_class_list.gperf"
{"g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag},
{""}, {""},
#line 128 "accessor_class_list.gperf"
#line 129 "accessor_class_list.gperf"
{"ifs_param", &grib_accessor_class_ifs_param},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@ -642,7 +644,7 @@ static const struct accessor_class_hash classes[] =
#line 10 "accessor_class_list.gperf"
{"abstract_long_vector", &grib_accessor_class_abstract_long_vector},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 94 "accessor_class_list.gperf"
#line 95 "accessor_class_list.gperf"
{"g1day_of_the_year_date", &grib_accessor_class_g1day_of_the_year_date},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@ -653,20 +655,20 @@ static const struct accessor_class_hash classes[] =
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""},
#line 87 "accessor_class_list.gperf"
#line 88 "accessor_class_list.gperf"
{"from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
#line 36 "accessor_class_list.gperf"
{"check_internal_version", &grib_accessor_class_check_internal_version},
{""},
#line 178 "accessor_class_list.gperf"
#line 179 "accessor_class_list.gperf"
{"reference_value_error", &grib_accessor_class_reference_value_error},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""},
#line 102 "accessor_class_list.gperf"
#line 103 "accessor_class_list.gperf"
{"g1verificationdate", &grib_accessor_class_g1verificationdate},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@ -674,7 +676,7 @@ static const struct accessor_class_hash classes[] =
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""},
#line 104 "accessor_class_list.gperf"
#line 105 "accessor_class_list.gperf"
{"g2_chemical", &grib_accessor_class_g2_chemical},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@ -684,9 +686,9 @@ static const struct accessor_class_hash classes[] =
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""},
#line 100 "accessor_class_list.gperf"
#line 101 "accessor_class_list.gperf"
{"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple},
#line 99 "accessor_class_list.gperf"
#line 100 "accessor_class_list.gperf"
{"g1number_of_coded_values_sh_complex", &grib_accessor_class_g1number_of_coded_values_sh_complex},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@ -700,7 +702,7 @@ static const struct accessor_class_hash classes[] =
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 97 "accessor_class_list.gperf"
#line 98 "accessor_class_list.gperf"
{"g1forecastmonth", &grib_accessor_class_g1forecastmonth}
};
@ -715,8 +717,10 @@ grib_accessor_classes_hash (const char *str, size_t len)
Assert( len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH );
Assert( key <= MAX_HASH_VALUE );
s = classes[key].name;
Assert( *str == *s && strcmp (str + 1, s + 1)==0 );
Assert( *str == *s && strcmp(str + 1, s + 1)==0 );
}
#endif
return &classes[key];
}

View File

@ -62,6 +62,7 @@
{ "data_jpeg2000_packing", &grib_accessor_class_data_jpeg2000_packing, },
{ "data_png_packing", &grib_accessor_class_data_png_packing, },
{ "data_raw_packing", &grib_accessor_class_data_raw_packing, },
{ "data_run_length_packing", &grib_accessor_class_data_run_length_packing, },
{ "data_secondary_bitmap", &grib_accessor_class_data_secondary_bitmap, },
{ "data_sh_packed", &grib_accessor_class_data_sh_packed, },
{ "data_sh_unpacked", &grib_accessor_class_data_sh_unpacked, },

View File

@ -63,6 +63,7 @@ data_g2simple_packing_with_preprocessing, &grib_accessor_class_data_g2simple_pac
data_jpeg2000_packing, &grib_accessor_class_data_jpeg2000_packing
data_png_packing, &grib_accessor_class_data_png_packing
data_raw_packing, &grib_accessor_class_data_raw_packing
data_run_length_packing, &grib_accessor_class_data_run_length_packing
data_secondary_bitmap, &grib_accessor_class_data_secondary_bitmap
data_sh_packed, &grib_accessor_class_data_sh_packed
data_sh_unpacked, &grib_accessor_class_data_sh_unpacked