From 5bc68e1116f106147966243cd8ce6ad72c3de21d Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 29 Mar 2022 21:20:23 +0100 Subject: [PATCH] ECC-1375: GRIB: Add key to allow alternativeRowScanning to be turned off/on --- definitions/grib1/scanning_mode.def | 2 + .../grib2/template.3.scanning_mode.def | 3 + src/CMakeLists.txt | 1 + src/grib_accessor_class.h | 1 + ...or_class_change_alternative_row_scanning.c | 234 ++++++++ src/grib_accessor_classes_hash.c | 546 +++++++++--------- src/grib_accessor_factory.h | 1 + src/grib_accessor_factory_hash_list | 1 + src/grib_api_prototypes.h | 2 + .../msvc/grib_api_lib/grib_api_lib.vcxproj | 1 + 10 files changed, 521 insertions(+), 271 deletions(-) create mode 100644 src/grib_accessor_class_change_alternative_row_scanning.c diff --git a/definitions/grib1/scanning_mode.def b/definitions/grib1/scanning_mode.def index fc4218218..ccd4b3c18 100644 --- a/definitions/grib1/scanning_mode.def +++ b/definitions/grib1/scanning_mode.def @@ -28,6 +28,8 @@ meta swapScanningY change_scanning_direction( values,Ni,Nj, yFirst,yLast,y) : edition_specific,hidden,no_copy; alias swapScanningLat = swapScanningY; +transient swapScanningAlternativeRows = 0; # Not available in grib1 + if (jPointsAreConsecutive) { alias numberOfRows=Ni; alias numberOfColumns=Nj; diff --git a/definitions/grib2/template.3.scanning_mode.def b/definitions/grib2/template.3.scanning_mode.def index d74d83c76..6f90222da 100644 --- a/definitions/grib2/template.3.scanning_mode.def +++ b/definitions/grib2/template.3.scanning_mode.def @@ -36,3 +36,6 @@ meta swapScanningY change_scanning_direction( values,Ni,Nj, iScansNegatively,jScansPositively, yFirst,yLast,y) : edition_specific,hidden,no_copy; alias swapScanningLat = swapScanningY; + +meta swapScanningAlternativeRows change_alternative_row_scanning( + values, Ni, Nj, alternativeRowScanning): edition_specific,hidden,no_copy; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a56277b6f..3949a4112 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -85,6 +85,7 @@ list( APPEND grib_api_srcs grib_accessor_class_validity_time.c grib_accessor_class_bytes.c grib_accessor_class.c + grib_accessor_class_change_alternative_row_scanning.c grib_accessor_class_change_scanning_direction.c grib_accessor_class_check_internal_version.c grib_accessor_class_codeflag.c diff --git a/src/grib_accessor_class.h b/src/grib_accessor_class.h index 228372455..1f9be49a6 100644 --- a/src/grib_accessor_class.h +++ b/src/grib_accessor_class.h @@ -23,6 +23,7 @@ extern grib_accessor_class* grib_accessor_class_bufr_simple_thinning; extern grib_accessor_class* grib_accessor_class_bufr_string_values; extern grib_accessor_class* grib_accessor_class_bufrdc_expanded_descriptors; extern grib_accessor_class* grib_accessor_class_bytes; +extern grib_accessor_class* grib_accessor_class_change_alternative_row_scanning; extern grib_accessor_class* grib_accessor_class_change_scanning_direction; extern grib_accessor_class* grib_accessor_class_check_internal_version; extern grib_accessor_class* grib_accessor_class_codeflag; diff --git a/src/grib_accessor_class_change_alternative_row_scanning.c b/src/grib_accessor_class_change_alternative_row_scanning.c new file mode 100644 index 000000000..1aac6a183 --- /dev/null +++ b/src/grib_accessor_class_change_alternative_row_scanning.c @@ -0,0 +1,234 @@ +/* + * (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 = pack_long; + IMPLEMENTS = unpack_long + IMPLEMENTS = init;get_native_type + MEMBERS = const char* values + MEMBERS = const char* Ni + MEMBERS = const char* Nj + MEMBERS = const char* alternativeRowScanning + 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_long(grib_accessor*, const long* val, size_t* len); +static int unpack_long(grib_accessor*, long* val, size_t* len); +static void init(grib_accessor*, const long, grib_arguments*); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_change_alternative_row_scanning +{ + grib_accessor att; + /* Members defined in gen */ + /* Members defined in change_alternative_row_scanning */ + const char* values; + const char* Ni; + const char* Nj; + const char* alternativeRowScanning; +} grib_accessor_change_alternative_row_scanning; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_change_alternative_row_scanning = { + &grib_accessor_class_gen, /* super */ + "change_alternative_row_scanning", /* name */ + sizeof(grib_accessor_change_alternative_row_scanning), /* 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 */ + 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, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* 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_change_alternative_row_scanning = &_grib_accessor_class_change_alternative_row_scanning; + + +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->value_count = (*(c->super))->value_count; + c->byte_count = (*(c->super))->byte_count; + c->byte_offset = (*(c->super))->byte_offset; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_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 len, grib_arguments* args) +{ + int n = 0; + grib_accessor_change_alternative_row_scanning* self = (grib_accessor_change_alternative_row_scanning*)a; + + self->values = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); + self->Ni = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); + self->Nj = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); + self->alternativeRowScanning = grib_arguments_get_name(grib_handle_of_accessor(a), args, n++); + + a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION; + a->length = 0; +} + +static int pack_long(grib_accessor* a, const long* val, size_t* len) +{ + int err = 0; + grib_accessor_change_alternative_row_scanning* self = (grib_accessor_change_alternative_row_scanning*)a; + grib_context* c = a->context; + grib_handle* h = grib_handle_of_accessor(a); + long i, j, jr, theEnd, Ni, Nj, k, kp; + long alternativeRowScanning = 0; + size_t size = 0; + double* values = NULL; + double tmp = 0.0; + + if (*val == 0) + return 0; + + if ((err = grib_get_long_internal(h, self->Ni, &Ni)) != GRIB_SUCCESS) + return err; + if ((err = grib_get_long_internal(h, self->Nj, &Nj)) != GRIB_SUCCESS) + return err; + + if ((err = grib_get_long_internal(h, self->alternativeRowScanning, &alternativeRowScanning)) != GRIB_SUCCESS) + return err; + + if ((err = grib_get_size(h, self->values, &size)) != GRIB_SUCCESS) + return err; + + if (size > Ni * Nj) { + grib_context_log(c, GRIB_LOG_ERROR, "change_alternative_row_scanning: wrong values size!=Ni*Nj (%ld!=%ld*%ld)", size, Ni, Nj); + return GRIB_WRONG_ARRAY_SIZE; + } + + 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; + } + + theEnd = (Ni + 0.5) / 2; + for (j = 0; j < Nj; j++) { + jr = Ni * j; + for (i = 0; i < theEnd; i++) { + if (j % 2 == 1) { + /* Swap first and last value on every odd row */ + k = jr + i; + kp = jr + Ni - i - 1; + tmp = values[k]; + values[k] = values[kp]; + values[kp] = tmp; + } + } + } + alternativeRowScanning = !alternativeRowScanning; + if ((err = grib_set_long_internal(h, self->alternativeRowScanning, alternativeRowScanning)) != 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 get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_LONG; +} + +static int unpack_long(grib_accessor* a, long* v, size_t* len) +{ + /* Decoding this accessor doesn't make sense so we return a dummy value */ + *v = -1; + return GRIB_SUCCESS; +} diff --git a/src/grib_accessor_classes_hash.c b/src/grib_accessor_classes_hash.c index bdc5efc1d..234794274 100644 --- a/src/grib_accessor_classes_hash.c +++ b/src/grib_accessor_classes_hash.c @@ -37,7 +37,7 @@ error "gperf generated tables don't work with this execution character set. Plea #line 6 "accessor_class_list.gperf" struct accessor_class_hash { char *name; grib_accessor_class **cclass;}; -#define TOTAL_KEYWORDS 218 +#define TOTAL_KEYWORDS 219 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 44 #define MIN_HASH_VALUE 1 @@ -66,9 +66,9 @@ grib_accessor_classes_get_id (const char *str, unsigned int len) 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 0, 727, 0, 98, 78, - 0, 3, 144, 36, 165, 1, 5, 5, 69, 300, - 14, 71, 14, 727, 131, 3, 2, 45, 220, 6, - 0, 108, 727, 727, 727, 727, 727, 727, 727, 727, + 0, 3, 144, 36, 214, 1, 5, 5, 69, 300, + 14, 71, 14, 727, 131, 3, 2, 45, 220, 1, + 0, 39, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, 727, @@ -118,167 +118,170 @@ static const struct accessor_class_hash classes[] = #line 9 "accessor_class_list.gperf" {" "}, {""}, {""}, {""}, {""}, {""}, -#line 202 "accessor_class_list.gperf" +#line 203 "accessor_class_list.gperf" {"time", &grib_accessor_class_time}, -#line 190 "accessor_class_list.gperf" +#line 191 "accessor_class_list.gperf" {"size", &grib_accessor_class_size}, #line 14 "accessor_class_list.gperf" {"ascii", &grib_accessor_class_ascii}, {""}, -#line 203 "accessor_class_list.gperf" +#line 204 "accessor_class_list.gperf" {"times", &grib_accessor_class_times}, {""}, -#line 187 "accessor_class_list.gperf" +#line 188 "accessor_class_list.gperf" {"signed", &grib_accessor_class_signed}, {""}, {""}, -#line 70 "accessor_class_list.gperf" - {"data_raw_packing", &grib_accessor_class_data_raw_packing}, -#line 167 "accessor_class_list.gperf" - {"pad", &grib_accessor_class_pad}, -#line 196 "accessor_class_list.gperf" - {"statistics", &grib_accessor_class_statistics}, -#line 133 "accessor_class_list.gperf" - {"int8", &grib_accessor_class_int8}, -#line 193 "accessor_class_list.gperf" - {"spd", &grib_accessor_class_spd}, -#line 188 "accessor_class_list.gperf" - {"signed_bits", &grib_accessor_class_signed_bits}, -#line 131 "accessor_class_list.gperf" - {"int64", &grib_accessor_class_int64}, -#line 75 "accessor_class_list.gperf" - {"data_simple_packing", &grib_accessor_class_data_simple_packing}, #line 71 "accessor_class_list.gperf" - {"data_secondary_bitmap", &grib_accessor_class_data_secondary_bitmap}, -#line 127 "accessor_class_list.gperf" - {"int16", &grib_accessor_class_int16}, -#line 77 "accessor_class_list.gperf" - {"dictionary", &grib_accessor_class_dictionary}, + {"data_raw_packing", &grib_accessor_class_data_raw_packing}, +#line 168 "accessor_class_list.gperf" + {"pad", &grib_accessor_class_pad}, #line 197 "accessor_class_list.gperf" + {"statistics", &grib_accessor_class_statistics}, +#line 134 "accessor_class_list.gperf" + {"int8", &grib_accessor_class_int8}, +#line 194 "accessor_class_list.gperf" + {"spd", &grib_accessor_class_spd}, +#line 189 "accessor_class_list.gperf" + {"signed_bits", &grib_accessor_class_signed_bits}, +#line 132 "accessor_class_list.gperf" + {"int64", &grib_accessor_class_int64}, +#line 76 "accessor_class_list.gperf" + {"data_simple_packing", &grib_accessor_class_data_simple_packing}, +#line 72 "accessor_class_list.gperf" + {"data_secondary_bitmap", &grib_accessor_class_data_secondary_bitmap}, +#line 128 "accessor_class_list.gperf" + {"int16", &grib_accessor_class_int16}, +#line 78 "accessor_class_list.gperf" + {"dictionary", &grib_accessor_class_dictionary}, +#line 198 "accessor_class_list.gperf" {"statistics_spectral", &grib_accessor_class_statistics_spectral}, -#line 181 "accessor_class_list.gperf" +#line 182 "accessor_class_list.gperf" {"section", &grib_accessor_class_section}, -#line 155 "accessor_class_list.gperf" +#line 156 "accessor_class_list.gperf" {"nearest", &grib_accessor_class_nearest}, -#line 69 "accessor_class_list.gperf" +#line 70 "accessor_class_list.gperf" {"data_png_packing", &grib_accessor_class_data_png_packing}, -#line 46 "accessor_class_list.gperf" +#line 47 "accessor_class_list.gperf" {"data_apply_bitmap", &grib_accessor_class_data_apply_bitmap}, {""}, -#line 199 "accessor_class_list.gperf" +#line 200 "accessor_class_list.gperf" {"step_in_units", &grib_accessor_class_step_in_units}, {""}, -#line 68 "accessor_class_list.gperf" +#line 69 "accessor_class_list.gperf" {"data_jpeg2000_packing", &grib_accessor_class_data_jpeg2000_packing}, -#line 183 "accessor_class_list.gperf" - {"section_padding", &grib_accessor_class_section_padding}, #line 184 "accessor_class_list.gperf" + {"section_padding", &grib_accessor_class_section_padding}, +#line 185 "accessor_class_list.gperf" {"section_pointer", &grib_accessor_class_section_pointer}, -#line 49 "accessor_class_list.gperf" +#line 50 "accessor_class_list.gperf" {"data_apply_gdsnotpresent", &grib_accessor_class_data_apply_gdsnotpresent}, {""}, -#line 47 "accessor_class_list.gperf" +#line 48 "accessor_class_list.gperf" {"data_apply_boustrophedonic", &grib_accessor_class_data_apply_boustrophedonic}, {""}, -#line 117 "accessor_class_list.gperf" +#line 118 "accessor_class_list.gperf" {"gen", &grib_accessor_class_gen}, -#line 83 "accessor_class_list.gperf" +#line 84 "accessor_class_list.gperf" {"expanded_descriptors", &grib_accessor_class_expanded_descriptors}, - {""}, {""}, {""}, -#line 48 "accessor_class_list.gperf" + {""}, +#line 79 "accessor_class_list.gperf" + {"dirty", &grib_accessor_class_dirty}, + {""}, +#line 49 "accessor_class_list.gperf" {"data_apply_boustrophedonic_bitmap", &grib_accessor_class_data_apply_boustrophedonic_bitmap}, {""}, -#line 182 "accessor_class_list.gperf" +#line 183 "accessor_class_list.gperf" {"section_length", &grib_accessor_class_section_length}, -#line 180 "accessor_class_list.gperf" +#line 181 "accessor_class_list.gperf" {"second_order_bits_per_value", &grib_accessor_class_second_order_bits_per_value}, -#line 200 "accessor_class_list.gperf" +#line 201 "accessor_class_list.gperf" {"sum", &grib_accessor_class_sum}, -#line 129 "accessor_class_list.gperf" +#line 130 "accessor_class_list.gperf" {"int32", &grib_accessor_class_int32}, -#line 61 "accessor_class_list.gperf" +#line 62 "accessor_class_list.gperf" {"data_g22order_packing", &grib_accessor_class_data_g22order_packing}, -#line 115 "accessor_class_list.gperf" +#line 116 "accessor_class_list.gperf" {"gds_is_present", &grib_accessor_class_gds_is_present}, -#line 212 "accessor_class_list.gperf" +#line 213 "accessor_class_list.gperf" {"uint32", &grib_accessor_class_uint32}, -#line 65 "accessor_class_list.gperf" +#line 66 "accessor_class_list.gperf" {"data_g2shsimple_packing", &grib_accessor_class_data_g2shsimple_packing}, -#line 214 "accessor_class_list.gperf" +#line 215 "accessor_class_list.gperf" {"uint64", &grib_accessor_class_uint64}, -#line 168 "accessor_class_list.gperf" +#line 169 "accessor_class_list.gperf" {"padding", &grib_accessor_class_padding}, -#line 118 "accessor_class_list.gperf" +#line 119 "accessor_class_list.gperf" {"getenv", &grib_accessor_class_getenv}, -#line 136 "accessor_class_list.gperf" +#line 137 "accessor_class_list.gperf" {"julian_day", &grib_accessor_class_julian_day}, -#line 52 "accessor_class_list.gperf" +#line 53 "accessor_class_list.gperf" {"data_dummy_field", &grib_accessor_class_data_dummy_field}, -#line 216 "accessor_class_list.gperf" +#line 217 "accessor_class_list.gperf" {"uint8", &grib_accessor_class_uint8}, {""}, -#line 135 "accessor_class_list.gperf" +#line 136 "accessor_class_list.gperf" {"julian_date", &grib_accessor_class_julian_date}, {""}, {""}, -#line 66 "accessor_class_list.gperf" +#line 67 "accessor_class_list.gperf" {"data_g2simple_packing", &grib_accessor_class_data_g2simple_packing}, -#line 63 "accessor_class_list.gperf" +#line 64 "accessor_class_list.gperf" {"data_g2complex_packing", &grib_accessor_class_data_g2complex_packing}, -#line 198 "accessor_class_list.gperf" +#line 199 "accessor_class_list.gperf" {"step_human_readable", &grib_accessor_class_step_human_readable}, {""}, -#line 213 "accessor_class_list.gperf" +#line 214 "accessor_class_list.gperf" {"uint32_little_endian", &grib_accessor_class_uint32_little_endian}, {""}, -#line 215 "accessor_class_list.gperf" +#line 216 "accessor_class_list.gperf" {"uint64_little_endian", &grib_accessor_class_uint64_little_endian}, {""}, -#line 109 "accessor_class_list.gperf" +#line 110 "accessor_class_list.gperf" {"g2grid", &grib_accessor_class_g2grid}, -#line 107 "accessor_class_list.gperf" - {"g2date", &grib_accessor_class_g2date}, -#line 116 "accessor_class_list.gperf" - {"gds_not_present_bitmap", &grib_accessor_class_gds_not_present_bitmap}, -#line 105 "accessor_class_list.gperf" - {"g2bitmap", &grib_accessor_class_g2bitmap}, -#line 139 "accessor_class_list.gperf" - {"laplacian", &grib_accessor_class_laplacian}, -#line 140 "accessor_class_list.gperf" - {"latitudes", &grib_accessor_class_latitudes}, #line 108 "accessor_class_list.gperf" + {"g2date", &grib_accessor_class_g2date}, +#line 117 "accessor_class_list.gperf" + {"gds_not_present_bitmap", &grib_accessor_class_gds_not_present_bitmap}, +#line 106 "accessor_class_list.gperf" + {"g2bitmap", &grib_accessor_class_g2bitmap}, +#line 140 "accessor_class_list.gperf" + {"laplacian", &grib_accessor_class_laplacian}, +#line 141 "accessor_class_list.gperf" + {"latitudes", &grib_accessor_class_latitudes}, +#line 109 "accessor_class_list.gperf" {"g2end_step", &grib_accessor_class_g2end_step}, -#line 134 "accessor_class_list.gperf" +#line 135 "accessor_class_list.gperf" {"iterator", &grib_accessor_class_iterator}, {""}, -#line 81 "accessor_class_list.gperf" +#line 82 "accessor_class_list.gperf" {"element", &grib_accessor_class_element}, -#line 206 "accessor_class_list.gperf" +#line 207 "accessor_class_list.gperf" {"to_string", &grib_accessor_class_to_string}, -#line 67 "accessor_class_list.gperf" +#line 68 "accessor_class_list.gperf" {"data_g2simple_packing_with_preprocessing", &grib_accessor_class_data_g2simple_packing_with_preprocessing}, -#line 112 "accessor_class_list.gperf" +#line 113 "accessor_class_list.gperf" {"g2lon", &grib_accessor_class_g2lon}, -#line 103 "accessor_class_list.gperf" +#line 104 "accessor_class_list.gperf" {"g2_eps", &grib_accessor_class_g2_eps}, -#line 178 "accessor_class_list.gperf" +#line 179 "accessor_class_list.gperf" {"scale", &grib_accessor_class_scale}, -#line 169 "accessor_class_list.gperf" +#line 170 "accessor_class_list.gperf" {"padto", &grib_accessor_class_padto}, {""}, -#line 158 "accessor_class_list.gperf" +#line 159 "accessor_class_list.gperf" {"number_of_points", &grib_accessor_class_number_of_points}, {""}, -#line 51 "accessor_class_list.gperf" +#line 52 "accessor_class_list.gperf" {"data_complex_packing", &grib_accessor_class_data_complex_packing}, {""}, -#line 50 "accessor_class_list.gperf" +#line 51 "accessor_class_list.gperf" {"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing}, {""}, -#line 189 "accessor_class_list.gperf" +#line 190 "accessor_class_list.gperf" {"simple_packing_error", &grib_accessor_class_simple_packing_error}, {""}, -#line 205 "accessor_class_list.gperf" +#line 206 "accessor_class_list.gperf" {"to_integer", &grib_accessor_class_to_integer}, -#line 159 "accessor_class_list.gperf" +#line 160 "accessor_class_list.gperf" {"number_of_points_gaussian", &grib_accessor_class_number_of_points_gaussian}, #line 16 "accessor_class_list.gperf" {"bit", &grib_accessor_class_bit}, @@ -287,87 +290,87 @@ static const struct accessor_class_hash classes[] = {""}, #line 17 "accessor_class_list.gperf" {"bitmap", &grib_accessor_class_bitmap}, -#line 219 "accessor_class_list.gperf" +#line 220 "accessor_class_list.gperf" {"unsigned", &grib_accessor_class_unsigned}, {""}, -#line 156 "accessor_class_list.gperf" +#line 157 "accessor_class_list.gperf" {"non_alpha", &grib_accessor_class_non_alpha}, -#line 217 "accessor_class_list.gperf" +#line 218 "accessor_class_list.gperf" {"unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors}, {""}, {""}, -#line 220 "accessor_class_list.gperf" +#line 221 "accessor_class_list.gperf" {"unsigned_bits", &grib_accessor_class_unsigned_bits}, - {""}, -#line 78 "accessor_class_list.gperf" - {"dirty", &grib_accessor_class_dirty}, - {""}, + {""}, {""}, {""}, #line 19 "accessor_class_list.gperf" {"bits_per_value", &grib_accessor_class_bits_per_value}, {""}, -#line 185 "accessor_class_list.gperf" +#line 186 "accessor_class_list.gperf" {"select_step_template", &grib_accessor_class_select_step_template}, -#line 113 "accessor_class_list.gperf" +#line 114 "accessor_class_list.gperf" {"g2step_range", &grib_accessor_class_g2step_range}, {""}, {""}, {""}, -#line 119 "accessor_class_list.gperf" +#line 120 "accessor_class_list.gperf" {"global_gaussian", &grib_accessor_class_global_gaussian}, {""}, {""}, -#line 64 "accessor_class_list.gperf" +#line 65 "accessor_class_list.gperf" {"data_g2secondary_bitmap", &grib_accessor_class_data_g2secondary_bitmap}, -#line 62 "accessor_class_list.gperf" +#line 63 "accessor_class_list.gperf" {"data_g2bifourier_packing", &grib_accessor_class_data_g2bifourier_packing}, {""}, {""}, {""}, {""}, {""}, -#line 186 "accessor_class_list.gperf" +#line 187 "accessor_class_list.gperf" {"sexagesimal2decimal", &grib_accessor_class_sexagesimal2decimal}, -#line 174 "accessor_class_list.gperf" +#line 175 "accessor_class_list.gperf" {"raw", &grib_accessor_class_raw}, {""}, {""}, -#line 209 "accessor_class_list.gperf" +#line 210 "accessor_class_list.gperf" {"trim", &grib_accessor_class_trim}, - {""}, {""}, + {""}, +#line 12 "accessor_class_list.gperf" + {"apply_operators", &grib_accessor_class_apply_operators}, #line 15 "accessor_class_list.gperf" {"assert", &grib_accessor_class_assert}, {""}, {""}, -#line 138 "accessor_class_list.gperf" +#line 139 "accessor_class_list.gperf" {"label", &grib_accessor_class_label}, -#line 145 "accessor_class_list.gperf" +#line 146 "accessor_class_list.gperf" {"long", &grib_accessor_class_long}, - {""}, -#line 80 "accessor_class_list.gperf" +#line 33 "accessor_class_list.gperf" + {"bytes", &grib_accessor_class_bytes}, +#line 81 "accessor_class_list.gperf" {"double", &grib_accessor_class_double}, {""}, -#line 207 "accessor_class_list.gperf" +#line 208 "accessor_class_list.gperf" {"transient", &grib_accessor_class_transient}, -#line 110 "accessor_class_list.gperf" +#line 111 "accessor_class_list.gperf" {"g2latlon", &grib_accessor_class_g2latlon}, {""}, {""}, -#line 101 "accessor_class_list.gperf" +#line 102 "accessor_class_list.gperf" {"g2_aerosol", &grib_accessor_class_g2_aerosol}, #line 22 "accessor_class_list.gperf" {"budgdate", &grib_accessor_class_budgdate}, {""}, -#line 208 "accessor_class_list.gperf" +#line 209 "accessor_class_list.gperf" {"transient_darray", &grib_accessor_class_transient_darray}, -#line 175 "accessor_class_list.gperf" +#line 176 "accessor_class_list.gperf" {"rdbtime_guess_date", &grib_accessor_class_rdbtime_guess_date}, -#line 171 "accessor_class_list.gperf" +#line 172 "accessor_class_list.gperf" {"padtomultiple", &grib_accessor_class_padtomultiple}, #line 23 "accessor_class_list.gperf" {"bufr_data_array", &grib_accessor_class_bufr_data_array}, {""}, {""}, -#line 40 "accessor_class_list.gperf" +#line 41 "accessor_class_list.gperf" {"concept", &grib_accessor_class_concept}, -#line 157 "accessor_class_list.gperf" +#line 158 "accessor_class_list.gperf" {"number_of_coded_values", &grib_accessor_class_number_of_coded_values}, #line 24 "accessor_class_list.gperf" {"bufr_data_element", &grib_accessor_class_bufr_data_element}, {""}, {""}, -#line 172 "accessor_class_list.gperf" +#line 173 "accessor_class_list.gperf" {"position", &grib_accessor_class_position}, #line 30 "accessor_class_list.gperf" {"bufr_simple_thinning", &grib_accessor_class_bufr_simple_thinning}, {""}, -#line 194 "accessor_class_list.gperf" +#line 195 "accessor_class_list.gperf" {"spectral_truncation", &grib_accessor_class_spectral_truncation}, #line 32 "accessor_class_list.gperf" {"bufrdc_expanded_descriptors", &grib_accessor_class_bufrdc_expanded_descriptors}, @@ -375,310 +378,311 @@ static const struct accessor_class_hash classes[] = {"blob", &grib_accessor_class_blob}, #line 21 "accessor_class_list.gperf" {"box", &grib_accessor_class_box}, -#line 41 "accessor_class_list.gperf" +#line 42 "accessor_class_list.gperf" {"constant", &grib_accessor_class_constant}, -#line 132 "accessor_class_list.gperf" +#line 133 "accessor_class_list.gperf" {"int64_little_endian", &grib_accessor_class_int64_little_endian}, -#line 226 "accessor_class_list.gperf" - {"when", &grib_accessor_class_when}, -#line 124 "accessor_class_list.gperf" +#line 13 "accessor_class_list.gperf" + {"array", &grib_accessor_class_array}, +#line 125 "accessor_class_list.gperf" {"ibmfloat", &grib_accessor_class_ibmfloat}, -#line 128 "accessor_class_list.gperf" +#line 129 "accessor_class_list.gperf" {"int16_little_endian", &grib_accessor_class_int16_little_endian}, {""}, -#line 79 "accessor_class_list.gperf" +#line 80 "accessor_class_list.gperf" {"divdouble", &grib_accessor_class_divdouble}, {""}, {""}, -#line 195 "accessor_class_list.gperf" +#line 196 "accessor_class_list.gperf" {"sprintf", &grib_accessor_class_sprintf}, {""}, {""}, -#line 104 "accessor_class_list.gperf" +#line 105 "accessor_class_list.gperf" {"g2_mars_labeling", &grib_accessor_class_g2_mars_labeling}, -#line 120 "accessor_class_list.gperf" +#line 121 "accessor_class_list.gperf" {"group", &grib_accessor_class_group}, {""}, -#line 114 "accessor_class_list.gperf" +#line 115 "accessor_class_list.gperf" {"gaussian_grid_name", &grib_accessor_class_gaussian_grid_name}, {""}, -#line 59 "accessor_class_list.gperf" +#line 60 "accessor_class_list.gperf" {"data_g1shsimple_packing", &grib_accessor_class_data_g1shsimple_packing}, -#line 148 "accessor_class_list.gperf" +#line 149 "accessor_class_list.gperf" {"lookup", &grib_accessor_class_lookup}, -#line 201 "accessor_class_list.gperf" +#line 202 "accessor_class_list.gperf" {"suppressed", &grib_accessor_class_suppressed}, {""}, -#line 173 "accessor_class_list.gperf" +#line 174 "accessor_class_list.gperf" {"proj_string", &grib_accessor_class_proj_string}, -#line 73 "accessor_class_list.gperf" - {"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked}, -#line 147 "accessor_class_list.gperf" + {""}, +#line 148 "accessor_class_list.gperf" {"longitudes", &grib_accessor_class_longitudes}, {""}, {""}, #line 31 "accessor_class_list.gperf" {"bufr_string_values", &grib_accessor_class_bufr_string_values}, -#line 74 "accessor_class_list.gperf" - {"data_shsimple_packing", &grib_accessor_class_data_shsimple_packing}, -#line 60 "accessor_class_list.gperf" + {""}, +#line 61 "accessor_class_list.gperf" {"data_g1simple_packing", &grib_accessor_class_data_g1simple_packing}, -#line 53 "accessor_class_list.gperf" +#line 54 "accessor_class_list.gperf" {"data_g1complex_packing", &grib_accessor_class_data_g1complex_packing}, {""}, -#line 130 "accessor_class_list.gperf" +#line 131 "accessor_class_list.gperf" {"int32_little_endian", &grib_accessor_class_int32_little_endian}, {""}, {""}, -#line 177 "accessor_class_list.gperf" +#line 178 "accessor_class_list.gperf" {"round", &grib_accessor_class_round}, -#line 12 "accessor_class_list.gperf" - {"apply_operators", &grib_accessor_class_apply_operators}, - {""}, -#line 91 "accessor_class_list.gperf" + {""}, {""}, +#line 92 "accessor_class_list.gperf" {"g1date", &grib_accessor_class_g1date}, -#line 89 "accessor_class_list.gperf" - {"g1area", &grib_accessor_class_g1area}, #line 90 "accessor_class_list.gperf" + {"g1area", &grib_accessor_class_g1area}, +#line 91 "accessor_class_list.gperf" {"g1bitmap", &grib_accessor_class_g1bitmap}, -#line 121 "accessor_class_list.gperf" - {"gts_header", &grib_accessor_class_gts_header}, -#line 33 "accessor_class_list.gperf" - {"bytes", &grib_accessor_class_bytes}, - {""}, {""}, -#line 106 "accessor_class_list.gperf" + {""}, {""}, {""}, {""}, +#line 107 "accessor_class_list.gperf" {"g2bitmap_present", &grib_accessor_class_g2bitmap_present}, -#line 210 "accessor_class_list.gperf" +#line 211 "accessor_class_list.gperf" {"uint16", &grib_accessor_class_uint16}, - {""}, {""}, -#line 45 "accessor_class_list.gperf" +#line 227 "accessor_class_list.gperf" + {"when", &grib_accessor_class_when}, + {""}, +#line 46 "accessor_class_list.gperf" {"data_2order_packing", &grib_accessor_class_data_2order_packing}, -#line 84 "accessor_class_list.gperf" +#line 85 "accessor_class_list.gperf" {"forward", &grib_accessor_class_forward}, {""}, {""}, -#line 87 "accessor_class_list.gperf" +#line 88 "accessor_class_list.gperf" {"g1_message_length", &grib_accessor_class_g1_message_length}, {""}, -#line 88 "accessor_class_list.gperf" +#line 89 "accessor_class_list.gperf" {"g1_section4_length", &grib_accessor_class_g1_section4_length}, -#line 125 "accessor_class_list.gperf" +#line 126 "accessor_class_list.gperf" {"ieeefloat", &grib_accessor_class_ieeefloat}, -#line 223 "accessor_class_list.gperf" +#line 224 "accessor_class_list.gperf" {"values", &grib_accessor_class_values}, {""}, {""}, -#line 164 "accessor_class_list.gperf" +#line 165 "accessor_class_list.gperf" {"offset_file", &grib_accessor_class_offset_file}, -#line 44 "accessor_class_list.gperf" +#line 45 "accessor_class_list.gperf" {"count_total", &grib_accessor_class_count_total}, -#line 211 "accessor_class_list.gperf" +#line 212 "accessor_class_list.gperf" {"uint16_little_endian", &grib_accessor_class_uint16_little_endian}, -#line 221 "accessor_class_list.gperf" - {"validity_date", &grib_accessor_class_validity_date}, #line 222 "accessor_class_list.gperf" + {"validity_date", &grib_accessor_class_validity_date}, +#line 223 "accessor_class_list.gperf" {"validity_time", &grib_accessor_class_validity_time}, {""}, {""}, -#line 144 "accessor_class_list.gperf" +#line 145 "accessor_class_list.gperf" {"local_definition", &grib_accessor_class_local_definition}, {""}, #line 28 "accessor_class_list.gperf" {"bufr_extract_subsets", &grib_accessor_class_bufr_extract_subsets}, {""}, {""}, -#line 13 "accessor_class_list.gperf" - {"array", &grib_accessor_class_array}, +#line 74 "accessor_class_list.gperf" + {"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked}, #line 25 "accessor_class_list.gperf" {"bufr_elements_table", &grib_accessor_class_bufr_elements_table}, #line 26 "accessor_class_list.gperf" {"bufr_extract_area_subsets", &grib_accessor_class_bufr_extract_area_subsets}, - {""}, {""}, {""}, + {""}, {""}, +#line 75 "accessor_class_list.gperf" + {"data_shsimple_packing", &grib_accessor_class_data_shsimple_packing}, #line 27 "accessor_class_list.gperf" {"bufr_extract_datetime_subsets", &grib_accessor_class_bufr_extract_datetime_subsets}, -#line 204 "accessor_class_list.gperf" +#line 205 "accessor_class_list.gperf" {"to_double", &grib_accessor_class_to_double}, {""}, -#line 99 "accessor_class_list.gperf" +#line 100 "accessor_class_list.gperf" {"g1step_range", &grib_accessor_class_g1step_range}, {""}, -#line 123 "accessor_class_list.gperf" - {"headers_only", &grib_accessor_class_headers_only}, - {""}, -#line 72 "accessor_class_list.gperf" - {"data_sh_packed", &grib_accessor_class_data_sh_packed}, -#line 37 "accessor_class_list.gperf" +#line 144 "accessor_class_list.gperf" + {"library_version", &grib_accessor_class_library_version}, + {""}, {""}, +#line 38 "accessor_class_list.gperf" {"codetable", &grib_accessor_class_codetable}, {""}, -#line 58 "accessor_class_list.gperf" +#line 59 "accessor_class_list.gperf" {"data_g1secondary_bitmap", &grib_accessor_class_data_g1secondary_bitmap}, - {""}, {""}, {""}, {""}, {""}, -#line 38 "accessor_class_list.gperf" + {""}, +#line 122 "accessor_class_list.gperf" + {"gts_header", &grib_accessor_class_gts_header}, + {""}, {""}, {""}, +#line 39 "accessor_class_list.gperf" {"codetable_title", &grib_accessor_class_codetable_title}, {""}, {""}, {""}, {""}, {""}, -#line 56 "accessor_class_list.gperf" +#line 57 "accessor_class_list.gperf" {"data_g1second_order_general_packing", &grib_accessor_class_data_g1second_order_general_packing}, {""}, {""}, -#line 57 "accessor_class_list.gperf" +#line 58 "accessor_class_list.gperf" {"data_g1second_order_row_by_row_packing", &grib_accessor_class_data_g1second_order_row_by_row_packing}, -#line 165 "accessor_class_list.gperf" +#line 166 "accessor_class_list.gperf" {"offset_values", &grib_accessor_class_offset_values}, {""}, -#line 82 "accessor_class_list.gperf" +#line 83 "accessor_class_list.gperf" {"evaluate", &grib_accessor_class_evaluate}, -#line 54 "accessor_class_list.gperf" +#line 55 "accessor_class_list.gperf" {"data_g1second_order_constant_width_packing", &grib_accessor_class_data_g1second_order_constant_width_packing}, {""}, -#line 55 "accessor_class_list.gperf" +#line 56 "accessor_class_list.gperf" {"data_g1second_order_general_extended_packing", &grib_accessor_class_data_g1second_order_general_extended_packing}, {""}, {""}, #line 29 "accessor_class_list.gperf" {"bufr_group", &grib_accessor_class_bufr_group}, -#line 146 "accessor_class_list.gperf" +#line 147 "accessor_class_list.gperf" {"long_vector", &grib_accessor_class_long_vector}, -#line 218 "accessor_class_list.gperf" +#line 219 "accessor_class_list.gperf" {"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values}, -#line 141 "accessor_class_list.gperf" +#line 142 "accessor_class_list.gperf" {"latlon_increment", &grib_accessor_class_latlon_increment}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 166 "accessor_class_list.gperf" +#line 167 "accessor_class_list.gperf" {"pack_bufr_values", &grib_accessor_class_pack_bufr_values}, {""}, -#line 224 "accessor_class_list.gperf" - {"variable", &grib_accessor_class_variable}, -#line 160 "accessor_class_list.gperf" - {"number_of_values", &grib_accessor_class_number_of_values}, -#line 126 "accessor_class_list.gperf" - {"ifs_param", &grib_accessor_class_ifs_param}, #line 225 "accessor_class_list.gperf" + {"variable", &grib_accessor_class_variable}, +#line 161 "accessor_class_list.gperf" + {"number_of_values", &grib_accessor_class_number_of_values}, +#line 127 "accessor_class_list.gperf" + {"ifs_param", &grib_accessor_class_ifs_param}, +#line 226 "accessor_class_list.gperf" {"vector", &grib_accessor_class_vector}, -#line 36 "accessor_class_list.gperf" +#line 37 "accessor_class_list.gperf" {"codeflag", &grib_accessor_class_codeflag}, {""}, -#line 151 "accessor_class_list.gperf" - {"md5", &grib_accessor_class_md5}, - {""}, -#line 42 "accessor_class_list.gperf" - {"count_file", &grib_accessor_class_count_file}, -#line 122 "accessor_class_list.gperf" - {"hash_array", &grib_accessor_class_hash_array}, - {""}, {""}, -#line 39 "accessor_class_list.gperf" - {"codetable_units", &grib_accessor_class_codetable_units}, -#line 149 "accessor_class_list.gperf" - {"mars_param", &grib_accessor_class_mars_param}, -#line 150 "accessor_class_list.gperf" - {"mars_step", &grib_accessor_class_mars_step}, -#line 93 "accessor_class_list.gperf" - {"g1end_of_interval_monthly", &grib_accessor_class_g1end_of_interval_monthly}, #line 152 "accessor_class_list.gperf" + {"md5", &grib_accessor_class_md5}, +#line 124 "accessor_class_list.gperf" + {"headers_only", &grib_accessor_class_headers_only}, +#line 43 "accessor_class_list.gperf" + {"count_file", &grib_accessor_class_count_file}, +#line 73 "accessor_class_list.gperf" + {"data_sh_packed", &grib_accessor_class_data_sh_packed}, + {""}, {""}, +#line 40 "accessor_class_list.gperf" + {"codetable_units", &grib_accessor_class_codetable_units}, +#line 150 "accessor_class_list.gperf" + {"mars_param", &grib_accessor_class_mars_param}, +#line 151 "accessor_class_list.gperf" + {"mars_step", &grib_accessor_class_mars_step}, +#line 94 "accessor_class_list.gperf" + {"g1end_of_interval_monthly", &grib_accessor_class_g1end_of_interval_monthly}, +#line 153 "accessor_class_list.gperf" {"message", &grib_accessor_class_message}, -#line 170 "accessor_class_list.gperf" +#line 171 "accessor_class_list.gperf" {"padtoeven", &grib_accessor_class_padtoeven}, -#line 161 "accessor_class_list.gperf" +#line 162 "accessor_class_list.gperf" {"number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing}, -#line 137 "accessor_class_list.gperf" +#line 138 "accessor_class_list.gperf" {"ksec1expver", &grib_accessor_class_ksec1expver}, - {""}, -#line 34 "accessor_class_list.gperf" - {"change_scanning_direction", &grib_accessor_class_change_scanning_direction}, -#line 179 "accessor_class_list.gperf" + {""}, {""}, +#line 180 "accessor_class_list.gperf" {"scale_values", &grib_accessor_class_scale_values}, {""}, -#line 191 "accessor_class_list.gperf" +#line 192 "accessor_class_list.gperf" {"smart_table", &grib_accessor_class_smart_table}, - {""}, {""}, -#line 143 "accessor_class_list.gperf" - {"library_version", &grib_accessor_class_library_version}, + {""}, {""}, {""}, #line 11 "accessor_class_list.gperf" {"abstract_vector", &grib_accessor_class_abstract_vector}, {""}, {""}, -#line 192 "accessor_class_list.gperf" +#line 193 "accessor_class_list.gperf" {"smart_table_column", &grib_accessor_class_smart_table_column}, {""}, {""}, {""}, -#line 153 "accessor_class_list.gperf" +#line 154 "accessor_class_list.gperf" {"message_copy", &grib_accessor_class_message_copy}, -#line 162 "accessor_class_list.gperf" - {"octahedral_gaussian", &grib_accessor_class_octahedral_gaussian}, - {""}, {""}, {""}, {""}, -#line 163 "accessor_class_list.gperf" + {""}, {""}, {""}, {""}, {""}, +#line 164 "accessor_class_list.gperf" {"octect_number", &grib_accessor_class_octect_number}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 154 "accessor_class_list.gperf" +#line 155 "accessor_class_list.gperf" {"missing", &grib_accessor_class_missing}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 94 "accessor_class_list.gperf" +#line 123 "accessor_class_list.gperf" + {"hash_array", &grib_accessor_class_hash_array}, + {""}, +#line 95 "accessor_class_list.gperf" {"g1fcperiod", &grib_accessor_class_g1fcperiod}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 111 "accessor_class_list.gperf" - {"g2level", &grib_accessor_class_g2level}, {""}, {""}, {""}, {""}, -#line 86 "accessor_class_list.gperf" +#line 34 "accessor_class_list.gperf" + {"change_alternative_row_scanning", &grib_accessor_class_change_alternative_row_scanning}, + {""}, +#line 112 "accessor_class_list.gperf" + {"g2level", &grib_accessor_class_g2level}, + {""}, {""}, +#line 35 "accessor_class_list.gperf" + {"change_scanning_direction", &grib_accessor_class_change_scanning_direction}, + {""}, +#line 87 "accessor_class_list.gperf" {"g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag}, {""}, {""}, {""}, {""}, {""}, -#line 142 "accessor_class_list.gperf" +#line 143 "accessor_class_list.gperf" {"latlonvalues", &grib_accessor_class_latlonvalues}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 85 "accessor_class_list.gperf" + {""}, {""}, {""}, {""}, {""}, {""}, +#line 163 "accessor_class_list.gperf" + {"octahedral_gaussian", &grib_accessor_class_octahedral_gaussian}, +#line 86 "accessor_class_list.gperf" {"from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 76 "accessor_class_list.gperf" +#line 77 "accessor_class_list.gperf" {"decimal_precision", &grib_accessor_class_decimal_precision}, - {""}, -#line 96 "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 35 "accessor_class_list.gperf" - {"check_internal_version", &grib_accessor_class_check_internal_version}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 43 "accessor_class_list.gperf" +#line 97 "accessor_class_list.gperf" + {"g1monthlydate", &grib_accessor_class_g1monthlydate}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 36 "accessor_class_list.gperf" + {"check_internal_version", &grib_accessor_class_check_internal_version}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 44 "accessor_class_list.gperf" {"count_missing", &grib_accessor_class_count_missing}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 100 "accessor_class_list.gperf" +#line 101 "accessor_class_list.gperf" {"g1verificationdate", &grib_accessor_class_g1verificationdate}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 176 "accessor_class_list.gperf" +#line 177 "accessor_class_list.gperf" {"reference_value_error", &grib_accessor_class_reference_value_error}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 92 "accessor_class_list.gperf" +#line 93 "accessor_class_list.gperf" {"g1day_of_the_year_date", &grib_accessor_class_g1day_of_the_year_date}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 102 "accessor_class_list.gperf" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 103 "accessor_class_list.gperf" {"g2_chemical", &grib_accessor_class_g2_chemical}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 98 "accessor_class_list.gperf" + {""}, {""}, +#line 99 "accessor_class_list.gperf" {"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple}, -#line 97 "accessor_class_list.gperf" +#line 98 "accessor_class_list.gperf" {"g1number_of_coded_values_sh_complex", &grib_accessor_class_g1number_of_coded_values_sh_complex}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 95 "accessor_class_list.gperf" +#line 96 "accessor_class_list.gperf" {"g1forecastmonth", &grib_accessor_class_g1forecastmonth} }; diff --git a/src/grib_accessor_factory.h b/src/grib_accessor_factory.h index 8537254f6..1b450ef60 100644 --- a/src/grib_accessor_factory.h +++ b/src/grib_accessor_factory.h @@ -23,6 +23,7 @@ { "bufr_string_values", &grib_accessor_class_bufr_string_values, }, { "bufrdc_expanded_descriptors", &grib_accessor_class_bufrdc_expanded_descriptors, }, { "bytes", &grib_accessor_class_bytes, }, +{ "change_alternative_row_scanning", &grib_accessor_class_change_alternative_row_scanning, }, { "change_scanning_direction", &grib_accessor_class_change_scanning_direction, }, { "check_internal_version", &grib_accessor_class_check_internal_version, }, { "codeflag", &grib_accessor_class_codeflag, }, diff --git a/src/grib_accessor_factory_hash_list b/src/grib_accessor_factory_hash_list index c08be8c66..ce22241a7 100644 --- a/src/grib_accessor_factory_hash_list +++ b/src/grib_accessor_factory_hash_list @@ -24,6 +24,7 @@ bufr_simple_thinning, &grib_accessor_class_bufr_simple_thinning bufr_string_values, &grib_accessor_class_bufr_string_values bufrdc_expanded_descriptors, &grib_accessor_class_bufrdc_expanded_descriptors bytes, &grib_accessor_class_bytes +change_alternative_row_scanning, &grib_accessor_class_change_alternative_row_scanning change_scanning_direction, &grib_accessor_class_change_scanning_direction check_internal_version, &grib_accessor_class_check_internal_version codeflag, &grib_accessor_class_codeflag diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index 67c7dfaac..f0752939d 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -347,6 +347,8 @@ void grib_update_paddings(grib_section* s); /* grib_accessor_class_change_scanning_direction.c */ +/* grib_accessor_class_change_scanning_direction.c */ + /* grib_accessor_class_check_internal_version.c */ /* grib_accessor_class_codeflag.c */ diff --git a/windows/msvc/grib_api_lib/grib_api_lib.vcxproj b/windows/msvc/grib_api_lib/grib_api_lib.vcxproj index 3ced87263..0a4d381c2 100755 --- a/windows/msvc/grib_api_lib/grib_api_lib.vcxproj +++ b/windows/msvc/grib_api_lib/grib_api_lib.vcxproj @@ -224,6 +224,7 @@ +