From 9070952b84fdd18351a28383be5caf148d2ac492 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Sun, 20 Aug 2023 14:43:09 +0100 Subject: [PATCH] ECC-1670: GRIB: Add new key 'setPackingType' --- definitions/grib1/section.4.def | 1 + definitions/grib2/section.7.def | 1 + src/CMakeLists.txt | 1 + src/grib_accessor_class.h | 1 + src/grib_accessor_class_packing_type.cc | 167 +++++++ src/grib_accessor_classes_hash.cc | 608 ++++++++++++------------ src/grib_accessor_factory.h | 1 + src/grib_accessor_factory_hash_list | 1 + tests/grib_change_packing.sh | 5 + 9 files changed, 478 insertions(+), 308 deletions(-) create mode 100644 src/grib_accessor_class_packing_type.cc diff --git a/definitions/grib1/section.4.def b/definitions/grib1/section.4.def index ef6428e3f..80f602a7e 100644 --- a/definitions/grib1/section.4.def +++ b/definitions/grib1/section.4.def @@ -179,6 +179,7 @@ alias setDecimalPrecision=changeDecimalPrecision; meta bitsPerValueAndRepack bits_per_value(values,bitsPerValue) : edition_specific; alias setBitsPerValue=bitsPerValueAndRepack; +meta setPackingType packing_type(values,packingType) : edition_specific; meta scaleValuesBy scale_values(values,missingValue) : edition_specific; meta offsetValuesBy offset_values(values,missingValue) : edition_specific; diff --git a/definitions/grib2/section.7.def b/definitions/grib2/section.7.def index 5e4280475..f6d947674 100644 --- a/definitions/grib2/section.7.def +++ b/definitions/grib2/section.7.def @@ -21,6 +21,7 @@ meta decimalPrecision decimal_precision(bitsPerValue,decimalScaleFactor,changing alias setDecimalPrecision=changeDecimalPrecision; meta setBitsPerValue bits_per_value(values,bitsPerValue) : edition_specific; +meta setPackingType packing_type(values, packingType) : edition_specific; meta getNumberOfValues size(values) : edition_specific,dump ; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 789e332e4..ac472b2de 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -152,6 +152,7 @@ list( APPEND eccodes_src_files grib_accessor_class_padtoeven.cc grib_accessor_class_padtomultiple.cc grib_accessor_class_section_padding.cc + grib_accessor_class_packing_type.cc grib_accessor_class_section_pointer.cc grib_accessor_class_position.cc grib_accessor_class_signed.cc diff --git a/src/grib_accessor_class.h b/src/grib_accessor_class.h index 616f498e4..9e67cc9a7 100644 --- a/src/grib_accessor_class.h +++ b/src/grib_accessor_class.h @@ -148,6 +148,7 @@ extern grib_accessor_class* grib_accessor_class_octet_number; extern grib_accessor_class* grib_accessor_class_offset_file; extern grib_accessor_class* grib_accessor_class_offset_values; extern grib_accessor_class* grib_accessor_class_pack_bufr_values; +extern grib_accessor_class* grib_accessor_class_packing_type; extern grib_accessor_class* grib_accessor_class_pad; extern grib_accessor_class* grib_accessor_class_padding; extern grib_accessor_class* grib_accessor_class_padto; diff --git a/src/grib_accessor_class_packing_type.cc b/src/grib_accessor_class_packing_type.cc new file mode 100644 index 000000000..a9a4a2deb --- /dev/null +++ b/src/grib_accessor_class_packing_type.cc @@ -0,0 +1,167 @@ +/* + * (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_gen + IMPLEMENTS = unpack_string;pack_string + IMPLEMENTS = string_length + IMPLEMENTS = get_native_type + IMPLEMENTS = init + MEMBERS = const char* values + MEMBERS = const char* packing_type + 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 get_native_type(grib_accessor*); +static int pack_string(grib_accessor*, const char*, size_t* len); +static int unpack_string(grib_accessor*, char*, size_t* len); +static size_t string_length(grib_accessor*); +static void init(grib_accessor*, const long, grib_arguments*); + +typedef struct grib_accessor_packing_type +{ + grib_accessor att; + /* Members defined in gen */ + /* Members defined in packing_type */ + const char* values; + const char* packing_type; +} grib_accessor_packing_type; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_packing_type = { + &grib_accessor_class_gen, /* super */ + "packing_type", /* name */ + sizeof(grib_accessor_packing_type), /* size */ + 0, /* inited */ + 0, /* init_class */ + &init, /* init */ + 0, /* post_init */ + 0, /* destroy */ + 0, /* dump */ + 0, /* next_offset */ + &string_length, /* get length of string */ + 0, /* get number of values */ + 0, /* get number of bytes */ + 0, /* get offset to bytes */ + &get_native_type, /* get native type */ + 0, /* get sub_section */ + 0, /* pack_missing */ + 0, /* is_missing */ + 0, /* pack_long */ + 0, /* unpack_long */ + 0, /* pack_double */ + 0, /* pack_float */ + 0, /* unpack_double */ + 0, /* unpack_float */ + &pack_string, /* pack_string */ + &unpack_string, /* unpack_string */ + 0, /* pack_string_array */ + 0, /* unpack_string_array */ + 0, /* pack_bytes */ + 0, /* unpack_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 (double) */ + 0, /* unpack only ith value (float) */ + 0, /* unpack a given set of elements (double) */ + 0, /* unpack a given set of elements (float) */ + 0, /* unpack a subarray */ + 0, /* clear */ + 0, /* clone accessor */ +}; + + +grib_accessor_class* grib_accessor_class_packing_type = &_grib_accessor_class_packing_type; + +/* END_CLASS_IMP */ + +static void init(grib_accessor* a, const long l, grib_arguments* args) +{ + int n = 0; + grib_accessor_packing_type* self = (grib_accessor_packing_type*)a; + self->values = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); + self->packing_type = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); + a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; + a->length = 0; +} + +static size_t string_length(grib_accessor* a) +{ + return 1024; +} + +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_STRING; +} + +static int pack_string(grib_accessor*a, const char* sval, size_t* len) +{ + grib_accessor_packing_type* self = (grib_accessor_packing_type*)a; + grib_handle* h = grib_handle_of_accessor(a); + double* values = NULL; + grib_context* c = a->context; + size_t size = 0; + int err = 0; + + if ((err = grib_get_size(h, self->values, &size)) != GRIB_SUCCESS) + return err; + + values = (double*)grib_context_malloc(c, size * sizeof(double)); + if (!values) return GRIB_OUT_OF_MEMORY; + + if ((err = grib_get_double_array_internal(h, self->values, values, &size)) != GRIB_SUCCESS) { + grib_context_free(c, values); + return err; + } + + if ((err = grib_set_string_internal(h, self->packing_type, sval, len)) != GRIB_SUCCESS) { + grib_context_free(c, values); + return err; + } + + if ((err = grib_set_double_array_internal(h, self->values, values, size)) != GRIB_SUCCESS) { + grib_context_free(c, values); + return err; + } + + grib_context_free(c, values); + return GRIB_SUCCESS; +} + +static int unpack_string(grib_accessor* a, char* val, size_t* len) +{ + grib_accessor_packing_type* self = (grib_accessor_packing_type*)a; + grib_handle* h = grib_handle_of_accessor(a); + + return grib_get_string(h, self->packing_type, val, len); +} diff --git a/src/grib_accessor_classes_hash.cc b/src/grib_accessor_classes_hash.cc index f25aa0210..cd45c0866 100644 --- a/src/grib_accessor_classes_hash.cc +++ b/src/grib_accessor_classes_hash.cc @@ -37,7 +37,7 @@ #line 6 "accessor_class_list.gperf" struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; -#define TOTAL_KEYWORDS 208 +#define TOTAL_KEYWORDS 209 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 44 #define MIN_HASH_VALUE 1 @@ -59,15 +59,15 @@ static unsigned int grib_accessor_classes_get_id (const char *str, size_t len) 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 0, 621, 621, 621, 621, 621, 621, 621, - 621, 621, 621, 621, 621, 621, 621, 621, 2, 144, - 14, 10, 4, 621, 3, 621, 0, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 2, 123, + 14, 12, 1, 621, 17, 621, 0, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, - 621, 621, 621, 621, 621, 0, 621, 0, 82, 111, - 0, 0, 102, 29, 186, 1, 3, 2, 76, 193, - 13, 57, 20, 621, 128, 1, 42, 62, 201, 2, - 18, 21, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 0, 621, 0, 74, 117, + 0, 0, 97, 29, 162, 1, 18, 3, 91, 207, + 13, 60, 20, 621, 129, 1, 42, 71, 153, 5, + 18, 27, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, @@ -117,14 +117,14 @@ static const struct accessor_class_hash classes[] = #line 9 "accessor_class_list.gperf" {" "}, {""}, {""}, {""}, {""}, -#line 181 "accessor_class_list.gperf" +#line 182 "accessor_class_list.gperf" {"size", &grib_accessor_class_size}, #line 12 "accessor_class_list.gperf" {"ascii", &grib_accessor_class_ascii}, -#line 178 "accessor_class_list.gperf" +#line 179 "accessor_class_list.gperf" {"signed", &grib_accessor_class_signed}, {""}, {""}, {""}, {""}, {""}, -#line 179 "accessor_class_list.gperf" +#line 180 "accessor_class_list.gperf" {"signed_bits", &grib_accessor_class_signed_bits}, {""}, #line 67 "accessor_class_list.gperf" @@ -137,27 +137,26 @@ static const struct accessor_class_hash classes[] = {"data_simple_packing", &grib_accessor_class_data_simple_packing}, #line 69 "accessor_class_list.gperf" {"data_secondary_bitmap", &grib_accessor_class_data_secondary_bitmap}, -#line 172 "accessor_class_list.gperf" +#line 173 "accessor_class_list.gperf" {"section", &grib_accessor_class_section}, -#line 158 "accessor_class_list.gperf" +#line 159 "accessor_class_list.gperf" {"pad", &grib_accessor_class_pad}, -#line 184 "accessor_class_list.gperf" +#line 185 "accessor_class_list.gperf" {"spd", &grib_accessor_class_spd}, #line 75 "accessor_class_list.gperf" {"dictionary", &grib_accessor_class_dictionary}, - {""}, -#line 76 "accessor_class_list.gperf" - {"dirty", &grib_accessor_class_dirty}, - {""}, + {""}, {""}, {""}, #line 66 "accessor_class_list.gperf" {"data_png_packing", &grib_accessor_class_data_png_packing}, -#line 174 "accessor_class_list.gperf" - {"section_padding", &grib_accessor_class_section_padding}, #line 175 "accessor_class_list.gperf" + {"section_padding", &grib_accessor_class_section_padding}, +#line 176 "accessor_class_list.gperf" {"section_pointer", &grib_accessor_class_section_pointer}, #line 113 "accessor_class_list.gperf" {"gen", &grib_accessor_class_gen}, - {""}, {""}, +#line 76 "accessor_class_list.gperf" + {"dirty", &grib_accessor_class_dirty}, + {""}, #line 58 "accessor_class_list.gperf" {"data_g22order_packing", &grib_accessor_class_data_g22order_packing}, {""}, @@ -166,9 +165,9 @@ static const struct accessor_class_hash classes[] = #line 62 "accessor_class_list.gperf" {"data_g2shsimple_packing", &grib_accessor_class_data_g2shsimple_packing}, {""}, {""}, -#line 171 "accessor_class_list.gperf" +#line 172 "accessor_class_list.gperf" {"second_order_bits_per_value", &grib_accessor_class_second_order_bits_per_value}, -#line 173 "accessor_class_list.gperf" +#line 174 "accessor_class_list.gperf" {"section_length", &grib_accessor_class_section_length}, #line 65 "accessor_class_list.gperf" {"data_jpeg2000_packing", &grib_accessor_class_data_jpeg2000_packing}, @@ -178,7 +177,7 @@ static const struct accessor_class_hash classes[] = {"gds_is_present", &grib_accessor_class_gds_is_present}, #line 44 "accessor_class_list.gperf" {"data_apply_boustrophedonic", &grib_accessor_class_data_apply_boustrophedonic}, -#line 193 "accessor_class_list.gperf" +#line 194 "accessor_class_list.gperf" {"time", &grib_accessor_class_time}, #line 114 "accessor_class_list.gperf" {"getenv", &grib_accessor_class_getenv}, @@ -196,444 +195,438 @@ static const struct accessor_class_hash classes[] = {"data_g2simple_packing", &grib_accessor_class_data_g2simple_packing}, #line 60 "accessor_class_list.gperf" {"data_g2complex_packing", &grib_accessor_class_data_g2complex_packing}, -#line 159 "accessor_class_list.gperf" +#line 160 "accessor_class_list.gperf" {"padding", &grib_accessor_class_padding}, {""}, {""}, {""}, #line 108 "accessor_class_list.gperf" {"g2lon", &grib_accessor_class_g2lon}, #line 146 "accessor_class_list.gperf" {"nearest", &grib_accessor_class_nearest}, - {""}, {""}, {""}, -#line 191 "accessor_class_list.gperf" - {"sum", &grib_accessor_class_sum}, - {""}, -#line 206 "accessor_class_list.gperf" - {"uint8", &grib_accessor_class_uint8}, + {""}, {""}, {""}, {""}, {""}, {""}, #line 99 "accessor_class_list.gperf" {"g2_eps", &grib_accessor_class_g2_eps}, -#line 190 "accessor_class_list.gperf" +#line 191 "accessor_class_list.gperf" {"step_in_units", &grib_accessor_class_step_in_units}, - {""}, -#line 204 "accessor_class_list.gperf" - {"uint64", &grib_accessor_class_uint64}, - {""}, + {""}, {""}, {""}, #line 64 "accessor_class_list.gperf" {"data_g2simple_packing_with_preprocessing", &grib_accessor_class_data_g2simple_packing_with_preprocessing}, -#line 129 "accessor_class_list.gperf" - {"julian_day", &grib_accessor_class_julian_day}, -#line 128 "accessor_class_list.gperf" - {"julian_date", &grib_accessor_class_julian_date}, -#line 48 "accessor_class_list.gperf" - {"data_complex_packing", &grib_accessor_class_data_complex_packing}, -#line 49 "accessor_class_list.gperf" - {"data_dummy_field", &grib_accessor_class_data_dummy_field}, -#line 202 "accessor_class_list.gperf" - {"uint32", &grib_accessor_class_uint32}, - {""}, {""}, -#line 160 "accessor_class_list.gperf" - {"padto", &grib_accessor_class_padto}, +#line 192 "accessor_class_list.gperf" + {"sum", &grib_accessor_class_sum}, {""}, -#line 109 "accessor_class_list.gperf" - {"g2step_range", &grib_accessor_class_g2step_range}, -#line 68 "accessor_class_list.gperf" - {"data_run_length_packing", &grib_accessor_class_data_run_length_packing}, +#line 207 "accessor_class_list.gperf" + {"uint8", &grib_accessor_class_uint8}, #line 13 "accessor_class_list.gperf" {"bit", &grib_accessor_class_bit}, #line 15 "accessor_class_list.gperf" {"bits", &grib_accessor_class_bits}, - {""}, +#line 48 "accessor_class_list.gperf" + {"data_complex_packing", &grib_accessor_class_data_complex_packing}, #line 14 "accessor_class_list.gperf" {"bitmap", &grib_accessor_class_bitmap}, +#line 158 "accessor_class_list.gperf" + {"packing_type", &grib_accessor_class_packing_type}, {""}, +#line 109 "accessor_class_list.gperf" + {"g2step_range", &grib_accessor_class_g2step_range}, +#line 161 "accessor_class_list.gperf" + {"padto", &grib_accessor_class_padto}, + {""}, +#line 49 "accessor_class_list.gperf" + {"data_dummy_field", &grib_accessor_class_data_dummy_field}, + {""}, +#line 16 "accessor_class_list.gperf" + {"bits_per_value", &grib_accessor_class_bits_per_value}, +#line 203 "accessor_class_list.gperf" + {"uint32", &grib_accessor_class_uint32}, #line 103 "accessor_class_list.gperf" {"g2date", &grib_accessor_class_g2date}, {""}, #line 101 "accessor_class_list.gperf" {"g2bitmap", &grib_accessor_class_g2bitmap}, +#line 68 "accessor_class_list.gperf" + {"data_run_length_packing", &grib_accessor_class_data_run_length_packing}, +#line 205 "accessor_class_list.gperf" + {"uint64", &grib_accessor_class_uint64}, +#line 188 "accessor_class_list.gperf" + {"statistics", &grib_accessor_class_statistics}, #line 61 "accessor_class_list.gperf" {"data_g2secondary_bitmap", &grib_accessor_class_data_g2secondary_bitmap}, #line 59 "accessor_class_list.gperf" {"data_g2bifourier_packing", &grib_accessor_class_data_g2bifourier_packing}, -#line 187 "accessor_class_list.gperf" - {"statistics", &grib_accessor_class_statistics}, -#line 16 "accessor_class_list.gperf" - {"bits_per_value", &grib_accessor_class_bits_per_value}, +#line 129 "accessor_class_list.gperf" + {"julian_day", &grib_accessor_class_julian_day}, +#line 128 "accessor_class_list.gperf" + {"julian_date", &grib_accessor_class_julian_date}, {""}, #line 147 "accessor_class_list.gperf" {"non_alpha", &grib_accessor_class_non_alpha}, -#line 180 "accessor_class_list.gperf" - {"simple_packing_error", &grib_accessor_class_simple_packing_error}, - {""}, {""}, {""}, {""}, -#line 188 "accessor_class_list.gperf" + {""}, {""}, +#line 189 "accessor_class_list.gperf" {"statistics_spectral", &grib_accessor_class_statistics_spectral}, #line 112 "accessor_class_list.gperf" {"gds_not_present_bitmap", &grib_accessor_class_gds_not_present_bitmap}, - {""}, -#line 127 "accessor_class_list.gperf" - {"iterator", &grib_accessor_class_iterator}, #line 29 "accessor_class_list.gperf" {"bytes", &grib_accessor_class_bytes}, + {""}, {""}, {""}, +#line 127 "accessor_class_list.gperf" + {"iterator", &grib_accessor_class_iterator}, + {""}, #line 97 "accessor_class_list.gperf" {"g2_aerosol", &grib_accessor_class_g2_aerosol}, + {""}, {""}, +#line 181 "accessor_class_list.gperf" + {"simple_packing_error", &grib_accessor_class_simple_packing_error}, + {""}, {""}, {""}, #line 149 "accessor_class_list.gperf" {"number_of_points", &grib_accessor_class_number_of_points}, -#line 209 "accessor_class_list.gperf" - {"unsigned", &grib_accessor_class_unsigned}, - {""}, {""}, {""}, {""}, -#line 169 "accessor_class_list.gperf" - {"scale", &grib_accessor_class_scale}, #line 210 "accessor_class_list.gperf" + {"unsigned", &grib_accessor_class_unsigned}, + {""}, +#line 170 "accessor_class_list.gperf" + {"scale", &grib_accessor_class_scale}, + {""}, +#line 196 "accessor_class_list.gperf" + {"to_integer", &grib_accessor_class_to_integer}, + {""}, +#line 211 "accessor_class_list.gperf" {"unsigned_bits", &grib_accessor_class_unsigned_bits}, {""}, #line 150 "accessor_class_list.gperf" {"number_of_points_gaussian", &grib_accessor_class_number_of_points_gaussian}, + {""}, {""}, +#line 166 "accessor_class_list.gperf" + {"raw", &grib_accessor_class_raw}, +#line 190 "accessor_class_list.gperf" + {"step_human_readable", &grib_accessor_class_step_human_readable}, +#line 100 "accessor_class_list.gperf" + {"g2_mars_labeling", &grib_accessor_class_g2_mars_labeling}, +#line 47 "accessor_class_list.gperf" + {"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing}, #line 115 "accessor_class_list.gperf" {"global_gaussian", &grib_accessor_class_global_gaussian}, -#line 195 "accessor_class_list.gperf" - {"to_integer", &grib_accessor_class_to_integer}, {""}, -#line 189 "accessor_class_list.gperf" - {"step_human_readable", &grib_accessor_class_step_human_readable}, +#line 187 "accessor_class_list.gperf" + {"sprintf", &grib_accessor_class_sprintf}, +#line 208 "accessor_class_list.gperf" + {"unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors}, #line 79 "accessor_class_list.gperf" {"element", &grib_accessor_class_element}, -#line 177 "accessor_class_list.gperf" +#line 178 "accessor_class_list.gperf" {"sexagesimal2decimal", &grib_accessor_class_sexagesimal2decimal}, #line 132 "accessor_class_list.gperf" {"latitudes", &grib_accessor_class_latitudes}, -#line 205 "accessor_class_list.gperf" - {"uint64_little_endian", &grib_accessor_class_uint64_little_endian}, -#line 47 "accessor_class_list.gperf" - {"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing}, -#line 207 "accessor_class_list.gperf" - {"unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors}, -#line 165 "accessor_class_list.gperf" - {"raw", &grib_accessor_class_raw}, - {""}, {""}, {""}, -#line 203 "accessor_class_list.gperf" - {"uint32_little_endian", &grib_accessor_class_uint32_little_endian}, {""}, +#line 77 "accessor_class_list.gperf" + {"divdouble", &grib_accessor_class_divdouble}, + {""}, +#line 204 "accessor_class_list.gperf" + {"uint32_little_endian", &grib_accessor_class_uint32_little_endian}, +#line 56 "accessor_class_list.gperf" + {"data_g1shsimple_packing", &grib_accessor_class_data_g1shsimple_packing}, +#line 167 "accessor_class_list.gperf" + {"rdbtime_guess_date", &grib_accessor_class_rdbtime_guess_date}, + {""}, {""}, +#line 206 "accessor_class_list.gperf" + {"uint64_little_endian", &grib_accessor_class_uint64_little_endian}, + {""}, +#line 106 "accessor_class_list.gperf" + {"g2latlon", &grib_accessor_class_g2latlon}, +#line 197 "accessor_class_list.gperf" + {"to_string", &grib_accessor_class_to_string}, #line 137 "accessor_class_list.gperf" {"long", &grib_accessor_class_long}, {""}, #line 78 "accessor_class_list.gperf" {"double", &grib_accessor_class_double}, - {""}, {""}, -#line 100 "accessor_class_list.gperf" - {"g2_mars_labeling", &grib_accessor_class_g2_mars_labeling}, -#line 186 "accessor_class_list.gperf" - {"sprintf", &grib_accessor_class_sprintf}, - {""}, {""}, {""}, -#line 166 "accessor_class_list.gperf" - {"rdbtime_guess_date", &grib_accessor_class_rdbtime_guess_date}, - {""}, -#line 77 "accessor_class_list.gperf" - {"divdouble", &grib_accessor_class_divdouble}, -#line 106 "accessor_class_list.gperf" - {"g2latlon", &grib_accessor_class_g2latlon}, -#line 196 "accessor_class_list.gperf" - {"to_string", &grib_accessor_class_to_string}, -#line 176 "accessor_class_list.gperf" +#line 177 "accessor_class_list.gperf" {"select_step_template", &grib_accessor_class_select_step_template}, - {""}, {""}, {""}, {""}, -#line 131 "accessor_class_list.gperf" - {"label", &grib_accessor_class_label}, - {""}, +#line 214 "accessor_class_list.gperf" + {"values", &grib_accessor_class_values}, #line 19 "accessor_class_list.gperf" {"bufr_data_array", &grib_accessor_class_bufr_data_array}, {""}, #line 20 "accessor_class_list.gperf" {"bufr_data_element", &grib_accessor_class_bufr_data_element}, -#line 17 "accessor_class_list.gperf" - {"blob", &grib_accessor_class_blob}, - {""}, {""}, + {""}, +#line 57 "accessor_class_list.gperf" + {"data_g1simple_packing", &grib_accessor_class_data_g1simple_packing}, +#line 50 "accessor_class_list.gperf" + {"data_g1complex_packing", &grib_accessor_class_data_g1complex_packing}, #line 26 "accessor_class_list.gperf" {"bufr_simple_thinning", &grib_accessor_class_bufr_simple_thinning}, - {""}, -#line 120 "accessor_class_list.gperf" - {"ibmfloat", &grib_accessor_class_ibmfloat}, -#line 56 "accessor_class_list.gperf" - {"data_g1shsimple_packing", &grib_accessor_class_data_g1shsimple_packing}, #line 121 "accessor_class_list.gperf" {"ieeefloat", &grib_accessor_class_ieeefloat}, #line 155 "accessor_class_list.gperf" {"offset_file", &grib_accessor_class_offset_file}, +#line 17 "accessor_class_list.gperf" + {"blob", &grib_accessor_class_blob}, +#line 84 "accessor_class_list.gperf" + {"g1_message_length", &grib_accessor_class_g1_message_length}, +#line 217 "accessor_class_list.gperf" + {"when", &grib_accessor_class_when}, #line 28 "accessor_class_list.gperf" {"bufrdc_expanded_descriptors", &grib_accessor_class_bufrdc_expanded_descriptors}, -#line 162 "accessor_class_list.gperf" - {"padtomultiple", &grib_accessor_class_padtomultiple}, {""}, -#line 199 "accessor_class_list.gperf" +#line 120 "accessor_class_list.gperf" + {"ibmfloat", &grib_accessor_class_ibmfloat}, +#line 200 "accessor_class_list.gperf" {"trim", &grib_accessor_class_trim}, {""}, #line 110 "accessor_class_list.gperf" {"gaussian_grid_name", &grib_accessor_class_gaussian_grid_name}, {""}, {""}, {""}, -#line 197 "accessor_class_list.gperf" +#line 198 "accessor_class_list.gperf" {"transient", &grib_accessor_class_transient}, {""}, #line 116 "accessor_class_list.gperf" {"group", &grib_accessor_class_group}, - {""}, #line 163 "accessor_class_list.gperf" - {"position", &grib_accessor_class_position}, -#line 57 "accessor_class_list.gperf" - {"data_g1simple_packing", &grib_accessor_class_data_g1simple_packing}, -#line 50 "accessor_class_list.gperf" - {"data_g1complex_packing", &grib_accessor_class_data_g1complex_packing}, -#line 198 "accessor_class_list.gperf" + {"padtomultiple", &grib_accessor_class_padtomultiple}, + {""}, {""}, +#line 131 "accessor_class_list.gperf" + {"label", &grib_accessor_class_label}, +#line 199 "accessor_class_list.gperf" {"transient_darray", &grib_accessor_class_transient_darray}, -#line 123 "accessor_class_list.gperf" - {"int16_little_endian", &grib_accessor_class_int16_little_endian}, -#line 125 "accessor_class_list.gperf" - {"int64_little_endian", &grib_accessor_class_int64_little_endian}, -#line 168 "accessor_class_list.gperf" - {"round", &grib_accessor_class_round}, -#line 84 "accessor_class_list.gperf" - {"g1_message_length", &grib_accessor_class_g1_message_length}, -#line 216 "accessor_class_list.gperf" - {"when", &grib_accessor_class_when}, {""}, -#line 18 "accessor_class_list.gperf" - {"budgdate", &grib_accessor_class_budgdate}, - {""}, -#line 143 "accessor_class_list.gperf" - {"md5", &grib_accessor_class_md5}, +#line 164 "accessor_class_list.gperf" + {"position", &grib_accessor_class_position}, {""}, {""}, -#line 124 "accessor_class_list.gperf" - {"int32_little_endian", &grib_accessor_class_int32_little_endian}, -#line 144 "accessor_class_list.gperf" - {"message", &grib_accessor_class_message}, -#line 140 "accessor_class_list.gperf" - {"lookup", &grib_accessor_class_lookup}, -#line 192 "accessor_class_list.gperf" - {"suppressed", &grib_accessor_class_suppressed}, -#line 141 "accessor_class_list.gperf" - {"mars_param", &grib_accessor_class_mars_param}, - {""}, {""}, -#line 139 "accessor_class_list.gperf" - {"longitudes", &grib_accessor_class_longitudes}, -#line 213 "accessor_class_list.gperf" - {"values", &grib_accessor_class_values}, -#line 148 "accessor_class_list.gperf" - {"number_of_coded_values", &grib_accessor_class_number_of_coded_values}, - {""}, -#line 185 "accessor_class_list.gperf" - {"spectral_truncation", &grib_accessor_class_spectral_truncation}, - {""}, {""}, -#line 200 "accessor_class_list.gperf" - {"uint16", &grib_accessor_class_uint16}, #line 95 "accessor_class_list.gperf" {"g1step_range", &grib_accessor_class_g1step_range}, +#line 169 "accessor_class_list.gperf" + {"round", &grib_accessor_class_round}, +#line 18 "accessor_class_list.gperf" + {"budgdate", &grib_accessor_class_budgdate}, {""}, {""}, -#line 38 "accessor_class_list.gperf" - {"concept", &grib_accessor_class_concept}, - {""}, {""}, {""}, -#line 87 "accessor_class_list.gperf" - {"g1date", &grib_accessor_class_g1date}, #line 71 "accessor_class_list.gperf" {"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked}, + {""}, +#line 87 "accessor_class_list.gperf" + {"g1date", &grib_accessor_class_g1date}, +#line 201 "accessor_class_list.gperf" + {"uint16", &grib_accessor_class_uint16}, #line 86 "accessor_class_list.gperf" {"g1bitmap", &grib_accessor_class_g1bitmap}, -#line 55 "accessor_class_list.gperf" - {"data_g1secondary_bitmap", &grib_accessor_class_data_g1secondary_bitmap}, -#line 145 "accessor_class_list.gperf" - {"message_copy", &grib_accessor_class_message_copy}, - {""}, #line 72 "accessor_class_list.gperf" {"data_shsimple_packing", &grib_accessor_class_data_shsimple_packing}, + {""}, {""}, +#line 55 "accessor_class_list.gperf" + {"data_g1secondary_bitmap", &grib_accessor_class_data_g1secondary_bitmap}, {""}, -#line 102 "accessor_class_list.gperf" - {"g2bitmap_present", &grib_accessor_class_g2bitmap_present}, -#line 164 "accessor_class_list.gperf" - {"proj_string", &grib_accessor_class_proj_string}, -#line 39 "accessor_class_list.gperf" - {"constant", &grib_accessor_class_constant}, - {""}, -#line 27 "accessor_class_list.gperf" - {"bufr_string_values", &grib_accessor_class_bufr_string_values}, -#line 156 "accessor_class_list.gperf" - {"offset_values", &grib_accessor_class_offset_values}, -#line 154 "accessor_class_list.gperf" - {"octet_number", &grib_accessor_class_octet_number}, -#line 53 "accessor_class_list.gperf" - {"data_g1second_order_general_packing", &grib_accessor_class_data_g1second_order_general_packing}, +#line 212 "accessor_class_list.gperf" + {"validity_date", &grib_accessor_class_validity_date}, +#line 213 "accessor_class_list.gperf" + {"validity_time", &grib_accessor_class_validity_time}, +#line 143 "accessor_class_list.gperf" + {"md5", &grib_accessor_class_md5}, +#line 186 "accessor_class_list.gperf" + {"spectral_truncation", &grib_accessor_class_spectral_truncation}, +#line 193 "accessor_class_list.gperf" + {"suppressed", &grib_accessor_class_suppressed}, #line 85 "accessor_class_list.gperf" {"g1_section4_length", &grib_accessor_class_g1_section4_length}, -#line 136 "accessor_class_list.gperf" - {"local_definition", &grib_accessor_class_local_definition}, +#line 144 "accessor_class_list.gperf" + {"message", &grib_accessor_class_message}, + {""}, +#line 125 "accessor_class_list.gperf" + {"int64_little_endian", &grib_accessor_class_int64_little_endian}, +#line 141 "accessor_class_list.gperf" + {"mars_param", &grib_accessor_class_mars_param}, +#line 53 "accessor_class_list.gperf" + {"data_g1second_order_general_packing", &grib_accessor_class_data_g1second_order_general_packing}, +#line 216 "accessor_class_list.gperf" + {"vector", &grib_accessor_class_vector}, + {""}, #line 54 "accessor_class_list.gperf" {"data_g1second_order_row_by_row_packing", &grib_accessor_class_data_g1second_order_row_by_row_packing}, {""}, -#line 135 "accessor_class_list.gperf" - {"library_version", &grib_accessor_class_library_version}, +#line 148 "accessor_class_list.gperf" + {"number_of_coded_values", &grib_accessor_class_number_of_coded_values}, {""}, #line 51 "accessor_class_list.gperf" {"data_g1second_order_constant_width_packing", &grib_accessor_class_data_g1second_order_constant_width_packing}, -#line 142 "accessor_class_list.gperf" - {"mars_step", &grib_accessor_class_mars_step}, +#line 38 "accessor_class_list.gperf" + {"concept", &grib_accessor_class_concept}, #line 52 "accessor_class_list.gperf" {"data_g1second_order_general_extended_packing", &grib_accessor_class_data_g1second_order_general_extended_packing}, - {""}, -#line 194 "accessor_class_list.gperf" +#line 140 "accessor_class_list.gperf" + {"lookup", &grib_accessor_class_lookup}, +#line 124 "accessor_class_list.gperf" + {"int32_little_endian", &grib_accessor_class_int32_little_endian}, +#line 102 "accessor_class_list.gperf" + {"g2bitmap_present", &grib_accessor_class_g2bitmap_present}, +#line 165 "accessor_class_list.gperf" + {"proj_string", &grib_accessor_class_proj_string}, +#line 123 "accessor_class_list.gperf" + {"int16_little_endian", &grib_accessor_class_int16_little_endian}, +#line 139 "accessor_class_list.gperf" + {"longitudes", &grib_accessor_class_longitudes}, +#line 27 "accessor_class_list.gperf" + {"bufr_string_values", &grib_accessor_class_bufr_string_values}, + {""}, {""}, {""}, {""}, +#line 145 "accessor_class_list.gperf" + {"message_copy", &grib_accessor_class_message_copy}, +#line 39 "accessor_class_list.gperf" + {"constant", &grib_accessor_class_constant}, +#line 156 "accessor_class_list.gperf" + {"offset_values", &grib_accessor_class_offset_values}, +#line 162 "accessor_class_list.gperf" + {"padtoeven", &grib_accessor_class_padtoeven}, +#line 117 "accessor_class_list.gperf" + {"gts_header", &grib_accessor_class_gts_header}, +#line 154 "accessor_class_list.gperf" + {"octet_number", &grib_accessor_class_octet_number}, +#line 195 "accessor_class_list.gperf" {"to_double", &grib_accessor_class_to_double}, {""}, {""}, {""}, {""}, -#line 21 "accessor_class_list.gperf" - {"bufr_elements_table", &grib_accessor_class_bufr_elements_table}, - {""}, {""}, {""}, -#line 211 "accessor_class_list.gperf" - {"validity_date", &grib_accessor_class_validity_date}, -#line 212 "accessor_class_list.gperf" - {"validity_time", &grib_accessor_class_validity_time}, +#line 89 "accessor_class_list.gperf" + {"g1end_of_interval_monthly", &grib_accessor_class_g1end_of_interval_monthly}, + {""}, +#line 215 "accessor_class_list.gperf" + {"variable", &grib_accessor_class_variable}, +#line 151 "accessor_class_list.gperf" + {"number_of_values", &grib_accessor_class_number_of_values}, {""}, {""}, #line 122 "accessor_class_list.gperf" {"ifs_param", &grib_accessor_class_ifs_param}, - {""}, {""}, {""}, -#line 215 "accessor_class_list.gperf" - {"vector", &grib_accessor_class_vector}, - {""}, {""}, -#line 117 "accessor_class_list.gperf" - {"gts_header", &grib_accessor_class_gts_header}, -#line 89 "accessor_class_list.gperf" - {"g1end_of_interval_monthly", &grib_accessor_class_g1end_of_interval_monthly}, -#line 201 "accessor_class_list.gperf" +#line 202 "accessor_class_list.gperf" {"uint16_little_endian", &grib_accessor_class_uint16_little_endian}, +#line 142 "accessor_class_list.gperf" + {"mars_step", &grib_accessor_class_mars_step}, + {""}, +#line 157 "accessor_class_list.gperf" + {"pack_bufr_values", &grib_accessor_class_pack_bufr_values}, {""}, {""}, -#line 138 "accessor_class_list.gperf" - {"long_vector", &grib_accessor_class_long_vector}, +#line 135 "accessor_class_list.gperf" + {"library_version", &grib_accessor_class_library_version}, {""}, {""}, #line 119 "accessor_class_list.gperf" {"headers_only", &grib_accessor_class_headers_only}, {""}, -#line 133 "accessor_class_list.gperf" - {"latlon_increment", &grib_accessor_class_latlon_increment}, -#line 34 "accessor_class_list.gperf" - {"codeflag", &grib_accessor_class_codeflag}, - {""}, {""}, {""}, -#line 25 "accessor_class_list.gperf" - {"bufr_group", &grib_accessor_class_bufr_group}, -#line 33 "accessor_class_list.gperf" - {"closest_date", &grib_accessor_class_closest_date}, +#line 21 "accessor_class_list.gperf" + {"bufr_elements_table", &grib_accessor_class_bufr_elements_table}, {""}, -#line 214 "accessor_class_list.gperf" - {"variable", &grib_accessor_class_variable}, -#line 74 "accessor_class_list.gperf" - {"decimal_precision", &grib_accessor_class_decimal_precision}, -#line 161 "accessor_class_list.gperf" - {"padtoeven", &grib_accessor_class_padtoeven}, - {""}, -#line 182 "accessor_class_list.gperf" - {"smart_table", &grib_accessor_class_smart_table}, - {""}, {""}, -#line 151 "accessor_class_list.gperf" - {"number_of_values", &grib_accessor_class_number_of_values}, -#line 24 "accessor_class_list.gperf" - {"bufr_extract_subsets", &grib_accessor_class_bufr_extract_subsets}, - {""}, {""}, -#line 183 "accessor_class_list.gperf" - {"smart_table_column", &grib_accessor_class_smart_table_column}, - {""}, -#line 22 "accessor_class_list.gperf" - {"bufr_extract_area_subsets", &grib_accessor_class_bufr_extract_area_subsets}, -#line 157 "accessor_class_list.gperf" - {"pack_bufr_values", &grib_accessor_class_pack_bufr_values}, - {""}, -#line 35 "accessor_class_list.gperf" - {"codetable", &grib_accessor_class_codetable}, -#line 23 "accessor_class_list.gperf" - {"bufr_extract_datetime_subsets", &grib_accessor_class_bufr_extract_datetime_subsets}, - {""}, -#line 130 "accessor_class_list.gperf" - {"ksec1expver", &grib_accessor_class_ksec1expver}, - {""}, {""}, {""}, {""}, #line 152 "accessor_class_list.gperf" {"number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing}, +#line 136 "accessor_class_list.gperf" + {"local_definition", &grib_accessor_class_local_definition}, + {""}, {""}, +#line 80 "accessor_class_list.gperf" + {"evaluate", &grib_accessor_class_evaluate}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 34 "accessor_class_list.gperf" + {"codeflag", &grib_accessor_class_codeflag}, +#line 171 "accessor_class_list.gperf" + {"scale_values", &grib_accessor_class_scale_values}, +#line 25 "accessor_class_list.gperf" + {"bufr_group", &grib_accessor_class_bufr_group}, +#line 130 "accessor_class_list.gperf" + {"ksec1expver", &grib_accessor_class_ksec1expver}, + {""}, {""}, {""}, {""}, {""}, +#line 138 "accessor_class_list.gperf" + {"long_vector", &grib_accessor_class_long_vector}, {""}, #line 70 "accessor_class_list.gperf" {"data_sh_packed", &grib_accessor_class_data_sh_packed}, - {""}, -#line 80 "accessor_class_list.gperf" - {"evaluate", &grib_accessor_class_evaluate}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 40 "accessor_class_list.gperf" - {"count_file", &grib_accessor_class_count_file}, - {""}, -#line 118 "accessor_class_list.gperf" - {"hash_array", &grib_accessor_class_hash_array}, -#line 170 "accessor_class_list.gperf" - {"scale_values", &grib_accessor_class_scale_values}, - {""}, #line 107 "accessor_class_list.gperf" {"g2level", &grib_accessor_class_g2level}, + {""}, +#line 133 "accessor_class_list.gperf" + {"latlon_increment", &grib_accessor_class_latlon_increment}, {""}, {""}, {""}, +#line 24 "accessor_class_list.gperf" + {"bufr_extract_subsets", &grib_accessor_class_bufr_extract_subsets}, +#line 118 "accessor_class_list.gperf" + {"hash_array", &grib_accessor_class_hash_array}, +#line 35 "accessor_class_list.gperf" + {"codetable", &grib_accessor_class_codetable}, +#line 183 "accessor_class_list.gperf" + {"smart_table", &grib_accessor_class_smart_table}, +#line 33 "accessor_class_list.gperf" + {"closest_date", &grib_accessor_class_closest_date}, +#line 22 "accessor_class_list.gperf" + {"bufr_extract_area_subsets", &grib_accessor_class_bufr_extract_area_subsets}, + {""}, {""}, {""}, +#line 23 "accessor_class_list.gperf" + {"bufr_extract_datetime_subsets", &grib_accessor_class_bufr_extract_datetime_subsets}, +#line 184 "accessor_class_list.gperf" + {"smart_table_column", &grib_accessor_class_smart_table_column}, #line 90 "accessor_class_list.gperf" {"g1fcperiod", &grib_accessor_class_g1fcperiod}, -#line 208 "accessor_class_list.gperf" - {"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values}, - {""}, {""}, {""}, -#line 11 "accessor_class_list.gperf" - {"abstract_vector", &grib_accessor_class_abstract_vector}, - {""}, #line 83 "accessor_class_list.gperf" {"g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag}, -#line 42 "accessor_class_list.gperf" - {"count_total", &grib_accessor_class_count_total}, - {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 74 "accessor_class_list.gperf" + {"decimal_precision", &grib_accessor_class_decimal_precision}, #line 134 "accessor_class_list.gperf" {"latlonvalues", &grib_accessor_class_latlonvalues}, - {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 40 "accessor_class_list.gperf" + {"count_file", &grib_accessor_class_count_file}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 11 "accessor_class_list.gperf" + {"abstract_vector", &grib_accessor_class_abstract_vector}, + {""}, {""}, {""}, +#line 30 "accessor_class_list.gperf" + {"change_alternative_row_scanning", &grib_accessor_class_change_alternative_row_scanning}, +#line 92 "accessor_class_list.gperf" + {"g1monthlydate", &grib_accessor_class_g1monthlydate}, + {""}, {""}, {""}, {""}, {""}, +#line 31 "accessor_class_list.gperf" + {"change_scanning_direction", &grib_accessor_class_change_scanning_direction}, + {""}, +#line 209 "accessor_class_list.gperf" + {"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values}, + {""}, #line 36 "accessor_class_list.gperf" {"codetable_title", &grib_accessor_class_codetable_title}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 30 "accessor_class_list.gperf" - {"change_alternative_row_scanning", &grib_accessor_class_change_alternative_row_scanning}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 31 "accessor_class_list.gperf" - {"change_scanning_direction", &grib_accessor_class_change_scanning_direction}, - {""}, {""}, {""}, {""}, -#line 37 "accessor_class_list.gperf" - {"codetable_units", &grib_accessor_class_codetable_units}, - {""}, -#line 82 "accessor_class_list.gperf" - {"from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value}, - {""}, #line 153 "accessor_class_list.gperf" {"octahedral_gaussian", &grib_accessor_class_octahedral_gaussian}, + {""}, {""}, {""}, {""}, +#line 42 "accessor_class_list.gperf" + {"count_total", &grib_accessor_class_count_total}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 82 "accessor_class_list.gperf" + {"from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value}, + {""}, {""}, {""}, {""}, {""}, +#line 37 "accessor_class_list.gperf" + {"codetable_units", &grib_accessor_class_codetable_units}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 92 "accessor_class_list.gperf" - {"g1monthlydate", &grib_accessor_class_g1monthlydate}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, #line 10 "accessor_class_list.gperf" {"abstract_long_vector", &grib_accessor_class_abstract_long_vector}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 41 "accessor_class_list.gperf" - {"count_missing", &grib_accessor_class_count_missing}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 32 "accessor_class_list.gperf" - {"check_internal_version", &grib_accessor_class_check_internal_version}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, #line 88 "accessor_class_list.gperf" {"g1day_of_the_year_date", &grib_accessor_class_g1day_of_the_year_date}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 32 "accessor_class_list.gperf" + {"check_internal_version", &grib_accessor_class_check_internal_version}, {""}, {""}, {""}, #line 96 "accessor_class_list.gperf" {"g1verificationdate", &grib_accessor_class_g1verificationdate}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 167 "accessor_class_list.gperf" + {""}, +#line 41 "accessor_class_list.gperf" + {"count_missing", &grib_accessor_class_count_missing}, + {""}, {""}, {""}, {""}, +#line 168 "accessor_class_list.gperf" {"reference_value_error", &grib_accessor_class_reference_value_error}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 94 "accessor_class_list.gperf" {"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple}, #line 93 "accessor_class_list.gperf" {"g1number_of_coded_values_sh_complex", &grib_accessor_class_g1number_of_coded_values_sh_complex}, - {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, #line 98 "accessor_class_list.gperf" {"g2_chemical", &grib_accessor_class_g2_chemical}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -647,8 +640,7 @@ static const struct accessor_class_hash classes[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, #line 91 "accessor_class_list.gperf" {"g1forecastmonth", &grib_accessor_class_g1forecastmonth} }; diff --git a/src/grib_accessor_factory.h b/src/grib_accessor_factory.h index 6617ea1c7..f32647c89 100644 --- a/src/grib_accessor_factory.h +++ b/src/grib_accessor_factory.h @@ -147,6 +147,7 @@ { "offset_file", &grib_accessor_class_offset_file, }, { "offset_values", &grib_accessor_class_offset_values, }, { "pack_bufr_values", &grib_accessor_class_pack_bufr_values, }, +{ "packing_type", &grib_accessor_class_packing_type, }, { "pad", &grib_accessor_class_pad, }, { "padding", &grib_accessor_class_padding, }, { "padto", &grib_accessor_class_padto, }, diff --git a/src/grib_accessor_factory_hash_list b/src/grib_accessor_factory_hash_list index 3a29ffce4..41793b6af 100644 --- a/src/grib_accessor_factory_hash_list +++ b/src/grib_accessor_factory_hash_list @@ -148,6 +148,7 @@ octet_number, &grib_accessor_class_octet_number offset_file, &grib_accessor_class_offset_file offset_values, &grib_accessor_class_offset_values pack_bufr_values, &grib_accessor_class_pack_bufr_values +packing_type, &grib_accessor_class_packing_type pad, &grib_accessor_class_pad padding, &grib_accessor_class_padding padto, &grib_accessor_class_padto diff --git a/tests/grib_change_packing.sh b/tests/grib_change_packing.sh index 322572c8e..2b4d8ebf5 100755 --- a/tests/grib_change_packing.sh +++ b/tests/grib_change_packing.sh @@ -55,6 +55,11 @@ test_packing() { result=`${tools_dir}/grib_get -p accuracy $temp` [ $result -eq 0 -o $result -eq 32 -o $result -eq 64 ] + temp1=$temp.1 + ${tools_dir}/grib_set -s setPackingType=$packing $grib $temp1 + ${tools_dir}/grib_compare $temp $temp1 + rm -f $temp1 + shift done