From 32f76467896d739affce8b0573d995c1e1cf74ab Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 17 Apr 2020 17:06:37 +0100 Subject: [PATCH 1/8] Memory leak: smart table --- src/grib_accessor_class_smart_table.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/grib_accessor_class_smart_table.c b/src/grib_accessor_class_smart_table.c index 099c20624..70fa29a6e 100644 --- a/src/grib_accessor_class_smart_table.c +++ b/src/grib_accessor_class_smart_table.c @@ -380,6 +380,8 @@ static int grib_load_smart_table(grib_context* c, const char* filename, numberOfColumns = 0; while (*s) { + char* tcol = t->entries[code].column[numberOfColumns]; + if ( tcol ) grib_context_free_persistent(c, tcol); t->entries[code].column[numberOfColumns] = grib_context_strdup_persistent(c, s); numberOfColumns++; Assert(numberOfColumns < MAX_SMART_TABLE_COLUMNS); From ead17c58e4dfdecd622bcc6af69f601fc1b402ca Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 17 Apr 2020 18:09:52 +0100 Subject: [PATCH 2/8] Memory leak: BUFR --- src/grib_accessor_class_bufr_data_array.c | 2 ++ src/grib_dumper_class_bufr_decode_filter.c | 4 +++- src/grib_dumper_class_bufr_decode_fortran.c | 4 +++- tests/bufr_threads_ecc-604.c | 1 + tools/bufr_compare.c | 4 +++- 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c index 61951fb12..f5eb2caf7 100644 --- a/src/grib_accessor_class_bufr_data_array.c +++ b/src/grib_accessor_class_bufr_data_array.c @@ -543,6 +543,7 @@ static int get_descriptors(grib_accessor* a) return ret; numberOfDescriptors = grib_bufr_descriptors_array_used_size(self->expanded); + if (self->canBeMissing ) grib_context_free(c, self->canBeMissing); self->canBeMissing = (int*)grib_context_malloc_clear(c, numberOfDescriptors * sizeof(int)); for (i = 0; i < numberOfDescriptors; i++) self->canBeMissing[i] = grib_bufr_descriptor_can_be_missing(self->expanded->v[i]); @@ -860,6 +861,7 @@ static int encode_double_array(grib_context* c, grib_buffer* buff, long* pos, bu } grib_buffer_set_ulength_bits(c, buff, buff->ulength_bits + 6); grib_encode_unsigned_longb(buff->data, localWidth, pos, 6); + grib_context_free(c, values); return err; } diff --git a/src/grib_dumper_class_bufr_decode_filter.c b/src/grib_dumper_class_bufr_decode_filter.c index 1dcd76876..45831464d 100644 --- a/src/grib_dumper_class_bufr_decode_filter.c +++ b/src/grib_dumper_class_bufr_decode_filter.c @@ -491,8 +491,10 @@ static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment) err = grib_unpack_string(a, value, &size); p = value; r = compute_bufr_key_rank(h, self->keys, a->name); - if (grib_is_missing_string(a, (unsigned char*)value, size)) + if (grib_is_missing_string(a, (unsigned char*)value, size)) { + grib_context_free(c, value); return; + } while (*p) { if (!isprint(*p)) diff --git a/src/grib_dumper_class_bufr_decode_fortran.c b/src/grib_dumper_class_bufr_decode_fortran.c index 70306d7ed..f62642d62 100644 --- a/src/grib_dumper_class_bufr_decode_fortran.c +++ b/src/grib_dumper_class_bufr_decode_fortran.c @@ -517,8 +517,10 @@ static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment) err = grib_unpack_string(a, value, &size); p = value; r = compute_bufr_key_rank(h, self->keys, a->name); - if (grib_is_missing_string(a, (unsigned char*)value, size)) + if (grib_is_missing_string(a, (unsigned char*)value, size)) { + grib_context_free(c, value); return; + } while (*p) { if (!isprint(*p)) diff --git a/tests/bufr_threads_ecc-604.c b/tests/bufr_threads_ecc-604.c index 64a181284..311fa967c 100644 --- a/tests/bufr_threads_ecc-604.c +++ b/tests/bufr_threads_ecc-604.c @@ -160,6 +160,7 @@ int main(int argc, char** argv) void* runner(void* ptr) { do_stuff(ptr); + free(ptr); pthread_exit(0); } diff --git a/tools/bufr_compare.c b/tools/bufr_compare.c index 8c2cae0de..2d023cb2b 100644 --- a/tools/bufr_compare.c +++ b/tools/bufr_compare.c @@ -1296,8 +1296,10 @@ static int compare_all_dump_keys(grib_handle* handle1, grib_handle* handle2, gri prefix = (char*)xa->name; } - if (blacklisted(prefix)) + if (blacklisted(prefix)) { + if (dofree) grib_context_free(context, prefix); continue; + } /* Compare the key itself */ if (compare_values(options, handle1, handle2, prefix, GRIB_TYPE_UNDEFINED)) { From 4bc134ec2f81415ac4c980953ffdca515b92b045 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 17 Apr 2020 19:10:32 +0100 Subject: [PATCH 3/8] Memory leak: BUFR --- src/grib_dumper_class_bufr_decode_python.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/grib_dumper_class_bufr_decode_python.c b/src/grib_dumper_class_bufr_decode_python.c index 151b85a9f..d50c11a27 100644 --- a/src/grib_dumper_class_bufr_decode_python.c +++ b/src/grib_dumper_class_bufr_decode_python.c @@ -530,8 +530,10 @@ static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment) err = grib_unpack_string(a, value, &size); p = value; r = compute_bufr_key_rank(h, self->keys, a->name); - if (grib_is_missing_string(a, (unsigned char*)value, size)) + if (grib_is_missing_string(a, (unsigned char*)value, size)) { + grib_context_free(c, value); return; + } while (*p) { if (!isprint(*p)) From a9ae4a88aa3680bbf7eb22a1cebdec16cbe5d445 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 21 Apr 2020 15:16:08 +0100 Subject: [PATCH 4/8] ECC-1053: Add ability to get forecast step in human-readable format --- src/eccodes.h | 3 +++ src/grib_api_prototypes.h | 1 + src/grib_util.c | 41 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/src/eccodes.h b/src/eccodes.h index a310dbbfb..a7b336703 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1281,6 +1281,9 @@ codes_handle* codes_grib_util_set_spec(codes_handle* h, int codes_bufr_extract_headers_malloc(codes_context* c, const char* filename, codes_bufr_header** result, int* num_messages, int strict_mode); int codes_bufr_header_get_string(codes_bufr_header* bh, const char* key, char* val, size_t* len); + +int codes_get_step_human_readable(codes_handle* h, char* result, size_t* length); + /* --------------------------------------- */ #ifdef __cplusplus } diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index 66c569132..ed54edb6e 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -1468,6 +1468,7 @@ int path_is_directory(const char* filename); char* codes_getenv(const char* name); /* grib_util.c */ +int codes_get_step_human_readable(grib_handle* h, char* result, size_t* length); grib_handle* grib_util_sections_copy(grib_handle* hfrom, grib_handle* hto, int what, int* err); grib_string_list* grib_util_get_param_id(const char* mars_param); grib_string_list* grib_util_get_mars_param(const char* param_id); diff --git a/src/grib_util.c b/src/grib_util.c index 744e826e6..eca9cb3d2 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -18,6 +18,47 @@ typedef enum eROUND_ANGLE_DOWN } RoundingPolicy; +int codes_get_step_human_readable(grib_handle* h, char* result, size_t* length) +{ + long stepUnits, step, hour, minute, second; + int err = 0; + size_t slen; + //char step_str[32] = "unknown"; + + err = grib_get_long(h, "stepUnits", &stepUnits); + if (err) return err; + // now set it to seconds + slen = 2; + err = grib_set_string(h, "stepUnits", "s", &slen); + if (err) return err; + //slen = 32; + //err = grib_get_string(h, "step", step_str, &slen); + //if (err) return err; + err = grib_get_long(h, "step", &step); + if (err) return err; + + hour = step/3600; + minute = step/60 % 60; + second = step % 60; + //sprintf(result, "%ld:%ld:%ld", hour, minute, second); + + if (second) { + sprintf(result, "%ldh %ldm %lds", hour, minute, second); + } else { + if (minute) sprintf(result, "%ldh %ldm", hour, minute); + else sprintf(result, "%ldh", hour); + } + + *length = strlen(result); + + // Restore + err = grib_set_long(h, "stepUnits", stepUnits); + if (err) return err; + + return GRIB_SUCCESS; +} + + static void set_total_length(unsigned char* buffer, long* section_length, long* section_offset, int edition, size_t totalLength) { long off; From 5762054216dbaf8e966f60f95db893a86bb5fe50 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 21 Apr 2020 17:57:14 +0100 Subject: [PATCH 5/8] ECC-1053: Add key --- definitions/grib1/section.1.def | 1 + .../grib2/template.4.point_in_time.def | 1 + src/CMakeLists.txt | 1 + src/grib_accessor_class.h | 1 + src/grib_accessor_class_step_human_readable.c | 189 ++++ src/grib_accessor_classes_hash.c | 942 +++++++++--------- src/grib_accessor_factory.h | 1 + src/grib_accessor_factory_hash_list | 1 + src/grib_hash_keys.c | 599 +++++------ src/grib_util.c | 6 +- tests/keys | 593 +++++------ 11 files changed, 1268 insertions(+), 1067 deletions(-) create mode 100644 src/grib_accessor_class_step_human_readable.c diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index 9b042aae9..f36c63cad 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -210,6 +210,7 @@ _if (stepType is "instant" ) { meta stepRange g1step_range(P1,P2,timeRangeIndicator,unitOfTimeRange,stepUnits,stepType) : dump; meta startStep long_vector(stepRange,0) : dump,no_copy; meta endStep long_vector(stepRange,1) : dump,no_copy; +meta stepHuman step_human_readable(stepRange): hidden, no_copy; alias stepInHours = endStep; alias ls.stepRange = stepRange; diff --git a/definitions/grib2/template.4.point_in_time.def b/definitions/grib2/template.4.point_in_time.def index 649c338c4..6747bdbe7 100644 --- a/definitions/grib2/template.4.point_in_time.def +++ b/definitions/grib2/template.4.point_in_time.def @@ -16,6 +16,7 @@ alias ls.stepRange=stepRange; concept stepTypeInternal { "instant" = {dummy=1;} } +meta stepHuman step_human_readable(stepRange): hidden, no_copy; alias time.stepType=stepType; alias time.stepRange=stepRange; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2c5e6661c..edd333ed1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -96,6 +96,7 @@ list( APPEND grib_api_srcs grib_accessor_class_codetable.c grib_accessor_class_codetable_units.c grib_accessor_class_codetable_title.c + grib_accessor_class_step_human_readable.c grib_accessor_class_count_file.c grib_accessor_class_count_total.c grib_accessor_class_double.c diff --git a/src/grib_accessor_class.h b/src/grib_accessor_class.h index bca97bebd..51bcd634d 100644 --- a/src/grib_accessor_class.h +++ b/src/grib_accessor_class.h @@ -196,6 +196,7 @@ extern grib_accessor_class* grib_accessor_class_spectral_truncation; extern grib_accessor_class* grib_accessor_class_sprintf; extern grib_accessor_class* grib_accessor_class_statistics; extern grib_accessor_class* grib_accessor_class_statistics_spectral; +extern grib_accessor_class* grib_accessor_class_step_human_readable; extern grib_accessor_class* grib_accessor_class_step_in_units; extern grib_accessor_class* grib_accessor_class_sum; extern grib_accessor_class* grib_accessor_class_suppressed; diff --git a/src/grib_accessor_class_step_human_readable.c b/src/grib_accessor_class_step_human_readable.c new file mode 100644 index 000000000..4572ebc97 --- /dev/null +++ b/src/grib_accessor_class_step_human_readable.c @@ -0,0 +1,189 @@ +/* + * (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 = init;unpack_string; get_native_type + MEMBERS = const char* time + 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 unpack_string(grib_accessor*, char*, size_t* len); +static void init(grib_accessor*, const long, grib_arguments*); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_step_human_readable +{ + grib_accessor att; + /* Members defined in gen */ + /* Members defined in step_human_readable */ + const char* time; +} grib_accessor_step_human_readable; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_step_human_readable = { + &grib_accessor_class_gen, /* super */ + "step_human_readable", /* name */ + sizeof(grib_accessor_step_human_readable), /* 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 */ + 0, /* grib_pack procedures long */ + 0, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + &unpack_string, /* 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_step_human_readable = &_grib_accessor_class_step_human_readable; + + +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_long = (*(c->super))->pack_long; + c->unpack_long = (*(c->super))->unpack_long; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_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* params) +{ + grib_accessor_step_human_readable* self = (grib_accessor_step_human_readable*)a; + int n = 0; + self->time = grib_arguments_get_name(grib_handle_of_accessor(a), params, n++); + a->length = 0; + a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; +} + +static int get_native_type(grib_accessor* a) +{ + return GRIB_TYPE_STRING; +} + +static int unpack_string(grib_accessor* a, char* buffer, size_t* len) +{ + /*grib_accessor_step_human_readable* self = (grib_accessor_step_human_readable*)a;*/ + grib_handle* h = grib_handle_of_accessor(a); + int err = codes_get_step_human_readable(h, buffer, len); +#if 0 + grib_codetable* table = NULL; + + size_t size = 1; + long value; + int err = GRIB_SUCCESS; + char tmp[1024]; + size_t l = 1024; + grib_accessor_codetable* ca = (grib_accessor_codetable*)grib_find_accessor(grib_handle_of_accessor(a), self->codetable); + + if ((err = grib_unpack_long((grib_accessor*)ca, &value, &size)) != GRIB_SUCCESS) + return err; + + table = ca->table; + + if (table && (value >= 0) && (value < table->size) && table->entries[value].title) { + strcpy(tmp, table->entries[value].title); + } + else { +#if 1 + sprintf(tmp, "%d", (int)value); +#else + return GRIB_DECODING_ERROR; +#endif + } + + l = strlen(tmp) + 1; + + if (*len < l) { + *len = l; + return GRIB_BUFFER_TOO_SMALL; + } + + strcpy(buffer, tmp); + *len = l; +#endif + return err; +} diff --git a/src/grib_accessor_classes_hash.c b/src/grib_accessor_classes_hash.c index 0d094e8e2..edda41eea 100644 --- a/src/grib_accessor_classes_hash.c +++ b/src/grib_accessor_classes_hash.c @@ -37,12 +37,12 @@ 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 224 +#define TOTAL_KEYWORDS 225 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 44 #define MIN_HASH_VALUE 1 -#define MAX_HASH_VALUE 586 -/* maximum key range = 586, duplicates = 0 */ +#define MAX_HASH_VALUE 621 +/* maximum key range = 621, duplicates = 0 */ #ifdef __GNUC__ @@ -56,32 +56,32 @@ grib_accessor_classes_get_id (const char *str, unsigned int len) { static const unsigned short asso_values[] = { - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 0, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 2, 44, - 14, 14, 9, 587, 0, 587, 11, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 0, 587, 0, 104, 46, - 0, 0, 173, 29, 252, 1, 9, 3, 88, 155, - 13, 63, 20, 587, 196, 1, 53, 73, 160, 1, - 6, 5, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587 + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 0, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 1, 60, + 18, 2, 5, 622, 27, 622, 1, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 0, 622, 0, 121, 127, + 0, 3, 192, 28, 0, 1, 1, 5, 119, 244, + 14, 64, 55, 622, 147, 3, 2, 93, 158, 0, + 2, 145, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622 }; register int hval = len; @@ -117,565 +117,573 @@ static const struct accessor_class_hash classes[] = {""}, #line 9 "accessor_class_list.gperf" {" "}, - {""}, {""}, {""}, {""}, + {""}, {""}, +#line 233 "accessor_class_list.gperf" + {"when", &grib_accessor_class_when}, + {""}, {""}, +#line 210 "accessor_class_list.gperf" + {"time", &grib_accessor_class_time}, #line 198 "accessor_class_list.gperf" {"size", &grib_accessor_class_size}, #line 14 "accessor_class_list.gperf" {"ascii", &grib_accessor_class_ascii}, + {""}, +#line 211 "accessor_class_list.gperf" + {"times", &grib_accessor_class_times}, + {""}, #line 195 "accessor_class_list.gperf" {"signed", &grib_accessor_class_signed}, {""}, {""}, -#line 83 "accessor_class_list.gperf" - {"dirty", &grib_accessor_class_dirty}, - {""}, {""}, -#line 196 "accessor_class_list.gperf" - {"signed_bits", &grib_accessor_class_signed_bits}, - {""}, #line 75 "accessor_class_list.gperf" {"data_raw_packing", &grib_accessor_class_data_raw_packing}, {""}, +#line 204 "accessor_class_list.gperf" + {"statistics", &grib_accessor_class_statistics}, #line 142 "accessor_class_list.gperf" {"int8", &grib_accessor_class_int8}, -#line 136 "accessor_class_list.gperf" - {"int16", &grib_accessor_class_int16}, + {""}, +#line 196 "accessor_class_list.gperf" + {"signed_bits", &grib_accessor_class_signed_bits}, + {""}, #line 80 "accessor_class_list.gperf" {"data_simple_packing", &grib_accessor_class_data_simple_packing}, #line 76 "accessor_class_list.gperf" {"data_secondary_bitmap", &grib_accessor_class_data_secondary_bitmap}, -#line 189 "accessor_class_list.gperf" - {"section", &grib_accessor_class_section}, -#line 176 "accessor_class_list.gperf" - {"pad", &grib_accessor_class_pad}, -#line 201 "accessor_class_list.gperf" - {"spd", &grib_accessor_class_spd}, -#line 82 "accessor_class_list.gperf" - {"dictionary", &grib_accessor_class_dictionary}, - {""}, {""}, #line 140 "accessor_class_list.gperf" {"int64", &grib_accessor_class_int64}, +#line 82 "accessor_class_list.gperf" + {"dictionary", &grib_accessor_class_dictionary}, +#line 205 "accessor_class_list.gperf" + {"statistics_spectral", &grib_accessor_class_statistics_spectral}, +#line 189 "accessor_class_list.gperf" + {"section", &grib_accessor_class_section}, +#line 164 "accessor_class_list.gperf" + {"nearest", &grib_accessor_class_nearest}, #line 74 "accessor_class_list.gperf" {"data_png_packing", &grib_accessor_class_data_png_packing}, + {""}, {""}, +#line 207 "accessor_class_list.gperf" + {"step_in_units", &grib_accessor_class_step_in_units}, +#line 126 "accessor_class_list.gperf" + {"gen", &grib_accessor_class_gen}, + {""}, #line 191 "accessor_class_list.gperf" {"section_padding", &grib_accessor_class_section_padding}, #line 192 "accessor_class_list.gperf" {"section_pointer", &grib_accessor_class_section_pointer}, -#line 126 "accessor_class_list.gperf" - {"gen", &grib_accessor_class_gen}, #line 138 "accessor_class_list.gperf" {"int32", &grib_accessor_class_int32}, - {""}, #line 66 "accessor_class_list.gperf" {"data_g22order_packing", &grib_accessor_class_data_g22order_packing}, +#line 130 "accessor_class_list.gperf" + {"gts_header", &grib_accessor_class_gts_header}, {""}, -#line 50 "accessor_class_list.gperf" - {"data_apply_bitmap", &grib_accessor_class_data_apply_bitmap}, #line 70 "accessor_class_list.gperf" {"data_g2shsimple_packing", &grib_accessor_class_data_g2shsimple_packing}, + {""}, {""}, #line 88 "accessor_class_list.gperf" {"expanded_descriptors", &grib_accessor_class_expanded_descriptors}, - {""}, -#line 188 "accessor_class_list.gperf" - {"second_order_bits_per_value", &grib_accessor_class_second_order_bits_per_value}, -#line 190 "accessor_class_list.gperf" - {"section_length", &grib_accessor_class_section_length}, -#line 73 "accessor_class_list.gperf" - {"data_jpeg2000_packing", &grib_accessor_class_data_jpeg2000_packing}, -#line 53 "accessor_class_list.gperf" - {"data_apply_gdsnotpresent", &grib_accessor_class_data_apply_gdsnotpresent}, #line 124 "accessor_class_list.gperf" {"gds_is_present", &grib_accessor_class_gds_is_present}, +#line 136 "accessor_class_list.gperf" + {"int16", &grib_accessor_class_int16}, + {""}, +#line 190 "accessor_class_list.gperf" + {"section_length", &grib_accessor_class_section_length}, +#line 188 "accessor_class_list.gperf" + {"second_order_bits_per_value", &grib_accessor_class_second_order_bits_per_value}, +#line 127 "accessor_class_list.gperf" + {"getenv", &grib_accessor_class_getenv}, + {""}, +#line 117 "accessor_class_list.gperf" + {"g2grid", &grib_accessor_class_g2grid}, +#line 115 "accessor_class_list.gperf" + {"g2date", &grib_accessor_class_g2date}, +#line 121 "accessor_class_list.gperf" + {"g2step", &grib_accessor_class_g2step}, +#line 113 "accessor_class_list.gperf" + {"g2bitmap", &grib_accessor_class_g2bitmap}, + {""}, +#line 176 "accessor_class_list.gperf" + {"pad", &grib_accessor_class_pad}, +#line 116 "accessor_class_list.gperf" + {"g2end_step", &grib_accessor_class_g2end_step}, + {""}, +#line 201 "accessor_class_list.gperf" + {"spd", &grib_accessor_class_spd}, + {""}, {""}, {""}, +#line 120 "accessor_class_list.gperf" + {"g2lon", &grib_accessor_class_g2lon}, + {""}, {""}, {""}, +#line 125 "accessor_class_list.gperf" + {"gds_not_present_bitmap", &grib_accessor_class_gds_not_present_bitmap}, + {""}, +#line 78 "accessor_class_list.gperf" + {"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked}, +#line 50 "accessor_class_list.gperf" + {"data_apply_bitmap", &grib_accessor_class_data_apply_bitmap}, + {""}, {""}, +#line 143 "accessor_class_list.gperf" + {"iterator", &grib_accessor_class_iterator}, +#line 79 "accessor_class_list.gperf" + {"data_shsimple_packing", &grib_accessor_class_data_shsimple_packing}, +#line 73 "accessor_class_list.gperf" + {"data_jpeg2000_packing", &grib_accessor_class_data_jpeg2000_packing}, +#line 214 "accessor_class_list.gperf" + {"to_string", &grib_accessor_class_to_string}, +#line 53 "accessor_class_list.gperf" + {"data_apply_gdsnotpresent", &grib_accessor_class_data_apply_gdsnotpresent}, + {""}, #line 51 "accessor_class_list.gperf" {"data_apply_boustrophedonic", &grib_accessor_class_data_apply_boustrophedonic}, {""}, -#line 127 "accessor_class_list.gperf" - {"getenv", &grib_accessor_class_getenv}, -#line 121 "accessor_class_list.gperf" - {"g2step", &grib_accessor_class_g2step}, -#line 117 "accessor_class_list.gperf" - {"g2grid", &grib_accessor_class_g2grid}, - {""}, -#line 186 "accessor_class_list.gperf" - {"scale", &grib_accessor_class_scale}, +#line 56 "accessor_class_list.gperf" + {"data_constant_field", &grib_accessor_class_data_constant_field}, +#line 64 "accessor_class_list.gperf" + {"data_g1shsimple_packing", &grib_accessor_class_data_g1shsimple_packing}, + {""}, {""}, +#line 55 "accessor_class_list.gperf" + {"data_complex_packing", &grib_accessor_class_data_complex_packing}, #line 52 "accessor_class_list.gperf" {"data_apply_boustrophedonic_bitmap", &grib_accessor_class_data_apply_boustrophedonic_bitmap}, -#line 116 "accessor_class_list.gperf" - {"g2end_step", &grib_accessor_class_g2end_step}, +#line 122 "accessor_class_list.gperf" + {"g2step_range", &grib_accessor_class_g2step_range}, + {""}, +#line 177 "accessor_class_list.gperf" + {"padding", &grib_accessor_class_padding}, + {""}, +#line 213 "accessor_class_list.gperf" + {"to_integer", &grib_accessor_class_to_integer}, #line 71 "accessor_class_list.gperf" {"data_g2simple_packing", &grib_accessor_class_data_g2simple_packing}, #line 68 "accessor_class_list.gperf" {"data_g2complex_packing", &grib_accessor_class_data_g2complex_packing}, -#line 177 "accessor_class_list.gperf" - {"padding", &grib_accessor_class_padding}, -#line 209 "accessor_class_list.gperf" - {"time", &grib_accessor_class_time}, - {""}, -#line 210 "accessor_class_list.gperf" - {"times", &grib_accessor_class_times}, -#line 120 "accessor_class_list.gperf" - {"g2lon", &grib_accessor_class_g2lon}, - {""}, {""}, -#line 54 "accessor_class_list.gperf" - {"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing}, - {""}, {""}, {""}, -#line 64 "accessor_class_list.gperf" - {"data_g1shsimple_packing", &grib_accessor_class_data_g1shsimple_packing}, -#line 111 "accessor_class_list.gperf" - {"g2_eps", &grib_accessor_class_g2_eps}, - {""}, {""}, {""}, -#line 164 "accessor_class_list.gperf" - {"nearest", &grib_accessor_class_nearest}, -#line 72 "accessor_class_list.gperf" - {"data_g2simple_packing_with_preprocessing", &grib_accessor_class_data_g2simple_packing_with_preprocessing}, - {""}, {""}, -#line 207 "accessor_class_list.gperf" - {"sum", &grib_accessor_class_sum}, - {""}, +#line 97 "accessor_class_list.gperf" + {"g1date", &grib_accessor_class_g1date}, #line 95 "accessor_class_list.gperf" {"g1area", &grib_accessor_class_g1area}, -#line 220 "accessor_class_list.gperf" - {"uint64", &grib_accessor_class_uint64}, -#line 206 "accessor_class_list.gperf" - {"step_in_units", &grib_accessor_class_step_in_units}, -#line 56 "accessor_class_list.gperf" - {"data_constant_field", &grib_accessor_class_data_constant_field}, -#line 55 "accessor_class_list.gperf" - {"data_complex_packing", &grib_accessor_class_data_complex_packing}, -#line 122 "accessor_class_list.gperf" - {"g2step_range", &grib_accessor_class_g2step_range}, -#line 65 "accessor_class_list.gperf" - {"data_g1simple_packing", &grib_accessor_class_data_g1simple_packing}, -#line 58 "accessor_class_list.gperf" - {"data_g1complex_packing", &grib_accessor_class_data_g1complex_packing}, -#line 193 "accessor_class_list.gperf" - {"select_step_template", &grib_accessor_class_select_step_template}, -#line 178 "accessor_class_list.gperf" - {"padto", &grib_accessor_class_padto}, -#line 57 "accessor_class_list.gperf" - {"data_dummy_field", &grib_accessor_class_data_dummy_field}, -#line 222 "accessor_class_list.gperf" +#line 96 "accessor_class_list.gperf" + {"g1bitmap", &grib_accessor_class_g1bitmap}, +#line 208 "accessor_class_list.gperf" + {"sum", &grib_accessor_class_sum}, +#line 223 "accessor_class_list.gperf" {"uint8", &grib_accessor_class_uint8}, -#line 93 "accessor_class_list.gperf" - {"g1_message_length", &grib_accessor_class_g1_message_length}, + {""}, +#line 219 "accessor_class_list.gperf" + {"uint32", &grib_accessor_class_uint32}, + {""}, #line 145 "accessor_class_list.gperf" {"julian_day", &grib_accessor_class_julian_day}, -#line 144 "accessor_class_list.gperf" - {"julian_date", &grib_accessor_class_julian_date}, -#line 218 "accessor_class_list.gperf" - {"uint32", &grib_accessor_class_uint32}, - {""}, {""}, {""}, -#line 148 "accessor_class_list.gperf" - {"laplacian", &grib_accessor_class_laplacian}, -#line 105 "accessor_class_list.gperf" - {"g1p1p2", &grib_accessor_class_g1p1p2}, #line 69 "accessor_class_list.gperf" {"data_g2secondary_bitmap", &grib_accessor_class_data_g2secondary_bitmap}, #line 67 "accessor_class_list.gperf" {"data_g2bifourier_packing", &grib_accessor_class_data_g2bifourier_packing}, -#line 115 "accessor_class_list.gperf" - {"g2date", &grib_accessor_class_g2date}, -#line 12 "accessor_class_list.gperf" - {"apply_operators", &grib_accessor_class_apply_operators}, -#line 113 "accessor_class_list.gperf" - {"g2bitmap", &grib_accessor_class_g2bitmap}, -#line 165 "accessor_class_list.gperf" - {"non_alpha", &grib_accessor_class_non_alpha}, +#line 111 "accessor_class_list.gperf" + {"g2_eps", &grib_accessor_class_g2_eps}, +#line 144 "accessor_class_list.gperf" + {"julian_date", &grib_accessor_class_julian_date}, +#line 57 "accessor_class_list.gperf" + {"data_dummy_field", &grib_accessor_class_data_dummy_field}, + {""}, +#line 93 "accessor_class_list.gperf" + {"g1_message_length", &grib_accessor_class_g1_message_length}, + {""}, +#line 72 "accessor_class_list.gperf" + {"data_g2simple_packing_with_preprocessing", &grib_accessor_class_data_g2simple_packing_with_preprocessing}, + {""}, +#line 102 "accessor_class_list.gperf" + {"g1monthlydate", &grib_accessor_class_g1monthlydate}, +#line 94 "accessor_class_list.gperf" + {"g1_section4_length", &grib_accessor_class_g1_section4_length}, +#line 206 "accessor_class_list.gperf" + {"step_human_readable", &grib_accessor_class_step_human_readable}, +#line 220 "accessor_class_list.gperf" + {"uint32_little_endian", &grib_accessor_class_uint32_little_endian}, + {""}, +#line 118 "accessor_class_list.gperf" + {"g2latlon", &grib_accessor_class_g2latlon}, {""}, {""}, +#line 109 "accessor_class_list.gperf" + {"g2_aerosol", &grib_accessor_class_g2_aerosol}, +#line 178 "accessor_class_list.gperf" + {"padto", &grib_accessor_class_padto}, #line 16 "accessor_class_list.gperf" {"bit", &grib_accessor_class_bit}, #line 18 "accessor_class_list.gperf" {"bits", &grib_accessor_class_bits}, - {""}, +#line 221 "accessor_class_list.gperf" + {"uint64", &grib_accessor_class_uint64}, #line 17 "accessor_class_list.gperf" {"bitmap", &grib_accessor_class_bitmap}, - {""}, -#line 197 "accessor_class_list.gperf" - {"simple_packing_error", &grib_accessor_class_simple_packing_error}, +#line 148 "accessor_class_list.gperf" + {"laplacian", &grib_accessor_class_laplacian}, +#line 149 "accessor_class_list.gperf" + {"latitudes", &grib_accessor_class_latitudes}, #line 107 "accessor_class_list.gperf" {"g1step_range", &grib_accessor_class_g1step_range}, -#line 36 "accessor_class_list.gperf" - {"bytes", &grib_accessor_class_bytes}, -#line 109 "accessor_class_list.gperf" - {"g2_aerosol", &grib_accessor_class_g2_aerosol}, -#line 125 "accessor_class_list.gperf" - {"gds_not_present_bitmap", &grib_accessor_class_gds_not_present_bitmap}, -#line 204 "accessor_class_list.gperf" - {"statistics", &grib_accessor_class_statistics}, + {""}, {""}, +#line 86 "accessor_class_list.gperf" + {"element", &grib_accessor_class_element}, + {""}, +#line 65 "accessor_class_list.gperf" + {"data_g1simple_packing", &grib_accessor_class_data_g1simple_packing}, +#line 58 "accessor_class_list.gperf" + {"data_g1complex_packing", &grib_accessor_class_data_g1complex_packing}, +#line 186 "accessor_class_list.gperf" + {"scale", &grib_accessor_class_scale}, #line 19 "accessor_class_list.gperf" {"bits_per_value", &grib_accessor_class_bits_per_value}, - {""}, {""}, -#line 167 "accessor_class_list.gperf" - {"number_of_points", &grib_accessor_class_number_of_points}, -#line 225 "accessor_class_list.gperf" - {"unsigned", &grib_accessor_class_unsigned}, -#line 216 "accessor_class_list.gperf" - {"uint16", &grib_accessor_class_uint16}, -#line 143 "accessor_class_list.gperf" - {"iterator", &grib_accessor_class_iterator}, - {""}, -#line 205 "accessor_class_list.gperf" - {"statistics_spectral", &grib_accessor_class_statistics_spectral}, +#line 132 "accessor_class_list.gperf" + {"headers_only", &grib_accessor_class_headers_only}, +#line 77 "accessor_class_list.gperf" + {"data_sh_packed", &grib_accessor_class_data_sh_packed}, +#line 165 "accessor_class_list.gperf" + {"non_alpha", &grib_accessor_class_non_alpha}, +#line 222 "accessor_class_list.gperf" + {"uint64_little_endian", &grib_accessor_class_uint64_little_endian}, {""}, +#line 54 "accessor_class_list.gperf" + {"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing}, #line 226 "accessor_class_list.gperf" - {"unsigned_bits", &grib_accessor_class_unsigned_bits}, + {"unsigned", &grib_accessor_class_unsigned}, #line 63 "accessor_class_list.gperf" {"data_g1secondary_bitmap", &grib_accessor_class_data_g1secondary_bitmap}, -#line 168 "accessor_class_list.gperf" - {"number_of_points_gaussian", &grib_accessor_class_number_of_points_gaussian}, -#line 97 "accessor_class_list.gperf" - {"g1date", &grib_accessor_class_g1date}, -#line 128 "accessor_class_list.gperf" - {"global_gaussian", &grib_accessor_class_global_gaussian}, -#line 96 "accessor_class_list.gperf" - {"g1bitmap", &grib_accessor_class_g1bitmap}, +#line 197 "accessor_class_list.gperf" + {"simple_packing_error", &grib_accessor_class_simple_packing_error}, +#line 105 "accessor_class_list.gperf" + {"g1p1p2", &grib_accessor_class_g1p1p2}, +#line 182 "accessor_class_list.gperf" + {"raw", &grib_accessor_class_raw}, +#line 83 "accessor_class_list.gperf" + {"dirty", &grib_accessor_class_dirty}, +#line 227 "accessor_class_list.gperf" + {"unsigned_bits", &grib_accessor_class_unsigned_bits}, {""}, {""}, {""}, -#line 194 "accessor_class_list.gperf" - {"sexagesimal2decimal", &grib_accessor_class_sexagesimal2decimal}, -#line 212 "accessor_class_list.gperf" - {"to_integer", &grib_accessor_class_to_integer}, +#line 15 "accessor_class_list.gperf" + {"assert", &grib_accessor_class_assert}, +#line 131 "accessor_class_list.gperf" + {"hash_array", &grib_accessor_class_hash_array}, {""}, -#line 223 "accessor_class_list.gperf" - {"unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors}, #line 61 "accessor_class_list.gperf" {"data_g1second_order_general_packing", &grib_accessor_class_data_g1second_order_general_packing}, - {""}, {""}, +#line 217 "accessor_class_list.gperf" + {"uint16", &grib_accessor_class_uint16}, + {""}, #line 62 "accessor_class_list.gperf" {"data_g1second_order_row_by_row_packing", &grib_accessor_class_data_g1second_order_row_by_row_packing}, {""}, -#line 221 "accessor_class_list.gperf" - {"uint64_little_endian", &grib_accessor_class_uint64_little_endian}, -#line 86 "accessor_class_list.gperf" - {"element", &grib_accessor_class_element}, +#line 215 "accessor_class_list.gperf" + {"transient", &grib_accessor_class_transient}, +#line 128 "accessor_class_list.gperf" + {"global_gaussian", &grib_accessor_class_global_gaussian}, #line 59 "accessor_class_list.gperf" {"data_g1second_order_constant_width_packing", &grib_accessor_class_data_g1second_order_constant_width_packing}, -#line 149 "accessor_class_list.gperf" - {"latitudes", &grib_accessor_class_latitudes}, +#line 230 "accessor_class_list.gperf" + {"values", &grib_accessor_class_values}, #line 60 "accessor_class_list.gperf" {"data_g1second_order_general_extended_packing", &grib_accessor_class_data_g1second_order_general_extended_packing}, - {""}, -#line 94 "accessor_class_list.gperf" - {"g1_section4_length", &grib_accessor_class_g1_section4_length}, -#line 166 "accessor_class_list.gperf" - {"number_of_coded_values", &grib_accessor_class_number_of_coded_values}, -#line 154 "accessor_class_list.gperf" - {"long", &grib_accessor_class_long}, - {""}, -#line 85 "accessor_class_list.gperf" - {"double", &grib_accessor_class_double}, -#line 160 "accessor_class_list.gperf" - {"md5", &grib_accessor_class_md5}, {""}, {""}, -#line 219 "accessor_class_list.gperf" - {"uint32_little_endian", &grib_accessor_class_uint32_little_endian}, -#line 161 "accessor_class_list.gperf" - {"message", &grib_accessor_class_message}, - {""}, -#line 112 "accessor_class_list.gperf" - {"g2_mars_labeling", &grib_accessor_class_g2_mars_labeling}, -#line 158 "accessor_class_list.gperf" - {"mars_param", &grib_accessor_class_mars_param}, -#line 229 "accessor_class_list.gperf" - {"values", &grib_accessor_class_values}, -#line 118 "accessor_class_list.gperf" - {"g2latlon", &grib_accessor_class_g2latlon}, - {""}, -#line 43 "accessor_class_list.gperf" - {"concept", &grib_accessor_class_concept}, -#line 21 "accessor_class_list.gperf" - {"box", &grib_accessor_class_box}, - {""}, {""}, {""}, -#line 99 "accessor_class_list.gperf" - {"g1end_of_interval_monthly", &grib_accessor_class_g1end_of_interval_monthly}, - {""}, {""}, -#line 84 "accessor_class_list.gperf" - {"divdouble", &grib_accessor_class_divdouble}, - {""}, -#line 213 "accessor_class_list.gperf" - {"to_string", &grib_accessor_class_to_string}, - {""}, -#line 147 "accessor_class_list.gperf" - {"label", &grib_accessor_class_label}, - {""}, -#line 44 "accessor_class_list.gperf" - {"constant", &grib_accessor_class_constant}, - {""}, {""}, -#line 24 "accessor_class_list.gperf" - {"bufr_data", &grib_accessor_class_bufr_data}, -#line 162 "accessor_class_list.gperf" - {"message_copy", &grib_accessor_class_message_copy}, - {""}, -#line 180 "accessor_class_list.gperf" - {"padtomultiple", &grib_accessor_class_padtomultiple}, - {""}, -#line 217 "accessor_class_list.gperf" - {"uint16_little_endian", &grib_accessor_class_uint16_little_endian}, -#line 25 "accessor_class_list.gperf" - {"bufr_data_array", &grib_accessor_class_bufr_data_array}, -#line 163 "accessor_class_list.gperf" - {"missing", &grib_accessor_class_missing}, -#line 26 "accessor_class_list.gperf" - {"bufr_data_element", &grib_accessor_class_bufr_data_element}, - {""}, -#line 20 "accessor_class_list.gperf" - {"blob", &grib_accessor_class_blob}, - {""}, -#line 33 "accessor_class_list.gperf" - {"bufr_simple_thinning", &grib_accessor_class_bufr_simple_thinning}, -#line 182 "accessor_class_list.gperf" - {"raw", &grib_accessor_class_raw}, - {""}, -#line 133 "accessor_class_list.gperf" - {"ibmfloat", &grib_accessor_class_ibmfloat}, - {""}, -#line 15 "accessor_class_list.gperf" - {"assert", &grib_accessor_class_assert}, -#line 35 "accessor_class_list.gperf" - {"bufrdc_expanded_descriptors", &grib_accessor_class_bufrdc_expanded_descriptors}, -#line 32 "accessor_class_list.gperf" - {"bufr_has_delayed_replication", &grib_accessor_class_bufr_has_delayed_replication}, -#line 13 "accessor_class_list.gperf" - {"array", &grib_accessor_class_array}, -#line 181 "accessor_class_list.gperf" - {"position", &grib_accessor_class_position}, - {""}, -#line 137 "accessor_class_list.gperf" - {"int16_little_endian", &grib_accessor_class_int16_little_endian}, - {""}, {""}, {""}, {""}, -#line 203 "accessor_class_list.gperf" - {"sprintf", &grib_accessor_class_sprintf}, +#line 216 "accessor_class_list.gperf" + {"transient_darray", &grib_accessor_class_transient_darray}, #line 183 "accessor_class_list.gperf" {"rdbtime_guess_date", &grib_accessor_class_rdbtime_guess_date}, - {""}, -#line 159 "accessor_class_list.gperf" - {"mars_step", &grib_accessor_class_mars_step}, -#line 141 "accessor_class_list.gperf" - {"int64_little_endian", &grib_accessor_class_int64_little_endian}, -#line 187 "accessor_class_list.gperf" - {"scale_values", &grib_accessor_class_scale_values}, - {""}, {""}, {""}, -#line 139 "accessor_class_list.gperf" - {"int32_little_endian", &grib_accessor_class_int32_little_endian}, - {""}, {""}, -#line 227 "accessor_class_list.gperf" - {"validity_date", &grib_accessor_class_validity_date}, #line 228 "accessor_class_list.gperf" + {"validity_date", &grib_accessor_class_validity_date}, +#line 229 "accessor_class_list.gperf" {"validity_time", &grib_accessor_class_validity_time}, +#line 194 "accessor_class_list.gperf" + {"sexagesimal2decimal", &grib_accessor_class_sexagesimal2decimal}, +#line 218 "accessor_class_list.gperf" + {"uint16_little_endian", &grib_accessor_class_uint16_little_endian}, + {""}, {""}, {""}, {""}, +#line 167 "accessor_class_list.gperf" + {"number_of_points", &grib_accessor_class_number_of_points}, + {""}, {""}, {""}, {""}, +#line 112 "accessor_class_list.gperf" + {"g2_mars_labeling", &grib_accessor_class_g2_mars_labeling}, +#line 154 "accessor_class_list.gperf" + {"long", &grib_accessor_class_long}, +#line 21 "accessor_class_list.gperf" + {"box", &grib_accessor_class_box}, +#line 85 "accessor_class_list.gperf" + {"double", &grib_accessor_class_double}, +#line 168 "accessor_class_list.gperf" + {"number_of_points_gaussian", &grib_accessor_class_number_of_points_gaussian}, +#line 99 "accessor_class_list.gperf" + {"g1end_of_interval_monthly", &grib_accessor_class_g1end_of_interval_monthly}, {""}, -#line 231 "accessor_class_list.gperf" - {"vector", &grib_accessor_class_vector}, -#line 157 "accessor_class_list.gperf" - {"lookup", &grib_accessor_class_lookup}, - {""}, {""}, {""}, {""}, -#line 156 "accessor_class_list.gperf" - {"longitudes", &grib_accessor_class_longitudes}, - {""}, {""}, -#line 22 "accessor_class_list.gperf" - {"budgdate", &grib_accessor_class_budgdate}, - {""}, {""}, {""}, {""}, -#line 89 "accessor_class_list.gperf" - {"forward", &grib_accessor_class_forward}, +#line 181 "accessor_class_list.gperf" + {"position", &grib_accessor_class_position}, +#line 37 "accessor_class_list.gperf" + {"change_scanning_direction", &grib_accessor_class_change_scanning_direction}, +#line 84 "accessor_class_list.gperf" + {"divdouble", &grib_accessor_class_divdouble}, #line 123 "accessor_class_list.gperf" {"gaussian_grid_name", &grib_accessor_class_gaussian_grid_name}, {""}, -#line 134 "accessor_class_list.gperf" - {"ieeefloat", &grib_accessor_class_ieeefloat}, -#line 173 "accessor_class_list.gperf" - {"offset_file", &grib_accessor_class_offset_file}, +#line 224 "accessor_class_list.gperf" + {"unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors}, + {""}, {""}, {""}, {""}, +#line 43 "accessor_class_list.gperf" + {"concept", &grib_accessor_class_concept}, + {""}, {""}, {""}, {""}, +#line 193 "accessor_class_list.gperf" + {"select_step_template", &grib_accessor_class_select_step_template}, {""}, -#line 30 "accessor_class_list.gperf" - {"bufr_extract_subsets", &grib_accessor_class_bufr_extract_subsets}, -#line 129 "accessor_class_list.gperf" - {"group", &grib_accessor_class_group}, - {""}, -#line 179 "accessor_class_list.gperf" - {"padtoeven", &grib_accessor_class_padtoeven}, - {""}, -#line 28 "accessor_class_list.gperf" - {"bufr_extract_area_subsets", &grib_accessor_class_bufr_extract_area_subsets}, - {""}, -#line 230 "accessor_class_list.gperf" - {"variable", &grib_accessor_class_variable}, -#line 232 "accessor_class_list.gperf" - {"when", &grib_accessor_class_when}, -#line 29 "accessor_class_list.gperf" - {"bufr_extract_datetime_subsets", &grib_accessor_class_bufr_extract_datetime_subsets}, -#line 214 "accessor_class_list.gperf" - {"transient", &grib_accessor_class_transient}, -#line 81 "accessor_class_list.gperf" - {"decimal_precision", &grib_accessor_class_decimal_precision}, -#line 146 "accessor_class_list.gperf" - {"ksec1expver", &grib_accessor_class_ksec1expver}, -#line 169 "accessor_class_list.gperf" - {"number_of_values", &grib_accessor_class_number_of_values}, - {""}, -#line 185 "accessor_class_list.gperf" - {"round", &grib_accessor_class_round}, - {""}, -#line 215 "accessor_class_list.gperf" - {"transient_darray", &grib_accessor_class_transient_darray}, - {""}, -#line 153 "accessor_class_list.gperf" - {"local_definition", &grib_accessor_class_local_definition}, -#line 175 "accessor_class_list.gperf" - {"pack_bufr_values", &grib_accessor_class_pack_bufr_values}, - {""}, {""}, -#line 172 "accessor_class_list.gperf" - {"octect_number", &grib_accessor_class_octect_number}, -#line 199 "accessor_class_list.gperf" - {"smart_table", &grib_accessor_class_smart_table}, - {""}, -#line 40 "accessor_class_list.gperf" - {"codetable", &grib_accessor_class_codetable}, - {""}, -#line 34 "accessor_class_list.gperf" - {"bufr_string_values", &grib_accessor_class_bufr_string_values}, -#line 48 "accessor_class_list.gperf" - {"data_2order_packing", &grib_accessor_class_data_2order_packing}, -#line 170 "accessor_class_list.gperf" - {"number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing}, -#line 200 "accessor_class_list.gperf" - {"smart_table_column", &grib_accessor_class_smart_table_column}, -#line 208 "accessor_class_list.gperf" - {"suppressed", &grib_accessor_class_suppressed}, -#line 23 "accessor_class_list.gperf" - {"bufr_clear_tables", &grib_accessor_class_bufr_clear_tables}, - {""}, -#line 49 "accessor_class_list.gperf" - {"data_2order_packing_count", &grib_accessor_class_data_2order_packing_count}, - {""}, {""}, {""}, -#line 78 "accessor_class_list.gperf" - {"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked}, -#line 202 "accessor_class_list.gperf" - {"spectral_truncation", &grib_accessor_class_spectral_truncation}, -#line 39 "accessor_class_list.gperf" - {"codeflag", &grib_accessor_class_codeflag}, - {""}, -#line 211 "accessor_class_list.gperf" - {"to_double", &grib_accessor_class_to_double}, -#line 79 "accessor_class_list.gperf" - {"data_shsimple_packing", &grib_accessor_class_data_shsimple_packing}, -#line 87 "accessor_class_list.gperf" - {"evaluate", &grib_accessor_class_evaluate}, - {""}, {""}, -#line 27 "accessor_class_list.gperf" - {"bufr_elements_table", &grib_accessor_class_bufr_elements_table}, -#line 119 "accessor_class_list.gperf" - {"g2level", &grib_accessor_class_g2level}, -#line 100 "accessor_class_list.gperf" - {"g1fcperiod", &grib_accessor_class_g1fcperiod}, - {""}, {""}, {""}, {""}, {""}, -#line 152 "accessor_class_list.gperf" - {"library_version", &grib_accessor_class_library_version}, - {""}, -#line 92 "accessor_class_list.gperf" - {"g1_increment", &grib_accessor_class_g1_increment}, +#line 171 "accessor_class_list.gperf" + {"octahedral_gaussian", &grib_accessor_class_octahedral_gaussian}, #line 114 "accessor_class_list.gperf" {"g2bitmap_present", &grib_accessor_class_g2bitmap_present}, {""}, {""}, {""}, -#line 77 "accessor_class_list.gperf" - {"data_sh_packed", &grib_accessor_class_data_sh_packed}, +#line 44 "accessor_class_list.gperf" + {"constant", &grib_accessor_class_constant}, +#line 185 "accessor_class_list.gperf" + {"round", &grib_accessor_class_round}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 24 "accessor_class_list.gperf" + {"bufr_data", &grib_accessor_class_bufr_data}, +#line 22 "accessor_class_list.gperf" + {"budgdate", &grib_accessor_class_budgdate}, + {""}, +#line 202 "accessor_class_list.gperf" + {"spectral_truncation", &grib_accessor_class_spectral_truncation}, + {""}, +#line 146 "accessor_class_list.gperf" + {"ksec1expver", &grib_accessor_class_ksec1expver}, +#line 25 "accessor_class_list.gperf" + {"bufr_data_array", &grib_accessor_class_bufr_data_array}, +#line 48 "accessor_class_list.gperf" + {"data_2order_packing", &grib_accessor_class_data_2order_packing}, +#line 232 "accessor_class_list.gperf" + {"vector", &grib_accessor_class_vector}, + {""}, {""}, +#line 26 "accessor_class_list.gperf" + {"bufr_data_element", &grib_accessor_class_bufr_data_element}, +#line 129 "accessor_class_list.gperf" + {"group", &grib_accessor_class_group}, +#line 49 "accessor_class_list.gperf" + {"data_2order_packing_count", &grib_accessor_class_data_2order_packing_count}, + {""}, +#line 33 "accessor_class_list.gperf" + {"bufr_simple_thinning", &grib_accessor_class_bufr_simple_thinning}, + {""}, {""}, +#line 35 "accessor_class_list.gperf" + {"bufrdc_expanded_descriptors", &grib_accessor_class_bufrdc_expanded_descriptors}, + {""}, +#line 147 "accessor_class_list.gperf" + {"label", &grib_accessor_class_label}, +#line 20 "accessor_class_list.gperf" + {"blob", &grib_accessor_class_blob}, +#line 32 "accessor_class_list.gperf" + {"bufr_has_delayed_replication", &grib_accessor_class_bufr_has_delayed_replication}, + {""}, +#line 160 "accessor_class_list.gperf" + {"md5", &grib_accessor_class_md5}, + {""}, +#line 133 "accessor_class_list.gperf" + {"ibmfloat", &grib_accessor_class_ibmfloat}, + {""}, {""}, {""}, {""}, +#line 158 "accessor_class_list.gperf" + {"mars_param", &grib_accessor_class_mars_param}, +#line 159 "accessor_class_list.gperf" + {"mars_step", &grib_accessor_class_mars_step}, +#line 209 "accessor_class_list.gperf" + {"suppressed", &grib_accessor_class_suppressed}, +#line 161 "accessor_class_list.gperf" + {"message", &grib_accessor_class_message}, + {""}, +#line 166 "accessor_class_list.gperf" + {"number_of_coded_values", &grib_accessor_class_number_of_coded_values}, +#line 212 "accessor_class_list.gperf" + {"to_double", &grib_accessor_class_to_double}, + {""}, +#line 34 "accessor_class_list.gperf" + {"bufr_string_values", &grib_accessor_class_bufr_string_values}, +#line 89 "accessor_class_list.gperf" + {"forward", &grib_accessor_class_forward}, +#line 87 "accessor_class_list.gperf" + {"evaluate", &grib_accessor_class_evaluate}, +#line 199 "accessor_class_list.gperf" + {"smart_table", &grib_accessor_class_smart_table}, + {""}, {""}, {""}, +#line 134 "accessor_class_list.gperf" + {"ieeefloat", &grib_accessor_class_ieeefloat}, + {""}, +#line 203 "accessor_class_list.gperf" + {"sprintf", &grib_accessor_class_sprintf}, +#line 200 "accessor_class_list.gperf" + {"smart_table_column", &grib_accessor_class_smart_table_column}, +#line 173 "accessor_class_list.gperf" + {"offset_file", &grib_accessor_class_offset_file}, +#line 36 "accessor_class_list.gperf" + {"bytes", &grib_accessor_class_bytes}, +#line 92 "accessor_class_list.gperf" + {"g1_increment", &grib_accessor_class_g1_increment}, + {""}, +#line 141 "accessor_class_list.gperf" + {"int64_little_endian", &grib_accessor_class_int64_little_endian}, + {""}, +#line 12 "accessor_class_list.gperf" + {"apply_operators", &grib_accessor_class_apply_operators}, +#line 180 "accessor_class_list.gperf" + {"padtomultiple", &grib_accessor_class_padtomultiple}, +#line 163 "accessor_class_list.gperf" + {"missing", &grib_accessor_class_missing}, +#line 157 "accessor_class_list.gperf" + {"lookup", &grib_accessor_class_lookup}, + {""}, +#line 169 "accessor_class_list.gperf" + {"number_of_values", &grib_accessor_class_number_of_values}, +#line 231 "accessor_class_list.gperf" + {"variable", &grib_accessor_class_variable}, +#line 179 "accessor_class_list.gperf" + {"padtoeven", &grib_accessor_class_padtoeven}, +#line 156 "accessor_class_list.gperf" + {"longitudes", &grib_accessor_class_longitudes}, + {""}, {""}, +#line 139 "accessor_class_list.gperf" + {"int32_little_endian", &grib_accessor_class_int32_little_endian}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 13 "accessor_class_list.gperf" + {"array", &grib_accessor_class_array}, + {""}, +#line 137 "accessor_class_list.gperf" + {"int16_little_endian", &grib_accessor_class_int16_little_endian}, +#line 100 "accessor_class_list.gperf" + {"g1fcperiod", &grib_accessor_class_g1fcperiod}, +#line 170 "accessor_class_list.gperf" + {"number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing}, +#line 38 "accessor_class_list.gperf" + {"check_internal_version", &grib_accessor_class_check_internal_version}, +#line 91 "accessor_class_list.gperf" + {"g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag}, + {""}, {""}, +#line 187 "accessor_class_list.gperf" + {"scale_values", &grib_accessor_class_scale_values}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 162 "accessor_class_list.gperf" + {"message_copy", &grib_accessor_class_message_copy}, + {""}, +#line 98 "accessor_class_list.gperf" + {"g1day_of_the_year_date", &grib_accessor_class_g1day_of_the_year_date}, + {""}, {""}, +#line 175 "accessor_class_list.gperf" + {"pack_bufr_values", &grib_accessor_class_pack_bufr_values}, +#line 40 "accessor_class_list.gperf" + {"codetable", &grib_accessor_class_codetable}, {""}, #line 47 "accessor_class_list.gperf" {"count_total", &grib_accessor_class_count_total}, - {""}, {""}, {""}, {""}, {""}, -#line 91 "accessor_class_list.gperf" - {"g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag}, - {""}, -#line 174 "accessor_class_list.gperf" - {"offset_values", &grib_accessor_class_offset_values}, -#line 151 "accessor_class_list.gperf" - {"latlonvalues", &grib_accessor_class_latlonvalues}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 46 "accessor_class_list.gperf" - {"count_missing", &grib_accessor_class_count_missing}, - {""}, {""}, + {""}, {""}, {""}, {""}, +#line 119 "accessor_class_list.gperf" + {"g2level", &grib_accessor_class_g2level}, #line 41 "accessor_class_list.gperf" {"codetable_title", &grib_accessor_class_codetable_title}, +#line 153 "accessor_class_list.gperf" + {"local_definition", &grib_accessor_class_local_definition}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 130 "accessor_class_list.gperf" - {"gts_header", &grib_accessor_class_gts_header}, -#line 45 "accessor_class_list.gperf" - {"count_file", &grib_accessor_class_count_file}, -#line 224 "accessor_class_list.gperf" - {"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values}, - {""}, {""}, {""}, {""}, -#line 102 "accessor_class_list.gperf" - {"g1monthlydate", &grib_accessor_class_g1monthlydate}, - {""}, -#line 132 "accessor_class_list.gperf" - {"headers_only", &grib_accessor_class_headers_only}, -#line 42 "accessor_class_list.gperf" - {"codetable_units", &grib_accessor_class_codetable_units}, - {""}, {""}, {""}, + {""}, {""}, #line 155 "accessor_class_list.gperf" {"long_vector", &grib_accessor_class_long_vector}, - {""}, {""}, -#line 11 "accessor_class_list.gperf" - {"abstract_vector", &grib_accessor_class_abstract_vector}, {""}, #line 150 "accessor_class_list.gperf" {"latlon_increment", &grib_accessor_class_latlon_increment}, - {""}, -#line 37 "accessor_class_list.gperf" - {"change_scanning_direction", &grib_accessor_class_change_scanning_direction}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, +#line 23 "accessor_class_list.gperf" + {"bufr_clear_tables", &grib_accessor_class_bufr_clear_tables}, {""}, {""}, {""}, {""}, {""}, -#line 171 "accessor_class_list.gperf" - {"octahedral_gaussian", &grib_accessor_class_octahedral_gaussian}, +#line 151 "accessor_class_list.gperf" + {"latlonvalues", &grib_accessor_class_latlonvalues}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 30 "accessor_class_list.gperf" + {"bufr_extract_subsets", &grib_accessor_class_bufr_extract_subsets}, + {""}, +#line 174 "accessor_class_list.gperf" + {"offset_values", &grib_accessor_class_offset_values}, +#line 27 "accessor_class_list.gperf" + {"bufr_elements_table", &grib_accessor_class_bufr_elements_table}, + {""}, +#line 28 "accessor_class_list.gperf" + {"bufr_extract_area_subsets", &grib_accessor_class_bufr_extract_area_subsets}, {""}, {""}, #line 31 "accessor_class_list.gperf" {"bufr_group", &grib_accessor_class_bufr_group}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 135 "accessor_class_list.gperf" - {"ifs_param", &grib_accessor_class_ifs_param}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 98 "accessor_class_list.gperf" - {"g1day_of_the_year_date", &grib_accessor_class_g1day_of_the_year_date}, +#line 29 "accessor_class_list.gperf" + {"bufr_extract_datetime_subsets", &grib_accessor_class_bufr_extract_datetime_subsets}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 81 "accessor_class_list.gperf" + {"decimal_precision", &grib_accessor_class_decimal_precision}, + {""}, {""}, {""}, {""}, +#line 39 "accessor_class_list.gperf" + {"codeflag", &grib_accessor_class_codeflag}, + {""}, {""}, {""}, +#line 45 "accessor_class_list.gperf" + {"count_file", &grib_accessor_class_count_file}, + {""}, {""}, {""}, +#line 225 "accessor_class_list.gperf" + {"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values}, + {""}, {""}, {""}, {""}, +#line 135 "accessor_class_list.gperf" + {"ifs_param", &grib_accessor_class_ifs_param}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 11 "accessor_class_list.gperf" + {"abstract_vector", &grib_accessor_class_abstract_vector}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 110 "accessor_class_list.gperf" + {"g2_chemical", &grib_accessor_class_g2_chemical}, + {""}, +#line 42 "accessor_class_list.gperf" + {"codetable_units", &grib_accessor_class_codetable_units}, + {""}, {""}, {""}, {""}, +#line 152 "accessor_class_list.gperf" + {"library_version", &grib_accessor_class_library_version}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, +#line 108 "accessor_class_list.gperf" + {"g1verificationdate", &grib_accessor_class_g1verificationdate}, + {""}, {""}, {""}, +#line 46 "accessor_class_list.gperf" + {"count_missing", &grib_accessor_class_count_missing}, +#line 172 "accessor_class_list.gperf" + {"octect_number", &grib_accessor_class_octect_number}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 10 "accessor_class_list.gperf" {"abstract_long_vector", &grib_accessor_class_abstract_long_vector}, - {""}, + {""}, {""}, {""}, {""}, {""}, {""}, #line 106 "accessor_class_list.gperf" {"g1param", &grib_accessor_class_g1param}, {""}, {""}, {""}, +#line 184 "accessor_class_list.gperf" + {"reference_value_error", &grib_accessor_class_reference_value_error}, + {""}, {""}, {""}, {""}, {""}, +#line 90 "accessor_class_list.gperf" + {"from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, #line 104 "accessor_class_list.gperf" {"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple}, #line 103 "accessor_class_list.gperf" {"g1number_of_coded_values_sh_complex", &grib_accessor_class_g1number_of_coded_values_sh_complex}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 90 "accessor_class_list.gperf" - {"from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, -#line 131 "accessor_class_list.gperf" - {"hash_array", &grib_accessor_class_hash_array}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, #line 101 "accessor_class_list.gperf" - {"g1forecastmonth", &grib_accessor_class_g1forecastmonth}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 108 "accessor_class_list.gperf" - {"g1verificationdate", &grib_accessor_class_g1verificationdate}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 38 "accessor_class_list.gperf" - {"check_internal_version", &grib_accessor_class_check_internal_version}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 110 "accessor_class_list.gperf" - {"g2_chemical", &grib_accessor_class_g2_chemical}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 184 "accessor_class_list.gperf" - {"reference_value_error", &grib_accessor_class_reference_value_error} + {"g1forecastmonth", &grib_accessor_class_g1forecastmonth} }; static const struct accessor_class_hash * diff --git a/src/grib_accessor_factory.h b/src/grib_accessor_factory.h index 7f8ba46e2..5321d603e 100644 --- a/src/grib_accessor_factory.h +++ b/src/grib_accessor_factory.h @@ -195,6 +195,7 @@ { "sprintf", &grib_accessor_class_sprintf, }, { "statistics", &grib_accessor_class_statistics, }, { "statistics_spectral", &grib_accessor_class_statistics_spectral, }, +{ "step_human_readable", &grib_accessor_class_step_human_readable, }, { "step_in_units", &grib_accessor_class_step_in_units, }, { "sum", &grib_accessor_class_sum, }, { "suppressed", &grib_accessor_class_suppressed, }, diff --git a/src/grib_accessor_factory_hash_list b/src/grib_accessor_factory_hash_list index 03234ba2a..eb4115b6a 100644 --- a/src/grib_accessor_factory_hash_list +++ b/src/grib_accessor_factory_hash_list @@ -196,6 +196,7 @@ spectral_truncation, &grib_accessor_class_spectral_truncation sprintf, &grib_accessor_class_sprintf statistics, &grib_accessor_class_statistics statistics_spectral, &grib_accessor_class_statistics_spectral +step_human_readable, &grib_accessor_class_step_human_readable step_in_units, &grib_accessor_class_step_in_units sum, &grib_accessor_class_sum suppressed, &grib_accessor_class_suppressed diff --git a/src/grib_hash_keys.c b/src/grib_hash_keys.c index 35fc25d12..81886e11e 100644 --- a/src/grib_hash_keys.c +++ b/src/grib_hash_keys.c @@ -34,7 +34,7 @@ error "gperf generated tables don't work with this execution character set. Plea struct grib_keys_hash { char* name; int id;}; #include -#define TOTAL_KEYWORDS 2361 +#define TOTAL_KEYWORDS 2362 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 74 #define MIN_HASH_VALUE 5 @@ -347,7 +347,7 @@ static const unsigned char lengthtable[] = 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 10, 0, 0, 11, 0, 0, 33, 0, 0, 0, 0, 0, 21, 0, 0, 11, 0, 23, 0, 0, 24, 0, 0, 0, 9, 0, - 0, 0, 0, 17, 33, 0, 0, 0, 0, 14, 18, 16, 0, 0, + 0, 0, 9, 17, 33, 0, 0, 0, 0, 14, 18, 16, 0, 0, 0, 0, 21, 0, 28, 0, 0, 0, 0, 31, 21, 0, 0, 6, 34, 0, 0, 0, 0, 0, 0, 0, 22, 15, 20, 0, 0, 0, 0, 0, 0, 0, 18, 21, 8, 0, 0, 0, 0, 16, 27, 0, @@ -2488,9 +2488,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {"n",1303}, {""}, - {"t",2101}, + {"t",2102}, {"nd",1312}, - {"td",2111}, + {"td",2112}, {"nt",1330}, {"nnn",1316}, {"na",1306}, @@ -2510,7 +2510,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"name",1307}, {""}, {""}, {""}, - {"time",2137}, + {"time",2138}, {""}, {""}, {""}, {"one",1498}, {"Dstart",39}, @@ -2526,7 +2526,7 @@ static const struct grib_keys_hash wordlist[] = {"eps",758}, {"domain",693}, {""}, - {"stream",2074}, + {"stream",2075}, {""}, {""}, {""}, {"edition",711}, {"cat",379}, @@ -2557,11 +2557,11 @@ static const struct grib_keys_hash wordlist[] = {"const",564}, {""}, {""}, {"parameter",1612}, - {"true",2170}, + {"true",2171}, {"core",590}, {"second",1900}, {""}, {""}, - {"units",2230}, + {"units",2231}, {""}, {""}, {"rectime",1739}, {"parameters",1620}, @@ -2570,11 +2570,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {"status",2063}, {"partitions",1625}, - {"timerepres",2150}, + {"timerepres",2151}, {"radius",1714}, {""}, {"isSens",1000}, - {"year",2353}, + {"year",2354}, {""}, {"dataTime",630}, {"direction",679}, @@ -2585,18 +2585,18 @@ static const struct grib_keys_hash wordlist[] = {"radials",1713}, {""}, {"leadtime",1076}, - {"type",2181}, + {"type",2182}, {"dataStream",628}, {"hdate",917}, {"instrument",971}, {"notDecoded",1329}, {""}, - {"system",2099}, - {"ucs",2223}, + {"system",2100}, + {"ucs",2224}, {""}, {""}, - {"stepZero",2073}, + {"stepZero",2074}, {""}, - {"three",2124}, + {"three",2125}, {"endStep",745}, {""}, {""}, {""}, {"process",1686}, @@ -2609,7 +2609,7 @@ static const struct grib_keys_hash wordlist[] = {"class",419}, {"phase",1639}, {""}, - {"uco",2222}, + {"uco",2223}, {"startStep",2056}, {"marsStep",1211}, {""}, {""}, {""}, {""}, {""}, @@ -2622,9 +2622,9 @@ static const struct grib_keys_hash wordlist[] = {"char",416}, {""}, {"operStream",1511}, - {"yFirst",2351}, + {"yFirst",2352}, {"latitude",1042}, - {"total",2152}, + {"total",2153}, {""}, {""}, {"product",1688}, {""}, {""}, {""}, @@ -2654,13 +2654,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {"ieeeFloats",949}, {""}, - {"thousand",2123}, + {"thousand",2124}, {"endTimeStep",747}, {""}, {""}, {""}, {""}, {""}, {"marsType",1215}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"stepType",2069}, + {"stepType",2070}, {"grid",895}, {""}, {"month",1291}, @@ -2676,9 +2676,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"partitionTable",1624}, {""}, - {"temperature",2113}, + {"temperature",2114}, {""}, {""}, {""}, - {"userDateStart",2252}, + {"userDateStart",2253}, {""}, {""}, {"dummyc",698}, {""}, {""}, @@ -2689,9 +2689,9 @@ static const struct grib_keys_hash wordlist[] = {"matchSort",1227}, {"reserved",1763}, {""}, - {"varno",2274}, + {"varno",2275}, {""}, - {"version",2279}, + {"version",2280}, {"indicatorOfParameter",959}, {""}, {"dataOrigin",622}, @@ -2703,7 +2703,7 @@ static const struct grib_keys_hash wordlist[] = {"marsQuantile",1208}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unitsFactor",2236}, + {"unitsFactor",2237}, {""}, {""}, {""}, {""}, {"dataSelection",627}, {"channel",414}, @@ -2718,9 +2718,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {"refdate",1745}, {""}, {""}, {""}, {""}, {""}, - {"userTimeStart",2256}, + {"userTimeStart",2257}, {""}, - {"threshold",2125}, + {"threshold",2126}, {""}, {"signature",2006}, {""}, @@ -2741,13 +2741,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"isSatellite",998}, {""}, - {"typicalDate",2211}, + {"typicalDate",2212}, {""}, {""}, {""}, {""}, {""}, {""}, {"diagnostic",672}, {"file",837}, {""}, {""}, {""}, {""}, {""}, {""}, {"false",830}, - {"values",2262}, + {"values",2263}, {""}, {"countTotal",607}, {""}, @@ -2765,11 +2765,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {"laplacianOperator",1035}, {""}, - {"unitsDecimalScaleFactor",2234}, + {"unitsDecimalScaleFactor",2235}, {"dataKeys",620}, {"KS",97}, {"statisticalProcessesList",2061}, - {"typicalDay",2213}, + {"typicalDay",2214}, {"levtype",1097}, {"longitudes",1175}, {"localDateTime",1114}, @@ -2781,7 +2781,7 @@ static const struct grib_keys_hash wordlist[] = {"aerosolType",295}, {""}, {""}, {"platform",1644}, - {"typicalTime",2218}, + {"typicalTime",2219}, {""}, {""}, {""}, {""}, {""}, {""}, {"level",1092}, {""}, {""}, {""}, {""}, @@ -2792,7 +2792,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {"satelliteSeries",1843}, {"productType",1693}, - {"userDateTimeStart",2254}, + {"userDateTimeStart",2255}, {""}, {"coefsFirst",548}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -2800,12 +2800,12 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"padding",1536}, {""}, {""}, {""}, - {"unitOfTime",2227}, + {"unitOfTime",2228}, {"band",324}, {""}, {""}, {""}, {""}, {"laplacianOperatorIsSet",1036}, {""}, {""}, {""}, - {"two",2179}, + {"two",2180}, {"ccsdsFlags",386}, {""}, {""}, {""}, {""}, {""}, {""}, {"parameterDiscipline",1615}, @@ -2832,7 +2832,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {"levelType",1094}, {""}, {""}, - {"windSpeed",2323}, + {"windSpeed",2324}, {""}, {"fcmonth",833}, {""}, {""}, {""}, @@ -2855,11 +2855,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {"forecastTime",863}, {""}, {""}, - {"tubeDomain",2177}, + {"tubeDomain",2178}, {""}, {"Ni",194}, {""}, - {"validityTime",2261}, + {"validityTime",2262}, {"longitudeOfCentrePoint",1149}, {"Nr",196}, {""}, @@ -2872,7 +2872,7 @@ static const struct grib_keys_hash wordlist[] = {"optionalData",1516}, {""}, {""}, {""}, {""}, {"obstype",1458}, - {"windDirection",2312}, + {"windDirection",2313}, {""}, {""}, {""}, {""}, {"rdbtimeDate",1726}, {"angleDivisor",301}, @@ -2894,14 +2894,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"rdbtimeDay",1727}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"verticalDomainTemplate",2289}, + {"verticalDomainTemplate",2290}, {""}, {"rdbDateTime",1721}, {""}, {""}, {""}, {""}, {""}, {""}, {"rdbtimeTime",1732}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"suiteName",2093}, + {"suiteName",2094}, {""}, {"parameterName",1617}, {"dimensionType",678}, @@ -2909,9 +2909,9 @@ static const struct grib_keys_hash wordlist[] = {"dateOfForecast",635}, {"NT",186}, {""}, {""}, - {"waveDomain",2302}, + {"waveDomain",2303}, {""}, {""}, {""}, {""}, - {"timeOfForecast",2144}, + {"timeOfForecast",2145}, {""}, {""}, {""}, {"modelName",1287}, {"coefsSecond",549}, @@ -2932,7 +2932,7 @@ static const struct grib_keys_hash wordlist[] = {"latitudeOfCentrePoint",1047}, {"shortName",2003}, {""}, {""}, {""}, {""}, - {"xFirst",2344}, + {"xFirst",2345}, {"ensembleSize",756}, {""}, {""}, {""}, {""}, {""}, {""}, {"marsStartStep",1210}, @@ -2948,11 +2948,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {"Ncy",192}, {""}, {""}, {""}, {""}, - {"yearOfForecast",2357}, + {"yearOfForecast",2358}, {""}, {"logTransform",1144}, {""}, {""}, {""}, {""}, - {"stepTypeForConversion",2070}, + {"stepTypeForConversion",2071}, {""}, {""}, {""}, {""}, {"Nuy",200}, {""}, {""}, {""}, {""}, @@ -2993,13 +2993,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {"daLoop",614}, {""}, {""}, - {"yLast",2352}, + {"yLast",2353}, {""}, {""}, {""}, {""}, {"global",885}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"monthOfForecast",1294}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subSetJ",2088}, + {"subSetJ",2089}, {""}, {""}, {"offsetDescriptors",1477}, {""}, @@ -3011,11 +3011,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"originalSubCentreIdentifier",1525}, {""}, - {"validityDate",2260}, + {"validityDate",2261}, {""}, {""}, {""}, {""}, {"decimalScaleFactor",652}, {""}, - {"visibility",2293}, + {"visibility",2294}, {"energyNorm",752}, {""}, {""}, {"anoffsetFirst",308}, @@ -3024,7 +3024,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"Ly",151}, {""}, {""}, - {"upperLimit",2247}, + {"upperLimit",2248}, {""}, {""}, {""}, {""}, {"clearTables",421}, {""}, @@ -3036,7 +3036,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"clusterNumber",536}, {"expandedTypes",775}, - {"typeOfStatisticalPostProcessingOfEnsembleMembers",2205}, + {"typeOfStatisticalPostProcessingOfEnsembleMembers",2206}, {"latitudeOfCentrePointInDegrees",1048}, {"auxiliary",315}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -3059,7 +3059,7 @@ static const struct grib_keys_hash wordlist[] = {"integerScaleFactor",975}, {""}, {""}, {""}, {""}, {"boustrophedonic",369}, - {"truncateLaplacian",2173}, + {"truncateLaplacian",2174}, {""}, {""}, {""}, {""}, {"localDefinition",1119}, {""}, @@ -3078,7 +3078,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"numberOfDirections",1368}, {""}, {""}, {""}, - {"typeOfStatisticalProcessing",2206}, + {"typeOfStatisticalProcessing",2207}, {""}, {""}, {""}, {"indexingTime",958}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -3111,7 +3111,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"Adelta",13}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subSetK",2089}, + {"subSetK",2090}, {""}, {""}, {""}, {"modeNumber",1283}, {"observedData",1457}, @@ -3127,7 +3127,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {"generatingProcessIdentifier",880}, {""}, {""}, {""}, {""}, - {"topLevel",2151}, + {"topLevel",2152}, {""}, {""}, {""}, {"perturbedType",1638}, {""}, {""}, @@ -3160,13 +3160,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {"pressureLevel",1676}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subcentreOfAnalysis",2091}, + {"subcentreOfAnalysis",2092}, {"crraSection",612}, {"rectimeSecond",1743}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"expoffset",781}, {""}, {""}, - {"totalNumber",2156}, + {"totalNumber",2157}, {""}, {""}, {""}, {"marsKeywords",1199}, {""}, {""}, {""}, {""}, {""}, @@ -3181,12 +3181,12 @@ static const struct grib_keys_hash wordlist[] = {"Dx",40}, {"listOfDistributionFunctionParameter",1108}, {""}, {""}, {""}, - {"typeOfDistributionFunction",2186}, + {"typeOfDistributionFunction",2187}, {""}, {""}, {""}, {"max",1231}, - {"zeros",2361}, + {"zeros",2362}, {""}, - {"zero",2360}, + {"zero",2361}, {""}, {"qfe",1701}, {""}, {""}, {""}, {""}, @@ -3202,12 +3202,12 @@ static const struct grib_keys_hash wordlist[] = {"lowerLimit",1178}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"defaultFaFieldName",653}, - {"stretchingFactor",2076}, + {"stretchingFactor",2077}, {"endOfInterval",741}, {"DyInDegrees",44}, {""}, {"numberOfFrequencies",1384}, - {"templatesLocalDir",2115}, + {"templatesLocalDir",2116}, {""}, {""}, {""}, {"meanSize",1254}, {""}, {""}, @@ -3215,7 +3215,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {"centreForLocal",399}, {""}, {""}, - {"systemNumber",2100}, + {"systemNumber",2101}, {"longitudeSexagesimal",1174}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"localSection",1136}, @@ -3226,7 +3226,7 @@ static const struct grib_keys_hash wordlist[] = {"methodNumber",1264}, {""}, {"groupSplitting",908}, - {"typicalSecond",2217}, + {"typicalSecond",2218}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"expandedNames",770}, @@ -3236,17 +3236,17 @@ static const struct grib_keys_hash wordlist[] = {"datumSize",643}, {""}, {"indexingDate",957}, - {"stretchingFactorScaled",2077}, + {"stretchingFactorScaled",2078}, {""}, {""}, {"longitudeOfCentrePointInDegrees",1150}, {""}, {""}, {""}, {""}, {""}, {""}, - {"timeDomainTemplate",2139}, + {"timeDomainTemplate",2140}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"partitionItems",1622}, {"climateDateTo",423}, {""}, {""}, {""}, {""}, - {"xLast",2345}, + {"xLast",2346}, {""}, {""}, {""}, {""}, {""}, {""}, {"Nb",190}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -3261,12 +3261,12 @@ static const struct grib_keys_hash wordlist[] = {""}, {"generatingProcessTemplateNumber",882}, {""}, {""}, - {"typeOfLevel",2195}, + {"typeOfLevel",2196}, {""}, {""}, {""}, {"bufrTemplate",374}, {"secondOrderFlags",1909}, - {"yDirectionGridLength",2348}, - {"stepRange",2067}, + {"yDirectionGridLength",2349}, + {"stepRange",2068}, {"referenceSampleInterval",1753}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"heightLevelName",919}, @@ -3274,7 +3274,7 @@ static const struct grib_keys_hash wordlist[] = {"createNewData",610}, {"offsetFreeFormData",1479}, {""}, {""}, {""}, {""}, - {"typicalDateTime",2212}, + {"typicalDateTime",2213}, {"conceptsLocalDirAll",557}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -3301,7 +3301,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {"correction1Part",597}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"upperRange",2248}, + {"upperRange",2249}, {""}, {""}, {""}, {"molarMass",1290}, {"productDefinition",1689}, @@ -3310,7 +3310,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {"bottomLevel",368}, {""}, {""}, - {"tiggeSection",2131}, + {"tiggeSection",2132}, {""}, {""}, {"isSatelliteType",999}, {""}, @@ -3321,7 +3321,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {"numberOfSection",1431}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tubeNumber",2178}, + {"tubeNumber",2179}, {""}, {"numberOfForecastsInTube",1383}, {""}, @@ -3335,7 +3335,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {"rdbtimeSecond",1731}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"stepTypeInternal",2071}, + {"stepTypeInternal",2072}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"expandedDescriptors",769}, @@ -3345,7 +3345,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"levelIndicator",1093}, - {"tableNumber",2104}, + {"tableNumber",2105}, {"simpleThinningSkip",2010}, {"originatorLocalTemplate",1528}, {""}, {""}, @@ -3356,11 +3356,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"observablePropertyTemplateNumber",1453}, {""}, {""}, {""}, - {"streamOfAnalysis",2075}, + {"streamOfAnalysis",2076}, {"binaryScaleFactor",360}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"verificationDate",2275}, + {"verificationDate",2276}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"NAT",172}, {"oneMillionConstant",1500}, @@ -3368,13 +3368,13 @@ static const struct grib_keys_hash wordlist[] = {"marsLevelist",1204}, {"memberNumber",1260}, {""}, - {"widthOfFirstOrderValues",2308}, + {"widthOfFirstOrderValues",2309}, {""}, {""}, {""}, {""}, {""}, {""}, {"endOfRange",744}, {""}, {""}, {""}, {""}, {""}, {"FirstLatitude",68}, {""}, {""}, - {"verticalDomainTemplateNumber",2290}, + {"verticalDomainTemplateNumber",2291}, {""}, {""}, {"ensembleForecastNumbers",754}, {"baseAddress",325}, @@ -3395,7 +3395,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {"partitionNumber",1623}, {""}, - {"theMessage",2118}, + {"theMessage",2119}, {"clusterMember9",535}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"addressOfFileFreeSpaceInfo",294}, @@ -3408,11 +3408,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {"optimizeScaleFactor",1515}, {""}, - {"thisMarsStream",2121}, + {"thisMarsStream",2122}, {"instrumentType",973}, {"localMinute",1132}, {""}, {""}, {""}, {""}, {""}, {""}, - {"thisMarsType",2122}, + {"thisMarsType",2123}, {"numberOfIterations",1392}, {""}, {""}, {"secondDimensionPhysicalSignificance",1903}, @@ -3460,7 +3460,7 @@ static const struct grib_keys_hash wordlist[] = {"marsParam",1207}, {"SPD",222}, {""}, - {"userDateTimeEnd",2253}, + {"userDateTimeEnd",2254}, {"operatingMode",1512}, {""}, {"radialAngularSpacing",1712}, @@ -3469,14 +3469,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {"epsPoint",760}, {""}, - {"userDateEnd",2251}, + {"userDateEnd",2252}, {""}, {""}, {""}, {""}, {""}, {"firstLatitude",842}, {"biFourierTruncationType",359}, {""}, {""}, {""}, {""}, {""}, {"horizontalCoordinateDefinition",923}, {"secondLatitude",1904}, - {"unitOfOffsetFromReferenceTime",2226}, + {"unitOfOffsetFromReferenceTime",2227}, {""}, {""}, {""}, {""}, {"lowerRange",1179}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -3490,7 +3490,7 @@ static const struct grib_keys_hash wordlist[] = {"spectralDataRepresentationMode",2044}, {"minuteOfReference",1273}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unitsOfFirstFixedSurface",2237}, + {"unitsOfFirstFixedSurface",2238}, {""}, {"faLevelName",828}, {""}, {""}, @@ -3498,40 +3498,40 @@ static const struct grib_keys_hash wordlist[] = {""}, {"iDirectionIncrement",937}, {"SecondLatitude",223}, - {"userTimeEnd",2255}, + {"userTimeEnd",2256}, {""}, {"numberOfDistinctSection9s",1375}, {""}, {"roundedMarsLevelist",1784}, {"scaleFactorOfFirstSize",1851}, - {"tiggeModel",2130}, + {"tiggeModel",2131}, {"dateOfReference",639}, {""}, {""}, {""}, {""}, {""}, {""}, {"siteElevation",2012}, {""}, - {"timeOfReference",2146}, + {"timeOfReference",2147}, {""}, - {"timeIncrement",2141}, + {"timeIncrement",2142}, {"clusterMember8",534}, {"scanningMode",1892}, {""}, {""}, - {"unitsOfSecondFixedSurface",2238}, + {"unitsOfSecondFixedSurface",2239}, {""}, {""}, {""}, {""}, {"monthOfAnalysis",1292}, {""}, {"representationMode",1760}, {""}, {""}, {""}, {"classOfAnalysis",420}, - {"xDirectionGridLength",2341}, + {"xDirectionGridLength",2342}, {""}, {""}, {""}, {""}, {"spectralDataRepresentationType",2045}, {""}, - {"unsignedIntegers",2244}, + {"unsignedIntegers",2245}, {""}, - {"treatmentOfMissingData",2169}, + {"treatmentOfMissingData",2170}, {"Lx",149}, {""}, {""}, {""}, {""}, {""}, - {"timeDomainTemplateNumber",2140}, + {"timeDomainTemplateNumber",2141}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"defaultFaLevelName",654}, {""}, @@ -3545,7 +3545,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {"identificationNumber",945}, {""}, - {"yearOfReference",2359}, + {"yearOfReference",2360}, {""}, {"Lcx",118}, {"NL",182}, @@ -3582,9 +3582,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"dateOfAnalysis",634}, {""}, {""}, {""}, - {"tablesMasterDir",2107}, + {"tablesMasterDir",2108}, {""}, {""}, {""}, {""}, - {"timeOfAnalysis",2143}, + {"timeOfAnalysis",2144}, {""}, {"biFourierMakeTemplate",352}, {""}, {""}, @@ -3594,7 +3594,7 @@ static const struct grib_keys_hash wordlist[] = {"productDefinitionTemplateNumber",1690}, {""}, {"corr2Data",592}, - {"tileIndex",2136}, + {"tileIndex",2137}, {""}, {"hourOfReference",933}, {"numberOfAnalysis",1338}, @@ -3619,7 +3619,7 @@ static const struct grib_keys_hash wordlist[] = {"scaleFactorOfSecondSize",1861}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"yearOfAnalysis",2354}, + {"yearOfAnalysis",2355}, {""}, {""}, {""}, {"productDefinitionTemplateNumberInternal",1691}, {""}, @@ -3630,7 +3630,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {"eastLongitudeOfCluster",706}, {""}, - {"typeOfAnalysis",2182}, + {"typeOfAnalysis",2183}, {""}, {""}, {""}, {"inputDelayedDescriptorReplicationFactor",965}, {"angleOfRotation",303}, @@ -3639,9 +3639,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"iScansNegatively",942}, {""}, - {"typeOfEnsembleForecast",2187}, + {"typeOfEnsembleForecast",2188}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"temperatureAndDewpointPresent",2114}, + {"temperatureAndDewpointPresent",2115}, {""}, {""}, {""}, {""}, {""}, {""}, {"DiInMetres",34}, {""}, {""}, @@ -3669,7 +3669,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"hourOfAnalysis",929}, {""}, - {"unitOfTimeIncrement",2228}, + {"unitOfTimeIncrement",2229}, {""}, {"charValues",417}, {"normAtFinalTime",1317}, @@ -3681,7 +3681,7 @@ static const struct grib_keys_hash wordlist[] = {"gridDefinitionTemplateNumber",900}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfTimeIncrement",2207}, + {"typeOfTimeIncrement",2208}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -3698,7 +3698,7 @@ static const struct grib_keys_hash wordlist[] = {"latitudeWhereDxAndDyAreSpecified",1070}, {"defaultParameter",657}, {""}, {""}, {""}, {""}, - {"truncateDegrees",2172}, + {"truncateDegrees",2173}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"sp3",2037}, {"latitudeWhereDxAndDyAreSpecifiedInDegrees",1071}, @@ -3716,7 +3716,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"codedValues",547}, {""}, {""}, - {"versionNumOfFilesFreeSpaceStorage",2280}, + {"versionNumOfFilesFreeSpaceStorage",2281}, {""}, {""}, {""}, {""}, {""}, {"applicationIdentifier",311}, {""}, {""}, @@ -3727,7 +3727,8 @@ static const struct grib_keys_hash wordlist[] = {"longitudeOfLastGridPoint",1157}, {""}, {""}, {""}, {"julianDay",1025}, - {""}, {""}, {""}, {""}, + {""}, {""}, {""}, + {"stepHuman",2066}, {"localDefNumberTwo",1118}, {"lengthIncrementForTheGroupLengths",1082}, {""}, {""}, {""}, {""}, @@ -3811,24 +3812,24 @@ static const struct grib_keys_hash wordlist[] = {"numberOfDistributionFunctionParameters",1376}, {"localHour",1125}, {""}, - {"tablesVersion",2108}, + {"tablesVersion",2109}, {""}, - {"westLongitudeOfCluster",2304}, + {"westLongitudeOfCluster",2305}, {""}, {"bitmapSectionPresent",364}, {""}, {""}, {""}, {""}, {""}, {"secondsOfAnalysis",1920}, - {"typeOfIntervalForFirstAndSecondSize",2193}, + {"typeOfIntervalForFirstAndSecondSize",2194}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"biFourierSubTruncationType",358}, {""}, {"section4",1944}, {""}, {""}, {""}, - {"typeOfSecondFixedSurface",2203}, + {"typeOfSecondFixedSurface",2204}, {""}, {""}, {"groupLeafNodeK",906}, {""}, {""}, - {"stringValues",2078}, + {"stringValues",2079}, {""}, {"averagingPeriod",319}, {""}, {""}, {""}, @@ -3847,17 +3848,17 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {"groupSplittingMethodUsed",909}, {"floatValues",854}, - {"typicalMinute",2215}, + {"typicalMinute",2216}, {""}, - {"typicalHour",2214}, + {"typicalHour",2215}, {""}, - {"widthOfSPD",2310}, + {"widthOfSPD",2311}, {""}, {""}, {"directionScalingFactor",682}, {""}, {""}, {""}, {""}, {"constantFieldHalfByte",566}, {"secondsOfReference",1921}, - {"windPresent",2322}, + {"windPresent",2323}, {""}, {""}, {""}, {"defaultFaModelName",655}, {""}, {""}, @@ -3867,7 +3868,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {"numberOfDataMatrices",1362}, {""}, - {"typeOfIntervalForFirstAndSecondWavelength",2194}, + {"typeOfIntervalForFirstAndSecondWavelength",2195}, {""}, {"julianForecastDay",1026}, {""}, {""}, @@ -3879,7 +3880,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {"aerosolbinnumber",296}, {""}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfdimensions",2168}, + {"totalNumberOfdimensions",2169}, {""}, {""}, {"CDFstr",23}, {""}, @@ -3894,9 +3895,9 @@ static const struct grib_keys_hash wordlist[] = {"CDF",22}, {""}, {""}, {""}, {""}, {""}, {"lengthOfProjectLocalTemplate",1088}, - {"thresholdIndicator",2126}, + {"thresholdIndicator",2127}, {""}, {""}, - {"totalNumberOfDirections",2159}, + {"totalNumberOfDirections",2160}, {""}, {"meaningOfVerticalCoordinate",1259}, {""}, {""}, {""}, @@ -3911,22 +3912,22 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"probabilityTypeName",1685}, {""}, - {"yDirectionGridLengthInMetres",2349}, + {"yDirectionGridLengthInMetres",2350}, {""}, {""}, - {"typeOfFirstFixedSurface",2189}, - {"typeOfHorizontalLine",2192}, + {"typeOfFirstFixedSurface",2190}, + {"typeOfHorizontalLine",2193}, {""}, {""}, {""}, {"orientationOfTheGrid",1520}, {""}, {""}, {""}, {"centuryOfReference",402}, {""}, {""}, {"indicatorOfTypeOfLevel",960}, - {"totalNumberOfTubes",2166}, + {"totalNumberOfTubes",2167}, {"laplacianScalingFactor",1037}, {""}, {""}, {"startingAzimuth",2059}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"versionNumberOfGribLocalTables",2284}, + {"versionNumberOfGribLocalTables",2285}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"dewPointTemperature",671}, {""}, {""}, {""}, {""}, {""}, @@ -3938,7 +3939,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"DxInMetres",42}, {""}, {""}, {""}, - {"totalNumberOfFrequencies",2161}, + {"totalNumberOfFrequencies",2162}, {""}, {""}, {""}, {""}, {""}, {""}, {"cfVarName",406}, {""}, {""}, {""}, {""}, @@ -3960,12 +3961,12 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {"numberOfModeOfDistribution",1400}, {""}, {""}, - {"yDirectionGridLengthInMillimetres",2350}, + {"yDirectionGridLengthInMillimetres",2351}, {"NR",184}, {""}, {""}, {""}, {""}, {"longitudeOfStretchingPole",1165}, {"projectionCentreFlag",1698}, - {"unitsBias",2231}, + {"unitsBias",2232}, {""}, {""}, {""}, {""}, {"rdbtimeMinute",1729}, {""}, @@ -4021,13 +4022,13 @@ static const struct grib_keys_hash wordlist[] = {"azimuthalWidth",321}, {"primaryBitmap",1678}, {""}, {""}, {""}, - {"tileClassification",2135}, + {"tileClassification",2136}, {""}, {"additionalFlagPresent",293}, {""}, {""}, {"orientationOfTheGridInDegrees",1521}, {""}, - {"typeOfPostProcessing",2199}, + {"typeOfPostProcessing",2200}, {""}, {""}, {"AA",6}, {""}, {""}, {""}, @@ -4050,26 +4051,26 @@ static const struct grib_keys_hash wordlist[] = {""}, {"shapeOfTheEarth",2001}, {""}, - {"windSpeedTrend3",2326}, - {"windDirectionTrend3",2315}, + {"windSpeedTrend3",2327}, + {"windDirectionTrend3",2316}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tsectionNumber3",2174}, + {"tsectionNumber3",2175}, {""}, {""}, {"offsetSection3",1488}, {"isectionNumber3",1012}, {""}, {""}, {""}, {"extendedFlag",783}, {""}, - {"typeOfAuxiliaryInformation",2183}, + {"typeOfAuxiliaryInformation",2184}, {""}, {""}, {""}, - {"verticalCoordinate",2287}, + {"verticalCoordinate",2288}, {""}, {""}, {""}, {""}, {""}, {""}, {"simpleThinningMissingRadius",2009}, {"section0Pointer",1924}, {""}, {""}, {""}, {""}, {"short_name",2005}, {""}, - {"windVariableDirection",2333}, + {"windVariableDirection",2334}, {"frequencyNumber",869}, {""}, {""}, {""}, {"correction4Part",603}, @@ -4082,18 +4083,18 @@ static const struct grib_keys_hash wordlist[] = {""}, {"numberOfPartitions",1408}, {"oneConstant",1499}, - {"tableReference",2105}, + {"tableReference",2106}, {""}, {""}, {"complexPacking",551}, {""}, {""}, - {"verticalCoordinateDefinition",2288}, + {"verticalCoordinateDefinition",2289}, {""}, {"numberOfOctectsForNumberOfPoints",1402}, {"LoR",126}, {""}, {""}, {""}, {""}, {"section_09",1980}, {""}, - {"targetCompressionRatio",2110}, + {"targetCompressionRatio",2111}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"centuryOfReferenceTimeOfData",403}, {""}, {""}, @@ -4111,14 +4112,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"interpretationOfNumberOfPoints",981}, {""}, {""}, {""}, {""}, {""}, - {"tiggeCentre",2127}, - {"subCentre",2079}, + {"tiggeCentre",2128}, + {"subCentre",2080}, {""}, {""}, {""}, {"grib1divider",887}, {""}, {""}, {""}, {"lengthOfHeaders",1084}, {""}, {""}, {""}, {""}, - {"tableCode",2103}, + {"tableCode",2104}, {"angleOfRotationInDegrees",304}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"easternLongitudeOfDomain",709}, @@ -4136,7 +4137,7 @@ static const struct grib_keys_hash wordlist[] = {"cnmc_cmcc",541}, {"local_use",1143}, {""}, - {"verticalVisibility",2291}, + {"verticalVisibility",2292}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"is_efas",1005}, @@ -4151,12 +4152,12 @@ static const struct grib_keys_hash wordlist[] = {"centralLongitude",394}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"legBaseTime",1078}, - {"windSpeedTrend4",2327}, - {"windDirectionTrend4",2316}, + {"windSpeedTrend4",2328}, + {"windDirectionTrend4",2317}, {""}, {""}, {""}, {""}, {""}, {"reservedNeedNotBePresent",1767}, - {"totalNumberOfTileAttributePairs",2165}, - {"tsectionNumber4",2175}, + {"totalNumberOfTileAttributePairs",2166}, + {"tsectionNumber4",2176}, {"LcyInMetres",121}, {""}, {"offsetSection4",1489}, @@ -4168,13 +4169,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {"gts_header",915}, {""}, - {"typeOfCompressionUsed",2185}, + {"typeOfCompressionUsed",2186}, {""}, {"modelVersionTime",1289}, {""}, {""}, {""}, {"LuyInMetres",148}, {""}, {""}, - {"totalNumberOfForecastProbabilities",2160}, + {"totalNumberOfForecastProbabilities",2161}, {""}, {""}, {"section_8",1990}, {""}, {""}, @@ -4185,7 +4186,7 @@ static const struct grib_keys_hash wordlist[] = {"halfByte",916}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"xDirectionGridLengthInMetres",2342}, + {"xDirectionGridLengthInMetres",2343}, {""}, {""}, {""}, {""}, {""}, {""}, {"decimalPrecision",651}, {""}, {""}, @@ -4195,8 +4196,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"numberOfVerticalPoints",1449}, {""}, - {"subSetM",2090}, - {"verifyingMonth",2278}, + {"subSetM",2091}, + {"verifyingMonth",2279}, {""}, {""}, {""}, {""}, {""}, {""}, {"bufrHeaderCentre",372}, {""}, {""}, @@ -4217,7 +4218,7 @@ static const struct grib_keys_hash wordlist[] = {"scaleFactorOfSecondWavelength",1862}, {""}, {""}, {""}, {"modelErrorType",1285}, - {"tigge_name",2133}, + {"tigge_name",2134}, {""}, {""}, {""}, {"numberOfVerticalCoordinateValues",1447}, {"scaleFactorAtReferencePoint",1844}, @@ -4229,7 +4230,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"bitmapPresent",363}, {""}, {""}, {""}, {""}, - {"stepInHours",2066}, + {"stepInHours",2067}, {""}, {"numberOfVerticalGridDescriptors",1448}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -4239,7 +4240,7 @@ static const struct grib_keys_hash wordlist[] = {"numberOfValues",1446}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"consensusCount",563}, - {"xDirectionGridLengthInMillimetres",2343}, + {"xDirectionGridLengthInMillimetres",2344}, {""}, {"md5Data",1233}, {"scaleFactorOfRadiusOfSphericalEarth",1859}, @@ -4247,7 +4248,7 @@ static const struct grib_keys_hash wordlist[] = {"scaleFactorOfFirstWavelength",1852}, {""}, {""}, {""}, {"predefined_grid_values",1655}, - {"verificationMonth",2276}, + {"verificationMonth",2277}, {"kurt",1031}, {""}, {""}, {""}, {""}, {""}, {""}, {"doExtractArea",689}, @@ -4291,9 +4292,9 @@ static const struct grib_keys_hash wordlist[] = {"keySat",1029}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"updateSequenceNumber",2246}, + {"updateSequenceNumber",2247}, {""}, {""}, {""}, - {"totalNumberOfIterations",2163}, + {"totalNumberOfIterations",2164}, {""}, {"setCalendarId",1996}, {"epsContinous",759}, @@ -4301,7 +4302,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"matrixOfValues",1230}, - {"typeOfSizeInterval",2204}, + {"typeOfSizeInterval",2205}, {""}, {"conceptsMasterMarsDir",561}, {""}, {""}, {""}, {""}, @@ -4313,14 +4314,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"LxInMetres",150}, {""}, {""}, {""}, {""}, {""}, - {"typeOfEnsembleMember",2188}, + {"typeOfEnsembleMember",2189}, {""}, {""}, {""}, - {"westernLongitudeOfDomain",2307}, + {"westernLongitudeOfDomain",2308}, {"numberOfForecastsInEnsemble",1381}, {"flagForAnyFurtherInformation",848}, {""}, {""}, {""}, {"numberOfChars",1349}, - {"trueLengthOfLastGroup",2171}, + {"trueLengthOfLastGroup",2172}, {""}, {"expandBy",763}, {"correction3",600}, @@ -4340,7 +4341,7 @@ static const struct grib_keys_hash wordlist[] = {"localNumberOfObservations",1134}, {"coordinate3Flag",580}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"versionNumberOfExperimentalSuite",2283}, + {"versionNumberOfExperimentalSuite",2284}, {""}, {""}, {""}, {""}, {""}, {"presentTrend3",1659}, {"centralClusterDefinition",393}, @@ -4392,11 +4393,11 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {"isCorrection",991}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tablesVersionLatest",2109}, + {"tablesVersionLatest",2110}, {""}, {""}, - {"upperThreshold",2249}, + {"upperThreshold",2250}, {""}, {""}, - {"stepRangeInHours",2068}, + {"stepRangeInHours",2069}, {""}, {"rangeBinSpacing",1720}, {""}, {""}, {""}, {""}, {""}, @@ -4420,7 +4421,7 @@ static const struct grib_keys_hash wordlist[] = {"extractDateTimeMinuteEnd",802}, {""}, {""}, {""}, {"LcxInMetres",119}, - {"totalInitialConditions",2154}, + {"totalInitialConditions",2155}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"md5Structure",1248}, {""}, {""}, {""}, @@ -4440,16 +4441,16 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {"presentTrend4",1660}, {""}, {""}, {""}, - {"yearOfCentury",2355}, + {"yearOfCentury",2356}, {""}, {""}, {"coordAveraging0",569}, {"param_value_min",1611}, {""}, {"extractDateTimeMonthStart",807}, {""}, - {"timeRangeIndicator",2147}, + {"timeRangeIndicator",2148}, {""}, {""}, - {"timeCoordinateDefinition",2138}, + {"timeCoordinateDefinition",2139}, {""}, {""}, {""}, {""}, {""}, {"flagForIrregularGridCoordinateList",849}, {"cloudsTitle3",515}, @@ -4459,8 +4460,8 @@ static const struct grib_keys_hash wordlist[] = {"section3Padding",1941}, {"referenceReflectivityForEchoTop",1752}, {""}, - {"totalNumberOfRepetitions",2164}, - {"unknown",2239}, + {"totalNumberOfRepetitions",2165}, + {"unknown",2240}, {""}, {"operationalForecastCluster",1513}, {""}, @@ -4484,7 +4485,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {"packingType",1535}, {"earthMajorAxis",702}, - {"typeOfOriginalFieldValues",2197}, + {"typeOfOriginalFieldValues",2198}, {"gridCoordinate",896}, {""}, {""}, {"extractDateTimeSecondEnd",808}, @@ -4528,7 +4529,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {"endMinuteTrend3",733}, {""}, {""}, {""}, - {"timeRangeIndicatorFromStepRange",2148}, + {"timeRangeIndicatorFromStepRange",2149}, {"cloudsTitle1Trend4",509}, {""}, {""}, {""}, {""}, {""}, {""}, {"clusterMember3",529}, @@ -4545,7 +4546,7 @@ static const struct grib_keys_hash wordlist[] = {"numberOfDataPoints",1363}, {""}, {""}, {""}, {"numberOfLogicals",1394}, - {"typicalCentury",2210}, + {"typicalCentury",2211}, {""}, {""}, {""}, {""}, {""}, {""}, {"sp2",2036}, {""}, {""}, {""}, {""}, @@ -4600,7 +4601,7 @@ static const struct grib_keys_hash wordlist[] = {"numberOfForecastsInCluster",1380}, {"scaledValueOfSecondSize",1885}, {""}, {""}, {""}, {""}, - {"widthOfLengths",2309}, + {"widthOfLengths",2310}, {""}, {""}, {""}, {""}, {""}, {"section3Pointer",1942}, {""}, @@ -4628,7 +4629,7 @@ static const struct grib_keys_hash wordlist[] = {"extractDateTimeEnd",798}, {"section0Length",1923}, {""}, {""}, {""}, - {"tiggeLAMName",2128}, + {"tiggeLAMName",2129}, {"coordinate4Flag",583}, {""}, {""}, {"Lo1InDegrees",124}, @@ -4665,19 +4666,19 @@ static const struct grib_keys_hash wordlist[] = {"reserved2",1765}, {"correction4",602}, {""}, - {"windVariableDirectionTrend3",2336}, + {"windVariableDirectionTrend3",2337}, {""}, {"longitudeOfFirstDiamondCenterLine",1151}, {""}, {"longitudeOfFirstDiamondCentreLine",1152}, - {"twoOrdersOfSPD",2180}, + {"twoOrdersOfSPD",2181}, {""}, {""}, {""}, {"section10Pointer",1927}, {""}, {""}, {""}, {""}, {"latitudeOfNorthWestCornerOfArea",1054}, {"longitudeOfFirstDiamondCentreLineInDegrees",1153}, {""}, {""}, {""}, {""}, {""}, - {"typeOfCalendar",2184}, + {"typeOfCalendar",2185}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"DjInMetres",38}, @@ -4700,7 +4701,7 @@ static const struct grib_keys_hash wordlist[] = {"monthlyVerificationMonth",1298}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windVariableDirectionTrend4",2337}, + {"windVariableDirectionTrend4",2338}, {""}, {""}, {""}, {"latitudeLongitudeValues",1045}, {""}, {""}, {""}, {""}, @@ -4717,21 +4718,21 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"g1conceptsMasterDir",874}, {""}, {""}, {""}, {""}, {""}, {""}, - {"swapScanningLat",2095}, + {"swapScanningLat",2096}, {""}, {""}, {""}, {""}, {"sectionLengthLimitForEnsembles",1968}, {""}, {""}, {""}, {""}, - {"unitsConversionOffset",2232}, - {"tigge_short_name",2134}, - {"thisMarsClass",2120}, + {"unitsConversionOffset",2233}, + {"tigge_short_name",2135}, + {"thisMarsClass",2121}, {""}, {""}, - {"swapScanningLon",2096}, + {"swapScanningLon",2097}, {""}, {""}, {""}, {"boot_edition",367}, {""}, {"inputProcessIdentifier",969}, {""}, - {"versionNumOfRootGroupSymbolTableEntry",2281}, + {"versionNumOfRootGroupSymbolTableEntry",2282}, {""}, {"reservedSection3",1770}, {""}, @@ -4755,11 +4756,11 @@ static const struct grib_keys_hash wordlist[] = {"marsType1",1216}, {"latitudeOfSouthernPole",1058}, {""}, {""}, {""}, - {"stepUnits",2072}, + {"stepUnits",2073}, {""}, {""}, {"scaleFactorOfLowerLimit",1855}, {""}, {""}, {""}, - {"yearOfEndOfOverallTimeInterval",2356}, + {"yearOfEndOfOverallTimeInterval",2357}, {""}, {""}, {""}, {""}, {"numberOfComponents",1357}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -4770,7 +4771,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"matchAerosolBinNumber",1224}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"totalLength",2155}, + {"totalLength",2156}, {""}, {""}, {""}, {""}, {"numberOfClusters",1352}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -4791,7 +4792,7 @@ static const struct grib_keys_hash wordlist[] = {"N2",171}, {"latitudeOfTangencyPoint",1064}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfDataValuesMissingInStatisticalProcess",2158}, + {"totalNumberOfDataValuesMissingInStatisticalProcess",2159}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"hourOfEndOfOverallTimeInterval",930}, {""}, @@ -4799,7 +4800,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {"secondaryMissingValueSubstitute",1919}, {""}, {""}, - {"table2Version",2102}, + {"table2Version",2103}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"X2",264}, @@ -4809,7 +4810,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {"section6",1953}, {""}, {""}, {""}, - {"totalAerosolBinsNumbers",2153}, + {"totalAerosolBinsNumbers",2154}, {"fileConsistencyFlags",838}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"SOH",221}, @@ -4844,7 +4845,7 @@ static const struct grib_keys_hash wordlist[] = {"localExtensionPadding",1122}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfPreProcessing",2200}, + {"typeOfPreProcessing",2201}, {"Nj",195}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -4856,8 +4857,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"beginMinuteTrend4",342}, {""}, - {"windSpeedTrend2",2325}, - {"windDirectionTrend2",2314}, + {"windSpeedTrend2",2326}, + {"windDirectionTrend2",2315}, {""}, {""}, {""}, {""}, {""}, {"coordinate2Flag",578}, {""}, {""}, {""}, @@ -4879,7 +4880,7 @@ static const struct grib_keys_hash wordlist[] = {"Lor2",143}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"swapScanningX",2097}, + {"swapScanningX",2098}, {""}, {""}, {""}, {"masterTablesVersionNumberLatest",1223}, {""}, {""}, {""}, {""}, {""}, @@ -4897,14 +4898,14 @@ static const struct grib_keys_hash wordlist[] = {"groupLengths",907}, {"section1Padding",1932}, {""}, {""}, - {"versionOfModelClimate",2286}, + {"versionOfModelClimate",2287}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"secondaryBitMap",1912}, {""}, {""}, {"numberOfPackedValues",1405}, {"sectionLengthLimitForProbability",1969}, {""}, - {"windUnits",2328}, + {"windUnits",2329}, {""}, {"X1",262}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -4926,7 +4927,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {"lengthOf4DvarWindow",1083}, {""}, {""}, - {"subDefinitions2",2081}, + {"subDefinitions2",2082}, {"longitudeOfSubSatellitePointInDegrees",1168}, {"cloudsTitle1Trend1",506}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -4963,7 +4964,7 @@ static const struct grib_keys_hash wordlist[] = {"spaceUnitFlag",2038}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typeOfGrid",2191}, + {"typeOfGrid",2192}, {""}, {""}, {""}, {""}, {""}, {"biFourierResolutionParameterN",355}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -4971,8 +4972,8 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {"bitsPerValue",365}, {""}, - {"windSpeedTrend1",2324}, - {"windDirectionTrend1",2313}, + {"windSpeedTrend1",2325}, + {"windDirectionTrend1",2314}, {"cloudsTitle3Trend4",519}, {""}, {""}, {""}, {""}, {""}, {"scaleFactorOfLengthOfSemiMinorAxis",1854}, @@ -4994,7 +4995,7 @@ static const struct grib_keys_hash wordlist[] = {"INBITS",90}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"Lor1",141}, - {"unitOfTimeRange",2229}, + {"unitOfTimeRange",2230}, {""}, {""}, {""}, {""}, {""}, {""}, {"parametersVersion",1621}, {""}, @@ -5002,7 +5003,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"NUT",187}, {""}, {""}, - {"thisExperimentVersionNumber",2119}, + {"thisExperimentVersionNumber",2120}, {""}, {""}, {""}, {"param_value_max",1610}, {""}, @@ -5010,7 +5011,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"preProcessingParameter",1651}, {""}, {""}, - {"windGust",2317}, + {"windGust",2318}, {"default_min_val",663}, {""}, {""}, {""}, {""}, {""}, {""}, {"NH",179}, @@ -5023,7 +5024,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {"biFourierResolutionSubSetParameterN",357}, {""}, {""}, {""}, {""}, - {"windVariableDirectionTrend2",2335}, + {"windVariableDirectionTrend2",2336}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"northWestLongitudeOfLPOArea",1324}, @@ -5032,9 +5033,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {"section1Pointer",1933}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typicalYear",2219}, + {"typicalYear",2220}, {""}, {""}, {""}, {""}, {""}, - {"subDefinitions1",2080}, + {"subDefinitions1",2081}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"percentileValue",1634}, @@ -5042,7 +5043,7 @@ static const struct grib_keys_hash wordlist[] = {"rootGroupObjectHeaderAddress",1780}, {"endMonthTrend4",738}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unpackedError",2241}, + {"unpackedError",2242}, {""}, {""}, {""}, {""}, {""}, {"extractAreaNorthLatitude",792}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -5064,18 +5065,18 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {"southEastLatitudeOfLPOArea",2026}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibility",2263}, + {"variationOfVisibility",2264}, {""}, {""}, {""}, {""}, - {"windVariableDirectionTrend1",2334}, + {"windVariableDirectionTrend1",2335}, {""}, {""}, - {"variationOfVisibilityDirection",2264}, + {"variationOfVisibilityDirection",2265}, {""}, {""}, {""}, {"accuracyMultipliedByFactor",290}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityDirectionAngle",2265}, + {"variationOfVisibilityDirectionAngle",2266}, {"section6Pointer",1955}, {""}, {""}, {""}, {""}, {""}, {""}, - {"yCoordinateOfOriginOfSectorImage",2346}, + {"yCoordinateOfOriginOfSectorImage",2347}, {""}, {"offsetSection6",1491}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -5086,7 +5087,7 @@ static const struct grib_keys_hash wordlist[] = {"latitudeOfSouthernPoleInDegrees",1059}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"firstDimensionCoordinateValueDefinition",840}, - {"timeIncrementBetweenSuccessiveFields",2142}, + {"timeIncrementBetweenSuccessiveFields",2143}, {""}, {""}, {"numberOfBytesOfFreeFormatData",1345}, {""}, {""}, @@ -5095,7 +5096,7 @@ static const struct grib_keys_hash wordlist[] = {"recentWeatherTry",1738}, {""}, {""}, {"runwayFrictionCoefficientState3",1832}, - {"visibilityInKilometresTrend3",2296}, + {"visibilityInKilometresTrend3",2297}, {"numberOfBytesInLocalDefinition",1344}, {""}, {"rootTablesDir",1782}, @@ -5109,7 +5110,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"numberOfDistinctSection5s",1371}, {""}, {""}, {""}, - {"unitsConversionScaleFactor",2233}, + {"unitsConversionScaleFactor",2234}, {""}, {""}, {""}, {"presentTrend2",1658}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -5122,7 +5123,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {"formatVersionMinorNumber",866}, {""}, {""}, {""}, {""}, {""}, {""}, - {"visibilityTrend1",2298}, + {"visibilityTrend1",2299}, {""}, {""}, {""}, {"jScansPositively",1024}, {"section4Length",1945}, @@ -5132,7 +5133,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {"rdbtimeYear",1733}, {""}, {""}, {""}, - {"visibilityTrend3",2300}, + {"visibilityTrend3",2301}, {""}, {""}, {""}, {"coordinateFlag1",586}, {""}, @@ -5151,7 +5152,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"numberOfDaysInClimateSamplingWindow",1366}, {""}, {""}, - {"typeOfSSTFieldUsed",2202}, + {"typeOfSSTFieldUsed",2203}, {""}, {""}, {""}, {""}, {""}, {"MonthOfModelVersion",168}, {""}, {""}, {""}, @@ -5164,13 +5165,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {"southPoleOnProjectionPlane",2032}, {"marsKeywords1",1200}, - {"typicalMonth",2216}, + {"typicalMonth",2217}, {""}, {""}, {"listOfParametersUsedForClustering",1111}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfValuesInUnpackedSubset",2167}, + {"totalNumberOfValuesInUnpackedSubset",2168}, {""}, {""}, - {"visibilityInKilometresTrend4",2297}, + {"visibilityInKilometresTrend4",2298}, {""}, {""}, {"cloudsTitle4Trend3",523}, {"cloudsBaseCoded1Trend3",468}, @@ -5184,7 +5185,7 @@ static const struct grib_keys_hash wordlist[] = {"is_ocean2d_param",1006}, {"firstOrderValues",846}, {""}, - {"typeOfWavelengthInterval",2209}, + {"typeOfWavelengthInterval",2210}, {"qnhUnits",1707}, {""}, {""}, {""}, {"section_4",1986}, @@ -5207,7 +5208,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {"secondOrderValuesDifferentWidths",1911}, {""}, - {"subLocalDefinition2",2083}, + {"subLocalDefinition2",2084}, {""}, {""}, {"expandedUnits",776}, {""}, @@ -5220,7 +5221,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {"offsetFromReferenceOfFirstTime",1481}, {""}, - {"unexpandedDescriptors",2224}, + {"unexpandedDescriptors",2225}, {""}, {""}, {""}, {""}, {""}, {""}, {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1856}, {"cloudsTitle4Trend4",524}, @@ -5244,14 +5245,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {"numberOfClusterLowResolution",1351}, {""}, - {"unexpandedDescriptorsEncoded",2225}, + {"unexpandedDescriptorsEncoded",2226}, {""}, {""}, {""}, {""}, {""}, {""}, {"section9UniqueIdentifier",1967}, {""}, {"southEastLongitudeOfLPOArea",2028}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"grib2LocalSectionPresent",889}, - {"widthOfWidths",2311}, + {"widthOfWidths",2312}, {""}, {""}, {""}, {""}, {""}, {"earthMajorAxisInMetres",703}, {""}, {""}, {""}, {""}, {""}, @@ -5265,15 +5266,15 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"clusterMember2",528}, - {"upperThresholdValue",2250}, + {"upperThresholdValue",2251}, {"forecastOrSingularVectorNumber",857}, {""}, {""}, {"numberOfCodedValues",1353}, {""}, {""}, {""}, {""}, {""}, {"rdbtimeMonth",1730}, {""}, {""}, - {"wrongPadding",2338}, - {"unpackedSubsetPrecision",2242}, + {"wrongPadding",2339}, + {"unpackedSubsetPrecision",2243}, {""}, {""}, {"md5Headers",1236}, {""}, @@ -5289,7 +5290,7 @@ static const struct grib_keys_hash wordlist[] = {"Latin2InDegrees",117}, {""}, {""}, {""}, {"alternativeRowScanning",298}, - {"unitsECMF",2235}, + {"unitsECMF",2236}, {""}, {"experimentVersionNumber",777}, {""}, {""}, @@ -5306,11 +5307,11 @@ static const struct grib_keys_hash wordlist[] = {"runwayDesignatorState2",1811}, {"section7",1957}, {"endDayTrend2",721}, - {"verticalVisibilityCoded",2292}, + {"verticalVisibilityCoded",2293}, {""}, {""}, {""}, {""}, {""}, {"section8UniqueIdentifier",1964}, {""}, {""}, {""}, {""}, {""}, - {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2208}, + {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2209}, {""}, {""}, {"numberOfStepsUsedForClustering",1434}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -5322,7 +5323,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {"gaussianGridName",876}, {""}, - {"xCoordinateOfOriginOfSectorImage",2339}, + {"xCoordinateOfOriginOfSectorImage",2340}, {""}, {""}, {"P2",208}, {"latitudeOfSubSatellitePoint",1062}, @@ -5332,7 +5333,7 @@ static const struct grib_keys_hash wordlist[] = {"md5Section6",1244}, {"intervalBetweenTimes",982}, {""}, - {"subLocalDefinition1",2082}, + {"subLocalDefinition1",2083}, {""}, {"packedValues",1533}, {"numberOfUsedTileAttributes",1442}, @@ -5362,7 +5363,7 @@ static const struct grib_keys_hash wordlist[] = {"Latin1InDegrees",115}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tiggeSuiteID",2132}, + {"tiggeSuiteID",2133}, {""}, {""}, {"beginDayTrend2",332}, {""}, @@ -5391,11 +5392,11 @@ static const struct grib_keys_hash wordlist[] = {"cloudsAbbreviation4Trend3",443}, {""}, {""}, {""}, {""}, {"endMinuteTrend1",731}, - {"totalNumberOfClusters",2157}, + {"totalNumberOfClusters",2158}, {""}, - {"versionNumOfSharedHeaderMessageFormat",2282}, + {"versionNumOfSharedHeaderMessageFormat",2283}, {""}, {""}, {""}, {""}, - {"tablesLocalDir",2106}, + {"tablesLocalDir",2107}, {"numberInMixedCoordinateDefinition",1333}, {""}, {"endGridDefinition",725}, @@ -5437,7 +5438,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {"localLatitude1",1127}, {""}, - {"visibilityTrend4",2301}, + {"visibilityTrend4",2302}, {""}, {""}, {""}, {""}, {"P1",207}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -5453,13 +5454,13 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"integerPointValues",974}, {""}, {""}, - {"subdivisionsOfBasicAngle",2092}, + {"subdivisionsOfBasicAngle",2093}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"section2Length",1934}, {"Ensemble_Identifier",52}, {""}, {""}, {""}, {""}, {""}, - {"unpackedValues",2243}, + {"unpackedValues",2244}, {""}, {""}, {"listMembersUsed3",1105}, {""}, @@ -5481,7 +5482,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {"numberOfSingularVectorsEvolved",1433}, {""}, {""}, - {"subLocalDefinitionNumber2",2087}, + {"subLocalDefinitionNumber2",2088}, {""}, {"numberOfPointsAlongAParallel",1411}, {""}, @@ -5519,10 +5520,10 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"cavokOrVisibility",382}, {""}, {""}, {""}, - {"westernLongitudeOfClusterDomain",2306}, - {"yCoordinateOfSubSatellitePoint",2347}, + {"westernLongitudeOfClusterDomain",2307}, + {"yCoordinateOfSubSatellitePoint",2348}, {""}, {""}, - {"tiggeLocalVersion",2129}, + {"tiggeLocalVersion",2130}, {""}, {"cloudsCode3",495}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -5543,13 +5544,13 @@ static const struct grib_keys_hash wordlist[] = {"baseTimeOfThisLeg",329}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"listMembersMissing3",1101}, - {"templatesMasterDir",2116}, + {"templatesMasterDir",2117}, {""}, {""}, {"section11Pointer",1929}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"cloudsAbbreviation2",430}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityTrend3",2272}, + {"variationOfVisibilityTrend3",2273}, {""}, {"cloudsTitle4Trend2",522}, {"cloudsBaseCoded1Trend2",467}, @@ -5578,12 +5579,12 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {"offsetICEFieldsUsed",1482}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityDirectionTrend3",2268}, + {"variationOfVisibilityDirectionTrend3",2269}, {""}, {"reservedSection2",1769}, {""}, {""}, {""}, {""}, {"cloudsBase3",455}, - {"subLocalDefinitionLength2",2085}, + {"subLocalDefinitionLength2",2086}, {""}, {""}, {"scaleFactorOfEarthMajorAxis",1848}, {""}, {""}, @@ -5593,12 +5594,12 @@ static const struct grib_keys_hash wordlist[] = {"offsetSection7",1492}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"subLocalDefinitionNumber1",2086}, - {"variationOfVisibilityTrend4",2273}, + {"subLocalDefinitionNumber1",2087}, + {"variationOfVisibilityTrend4",2274}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"verificationYear",2277}, + {"verificationYear",2278}, {""}, {""}, {""}, {"cloudsBaseCoded1",465}, {"patch_precip_fp",1630}, @@ -5623,7 +5624,7 @@ static const struct grib_keys_hash wordlist[] = {"GDSPresent",69}, {"countOfICEFieldsUsed",606}, {""}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityDirectionTrend4",2269}, + {"variationOfVisibilityDirectionTrend4",2270}, {"cloudsBaseCoded3Trend3",478}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"resolutionAndComponentFlags3",1775}, @@ -5670,17 +5671,17 @@ static const struct grib_keys_hash wordlist[] = {""}, {"dateOfModelVersion",638}, {""}, - {"theHindcastMarsStream",2117}, + {"theHindcastMarsStream",2118}, {""}, {""}, {""}, {"runwayDepthOfDepositCodeState3",1800}, {""}, {""}, - {"timeOfModelVersion",2145}, + {"timeOfModelVersion",2146}, {""}, {""}, {""}, {""}, {""}, {""}, {"cloudsCode1Trend4",489}, {""}, {""}, {""}, {"endMonthTrend2",736}, {""}, {""}, - {"subLocalDefinitionLength1",2084}, + {"subLocalDefinitionLength1",2085}, {""}, {"scaleFactorOfCentralWaveNumber",1845}, {""}, {""}, {""}, {""}, {""}, @@ -5703,7 +5704,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {"offsetFromOriginToInnerBound",1480}, {""}, - {"yearOfModelVersion",2358}, + {"yearOfModelVersion",2359}, {""}, {""}, {""}, {"localUsePresent",1140}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -5728,7 +5729,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {"section2Used",1938}, {""}, - {"xCoordinateOfSubSatellitePoint",2340}, + {"xCoordinateOfSubSatellitePoint",2341}, {"section3UniqueIdentifier",1943}, {""}, {""}, {"listMembersUsed4",1106}, @@ -5748,9 +5749,9 @@ static const struct grib_keys_hash wordlist[] = {"cloudsAbbreviation1Trend3",428}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"timeUnitFlag",2149}, + {"timeUnitFlag",2150}, {""}, {""}, - {"unpack",2240}, + {"unpack",2241}, {""}, {""}, {""}, {""}, {"physicalMeaningOfVerticalCoordinate",1642}, {""}, {""}, {""}, {""}, {""}, @@ -5770,7 +5771,7 @@ static const struct grib_keys_hash wordlist[] = {"cloudsAbbreviation2Trend4",434}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tempPressureUnits",2112}, + {"tempPressureUnits",2113}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"endMonthTrend1",735}, @@ -5801,7 +5802,7 @@ static const struct grib_keys_hash wordlist[] = {"generalExtended2ordr",878}, {""}, {""}, {"ITERATOR",92}, - {"visibilityInKilometresTrend2",2295}, + {"visibilityInKilometresTrend2",2296}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"scaledValueOfLengthOfSemiMinorAxis",1878}, {""}, @@ -5816,7 +5817,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {"cloudsAbbreviation1Trend4",429}, {""}, {""}, - {"typeOfPacking",2198}, + {"typeOfPacking",2199}, {""}, {""}, {"experimentVersionNumberOfAnalysis",780}, {"presentWeather2Present",1666}, @@ -5858,9 +5859,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"offsetSection11",1486}, - {"uuidOfVGrid",2258}, + {"uuidOfVGrid",2259}, {""}, {""}, {""}, - {"typeOfProcessedData",2201}, + {"typeOfProcessedData",2202}, {""}, {""}, {"cloudsBaseCoded4",480}, {"NC2",176}, @@ -5877,7 +5878,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {"rootGroupSymbolTableEntry",1781}, {""}, {""}, {""}, - {"variationOfVisibilityTrend2",2271}, + {"variationOfVisibilityTrend2",2272}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -5890,12 +5891,12 @@ static const struct grib_keys_hash wordlist[] = {"runwayDesignatorRVR3",1808}, {"beginHourTrend2",336}, {""}, {""}, {""}, - {"typeOfGeneratingProcess",2190}, + {"typeOfGeneratingProcess",2191}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityDirectionTrend2",2267}, + {"variationOfVisibilityDirectionTrend2",2268}, {""}, {""}, {""}, {""}, {""}, - {"visibilityInKilometresTrend1",2294}, + {"visibilityInKilometresTrend1",2295}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"firstLatitudeInDegrees",843}, @@ -5911,24 +5912,24 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"variationOfVisibilityTrend1",2270}, + {"variationOfVisibilityTrend1",2271}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"totalNumberOfGridPoints",2162}, + {"totalNumberOfGridPoints",2163}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"cloudsBaseCoded3Trend2",477}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"section_01",1972}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windUnitsTrend3",2331}, - {"visibilityTrend2",2299}, + {"windUnitsTrend3",2332}, + {"visibilityTrend2",2300}, {""}, {""}, {""}, {"clusterMember7",533}, {""}, {""}, {""}, {""}, {""}, {""}, {"iDirectionIncrementGridLength",939}, - {"variationOfVisibilityDirectionTrend1",2266}, + {"variationOfVisibilityDirectionTrend1",2267}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"beginMonthTrend4",346}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -5951,11 +5952,11 @@ static const struct grib_keys_hash wordlist[] = {"padding_local40_1",1597}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"uuidOfHGrid",2257}, + {"uuidOfHGrid",2258}, {"cloudsBaseCoded3Trend1",476}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unusedBitsInBitmap",2245}, + {"unusedBitsInBitmap",2246}, {"beginHourTrend1",335}, {""}, {""}, {""}, {""}, {""}, {""}, {"runwayDepthOfDepositCodeState2",1799}, @@ -5966,7 +5967,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {"section_6",1988}, {""}, - {"tsectionNumber5",2176}, + {"tsectionNumber5",2177}, {""}, {"observationDiagnostic",1454}, {"offsetSection5",1490}, @@ -5977,7 +5978,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"cloudsAbbreviation3Trend2",437}, {""}, {""}, {""}, {""}, {""}, - {"windUnitsTrend4",2332}, + {"windUnitsTrend4",2333}, {"cloudsBase1Trend2",447}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"cloudsCode3Trend3",498}, @@ -5995,7 +5996,7 @@ static const struct grib_keys_hash wordlist[] = {"skipExtraKeyAttributes",2022}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"uvRelativeToGrid",2259}, + {"uvRelativeToGrid",2260}, {""}, {""}, {""}, {""}, {""}, {""}, {"scanningMode7",1896}, {""}, {""}, {""}, @@ -6031,7 +6032,7 @@ static const struct grib_keys_hash wordlist[] = {"numberOfGridInReference",1385}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"cloudsBaseCoded2Trend4",474}, - {"typeOfLevelECMF",2196}, + {"typeOfLevelECMF",2197}, {""}, {"runwayDepositCodeState2",1791}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -6051,9 +6052,9 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"weightAppliedToClimateMonth1",2303}, + {"weightAppliedToClimateMonth1",2304}, {""}, - {"superblockExtensionAddress",2094}, + {"superblockExtensionAddress",2095}, {""}, {"cloudsBase3Trend4",459}, {""}, @@ -6122,7 +6123,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"westLongitudeOfDomainOfTubing",2305}, + {"westLongitudeOfDomainOfTubing",2306}, {""}, {""}, {"horizontalDomainTemplateNumber",927}, {""}, @@ -6232,7 +6233,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"cloudsAbbreviation1Trend2",427}, - {"windGustTrend3",2320}, + {"windGustTrend3",2321}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"cloudsCode3Trend1",496}, @@ -6289,7 +6290,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {"Total_Number_Members_Possible",252}, {""}, {""}, {""}, {""}, - {"windGustTrend4",2321}, + {"windGustTrend4",2322}, {""}, {""}, {""}, {""}, {""}, {"scanningMode5",1894}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -6362,7 +6363,7 @@ static const struct grib_keys_hash wordlist[] = {"numberOfBitsUsedForTheScaledGroupLengths",1343}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windUnitsTrend2",2330}, + {"windUnitsTrend2",2331}, {""}, {""}, {""}, {"oneMinuteMeanMinimumRVR4",1508}, {""}, {""}, @@ -6416,7 +6417,7 @@ static const struct grib_keys_hash wordlist[] = {"sourceSinkChemicalPhysicalProcess",2025}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windUnitsTrend1",2329}, + {"windUnitsTrend1",2330}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -6559,7 +6560,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {"beginYearTrend1",347}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"versionNumberOfSuperblock",2285}, + {"versionNumberOfSuperblock",2286}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"experimentVersionNumber1",778}, @@ -6602,7 +6603,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windGustTrend2",2319}, + {"windGustTrend2",2320}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -6619,7 +6620,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typicalYearOfCentury",2221}, + {"typicalYearOfCentury",2222}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -6646,14 +6647,14 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"windGustTrend1",2318}, + {"windGustTrend1",2319}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"extractDateTimeMinuteRank",803}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"typicalYear2",2220}, + {"typicalYear2",2221}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"extractDateTimeMonthRank",806}, {""}, @@ -7126,7 +7127,7 @@ static const struct grib_keys_hash wordlist[] = {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"swapScanningY",2098}, + {"swapScanningY",2099}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, diff --git a/src/grib_util.c b/src/grib_util.c index eca9cb3d2..7d40d9393 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -23,17 +23,13 @@ int codes_get_step_human_readable(grib_handle* h, char* result, size_t* length) long stepUnits, step, hour, minute, second; int err = 0; size_t slen; - //char step_str[32] = "unknown"; err = grib_get_long(h, "stepUnits", &stepUnits); if (err) return err; - // now set it to seconds + // Set units to seconds (highest resolution) slen = 2; err = grib_set_string(h, "stepUnits", "s", &slen); if (err) return err; - //slen = 32; - //err = grib_get_string(h, "step", step_str, &slen); - //if (err) return err; err = grib_get_long(h, "step", &step); if (err) return err; diff --git a/tests/keys b/tests/keys index 354177ff1..8fbe7a1fc 100644 --- a/tests/keys +++ b/tests/keys @@ -2068,299 +2068,300 @@ statistics,2062 status,2063 step,2064 stepForClustering,2065 -stepInHours,2066 -stepRange,2067 -stepRangeInHours,2068 -stepType,2069 -stepTypeForConversion,2070 -stepTypeInternal,2071 -stepUnits,2072 -stepZero,2073 -stream,2074 -streamOfAnalysis,2075 -stretchingFactor,2076 -stretchingFactorScaled,2077 -stringValues,2078 -subCentre,2079 -subDefinitions1,2080 -subDefinitions2,2081 -subLocalDefinition1,2082 -subLocalDefinition2,2083 -subLocalDefinitionLength1,2084 -subLocalDefinitionLength2,2085 -subLocalDefinitionNumber1,2086 -subLocalDefinitionNumber2,2087 -subSetJ,2088 -subSetK,2089 -subSetM,2090 -subcentreOfAnalysis,2091 -subdivisionsOfBasicAngle,2092 -suiteName,2093 -superblockExtensionAddress,2094 -swapScanningLat,2095 -swapScanningLon,2096 -swapScanningX,2097 -swapScanningY,2098 -system,2099 -systemNumber,2100 -t,2101 -table2Version,2102 -tableCode,2103 -tableNumber,2104 -tableReference,2105 -tablesLocalDir,2106 -tablesMasterDir,2107 -tablesVersion,2108 -tablesVersionLatest,2109 -targetCompressionRatio,2110 -td,2111 -tempPressureUnits,2112 -temperature,2113 -temperatureAndDewpointPresent,2114 -templatesLocalDir,2115 -templatesMasterDir,2116 -theHindcastMarsStream,2117 -theMessage,2118 -thisExperimentVersionNumber,2119 -thisMarsClass,2120 -thisMarsStream,2121 -thisMarsType,2122 -thousand,2123 -three,2124 -threshold,2125 -thresholdIndicator,2126 -tiggeCentre,2127 -tiggeLAMName,2128 -tiggeLocalVersion,2129 -tiggeModel,2130 -tiggeSection,2131 -tiggeSuiteID,2132 -tigge_name,2133 -tigge_short_name,2134 -tileClassification,2135 -tileIndex,2136 -time,2137 -timeCoordinateDefinition,2138 -timeDomainTemplate,2139 -timeDomainTemplateNumber,2140 -timeIncrement,2141 -timeIncrementBetweenSuccessiveFields,2142 -timeOfAnalysis,2143 -timeOfForecast,2144 -timeOfModelVersion,2145 -timeOfReference,2146 -timeRangeIndicator,2147 -timeRangeIndicatorFromStepRange,2148 -timeUnitFlag,2149 -timerepres,2150 -topLevel,2151 -total,2152 -totalAerosolBinsNumbers,2153 -totalInitialConditions,2154 -totalLength,2155 -totalNumber,2156 -totalNumberOfClusters,2157 -totalNumberOfDataValuesMissingInStatisticalProcess,2158 -totalNumberOfDirections,2159 -totalNumberOfForecastProbabilities,2160 -totalNumberOfFrequencies,2161 -totalNumberOfGridPoints,2162 -totalNumberOfIterations,2163 -totalNumberOfRepetitions,2164 -totalNumberOfTileAttributePairs,2165 -totalNumberOfTubes,2166 -totalNumberOfValuesInUnpackedSubset,2167 -totalNumberOfdimensions,2168 -treatmentOfMissingData,2169 -true,2170 -trueLengthOfLastGroup,2171 -truncateDegrees,2172 -truncateLaplacian,2173 -tsectionNumber3,2174 -tsectionNumber4,2175 -tsectionNumber5,2176 -tubeDomain,2177 -tubeNumber,2178 -two,2179 -twoOrdersOfSPD,2180 -type,2181 -typeOfAnalysis,2182 -typeOfAuxiliaryInformation,2183 -typeOfCalendar,2184 -typeOfCompressionUsed,2185 -typeOfDistributionFunction,2186 -typeOfEnsembleForecast,2187 -typeOfEnsembleMember,2188 -typeOfFirstFixedSurface,2189 -typeOfGeneratingProcess,2190 -typeOfGrid,2191 -typeOfHorizontalLine,2192 -typeOfIntervalForFirstAndSecondSize,2193 -typeOfIntervalForFirstAndSecondWavelength,2194 -typeOfLevel,2195 -typeOfLevelECMF,2196 -typeOfOriginalFieldValues,2197 -typeOfPacking,2198 -typeOfPostProcessing,2199 -typeOfPreProcessing,2200 -typeOfProcessedData,2201 -typeOfSSTFieldUsed,2202 -typeOfSecondFixedSurface,2203 -typeOfSizeInterval,2204 -typeOfStatisticalPostProcessingOfEnsembleMembers,2205 -typeOfStatisticalProcessing,2206 -typeOfTimeIncrement,2207 -typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2208 -typeOfWavelengthInterval,2209 -typicalCentury,2210 -typicalDate,2211 -typicalDateTime,2212 -typicalDay,2213 -typicalHour,2214 -typicalMinute,2215 -typicalMonth,2216 -typicalSecond,2217 -typicalTime,2218 -typicalYear,2219 -typicalYear2,2220 -typicalYearOfCentury,2221 -uco,2222 -ucs,2223 -unexpandedDescriptors,2224 -unexpandedDescriptorsEncoded,2225 -unitOfOffsetFromReferenceTime,2226 -unitOfTime,2227 -unitOfTimeIncrement,2228 -unitOfTimeRange,2229 -units,2230 -unitsBias,2231 -unitsConversionOffset,2232 -unitsConversionScaleFactor,2233 -unitsDecimalScaleFactor,2234 -unitsECMF,2235 -unitsFactor,2236 -unitsOfFirstFixedSurface,2237 -unitsOfSecondFixedSurface,2238 -unknown,2239 -unpack,2240 -unpackedError,2241 -unpackedSubsetPrecision,2242 -unpackedValues,2243 -unsignedIntegers,2244 -unusedBitsInBitmap,2245 -updateSequenceNumber,2246 -upperLimit,2247 -upperRange,2248 -upperThreshold,2249 -upperThresholdValue,2250 -userDateEnd,2251 -userDateStart,2252 -userDateTimeEnd,2253 -userDateTimeStart,2254 -userTimeEnd,2255 -userTimeStart,2256 -uuidOfHGrid,2257 -uuidOfVGrid,2258 -uvRelativeToGrid,2259 -validityDate,2260 -validityTime,2261 -values,2262 -variationOfVisibility,2263 -variationOfVisibilityDirection,2264 -variationOfVisibilityDirectionAngle,2265 -variationOfVisibilityDirectionTrend1,2266 -variationOfVisibilityDirectionTrend2,2267 -variationOfVisibilityDirectionTrend3,2268 -variationOfVisibilityDirectionTrend4,2269 -variationOfVisibilityTrend1,2270 -variationOfVisibilityTrend2,2271 -variationOfVisibilityTrend3,2272 -variationOfVisibilityTrend4,2273 -varno,2274 -verificationDate,2275 -verificationMonth,2276 -verificationYear,2277 -verifyingMonth,2278 -version,2279 -versionNumOfFilesFreeSpaceStorage,2280 -versionNumOfRootGroupSymbolTableEntry,2281 -versionNumOfSharedHeaderMessageFormat,2282 -versionNumberOfExperimentalSuite,2283 -versionNumberOfGribLocalTables,2284 -versionNumberOfSuperblock,2285 -versionOfModelClimate,2286 -verticalCoordinate,2287 -verticalCoordinateDefinition,2288 -verticalDomainTemplate,2289 -verticalDomainTemplateNumber,2290 -verticalVisibility,2291 -verticalVisibilityCoded,2292 -visibility,2293 -visibilityInKilometresTrend1,2294 -visibilityInKilometresTrend2,2295 -visibilityInKilometresTrend3,2296 -visibilityInKilometresTrend4,2297 -visibilityTrend1,2298 -visibilityTrend2,2299 -visibilityTrend3,2300 -visibilityTrend4,2301 -waveDomain,2302 -weightAppliedToClimateMonth1,2303 -westLongitudeOfCluster,2304 -westLongitudeOfDomainOfTubing,2305 -westernLongitudeOfClusterDomain,2306 -westernLongitudeOfDomain,2307 -widthOfFirstOrderValues,2308 -widthOfLengths,2309 -widthOfSPD,2310 -widthOfWidths,2311 -windDirection,2312 -windDirectionTrend1,2313 -windDirectionTrend2,2314 -windDirectionTrend3,2315 -windDirectionTrend4,2316 -windGust,2317 -windGustTrend1,2318 -windGustTrend2,2319 -windGustTrend3,2320 -windGustTrend4,2321 -windPresent,2322 -windSpeed,2323 -windSpeedTrend1,2324 -windSpeedTrend2,2325 -windSpeedTrend3,2326 -windSpeedTrend4,2327 -windUnits,2328 -windUnitsTrend1,2329 -windUnitsTrend2,2330 -windUnitsTrend3,2331 -windUnitsTrend4,2332 -windVariableDirection,2333 -windVariableDirectionTrend1,2334 -windVariableDirectionTrend2,2335 -windVariableDirectionTrend3,2336 -windVariableDirectionTrend4,2337 -wrongPadding,2338 -xCoordinateOfOriginOfSectorImage,2339 -xCoordinateOfSubSatellitePoint,2340 -xDirectionGridLength,2341 -xDirectionGridLengthInMetres,2342 -xDirectionGridLengthInMillimetres,2343 -xFirst,2344 -xLast,2345 -yCoordinateOfOriginOfSectorImage,2346 -yCoordinateOfSubSatellitePoint,2347 -yDirectionGridLength,2348 -yDirectionGridLengthInMetres,2349 -yDirectionGridLengthInMillimetres,2350 -yFirst,2351 -yLast,2352 -year,2353 -yearOfAnalysis,2354 -yearOfCentury,2355 -yearOfEndOfOverallTimeInterval,2356 -yearOfForecast,2357 -yearOfModelVersion,2358 -yearOfReference,2359 -zero,2360 -zeros,2361 +stepHuman,2066 +stepInHours,2067 +stepRange,2068 +stepRangeInHours,2069 +stepType,2070 +stepTypeForConversion,2071 +stepTypeInternal,2072 +stepUnits,2073 +stepZero,2074 +stream,2075 +streamOfAnalysis,2076 +stretchingFactor,2077 +stretchingFactorScaled,2078 +stringValues,2079 +subCentre,2080 +subDefinitions1,2081 +subDefinitions2,2082 +subLocalDefinition1,2083 +subLocalDefinition2,2084 +subLocalDefinitionLength1,2085 +subLocalDefinitionLength2,2086 +subLocalDefinitionNumber1,2087 +subLocalDefinitionNumber2,2088 +subSetJ,2089 +subSetK,2090 +subSetM,2091 +subcentreOfAnalysis,2092 +subdivisionsOfBasicAngle,2093 +suiteName,2094 +superblockExtensionAddress,2095 +swapScanningLat,2096 +swapScanningLon,2097 +swapScanningX,2098 +swapScanningY,2099 +system,2100 +systemNumber,2101 +t,2102 +table2Version,2103 +tableCode,2104 +tableNumber,2105 +tableReference,2106 +tablesLocalDir,2107 +tablesMasterDir,2108 +tablesVersion,2109 +tablesVersionLatest,2110 +targetCompressionRatio,2111 +td,2112 +tempPressureUnits,2113 +temperature,2114 +temperatureAndDewpointPresent,2115 +templatesLocalDir,2116 +templatesMasterDir,2117 +theHindcastMarsStream,2118 +theMessage,2119 +thisExperimentVersionNumber,2120 +thisMarsClass,2121 +thisMarsStream,2122 +thisMarsType,2123 +thousand,2124 +three,2125 +threshold,2126 +thresholdIndicator,2127 +tiggeCentre,2128 +tiggeLAMName,2129 +tiggeLocalVersion,2130 +tiggeModel,2131 +tiggeSection,2132 +tiggeSuiteID,2133 +tigge_name,2134 +tigge_short_name,2135 +tileClassification,2136 +tileIndex,2137 +time,2138 +timeCoordinateDefinition,2139 +timeDomainTemplate,2140 +timeDomainTemplateNumber,2141 +timeIncrement,2142 +timeIncrementBetweenSuccessiveFields,2143 +timeOfAnalysis,2144 +timeOfForecast,2145 +timeOfModelVersion,2146 +timeOfReference,2147 +timeRangeIndicator,2148 +timeRangeIndicatorFromStepRange,2149 +timeUnitFlag,2150 +timerepres,2151 +topLevel,2152 +total,2153 +totalAerosolBinsNumbers,2154 +totalInitialConditions,2155 +totalLength,2156 +totalNumber,2157 +totalNumberOfClusters,2158 +totalNumberOfDataValuesMissingInStatisticalProcess,2159 +totalNumberOfDirections,2160 +totalNumberOfForecastProbabilities,2161 +totalNumberOfFrequencies,2162 +totalNumberOfGridPoints,2163 +totalNumberOfIterations,2164 +totalNumberOfRepetitions,2165 +totalNumberOfTileAttributePairs,2166 +totalNumberOfTubes,2167 +totalNumberOfValuesInUnpackedSubset,2168 +totalNumberOfdimensions,2169 +treatmentOfMissingData,2170 +true,2171 +trueLengthOfLastGroup,2172 +truncateDegrees,2173 +truncateLaplacian,2174 +tsectionNumber3,2175 +tsectionNumber4,2176 +tsectionNumber5,2177 +tubeDomain,2178 +tubeNumber,2179 +two,2180 +twoOrdersOfSPD,2181 +type,2182 +typeOfAnalysis,2183 +typeOfAuxiliaryInformation,2184 +typeOfCalendar,2185 +typeOfCompressionUsed,2186 +typeOfDistributionFunction,2187 +typeOfEnsembleForecast,2188 +typeOfEnsembleMember,2189 +typeOfFirstFixedSurface,2190 +typeOfGeneratingProcess,2191 +typeOfGrid,2192 +typeOfHorizontalLine,2193 +typeOfIntervalForFirstAndSecondSize,2194 +typeOfIntervalForFirstAndSecondWavelength,2195 +typeOfLevel,2196 +typeOfLevelECMF,2197 +typeOfOriginalFieldValues,2198 +typeOfPacking,2199 +typeOfPostProcessing,2200 +typeOfPreProcessing,2201 +typeOfProcessedData,2202 +typeOfSSTFieldUsed,2203 +typeOfSecondFixedSurface,2204 +typeOfSizeInterval,2205 +typeOfStatisticalPostProcessingOfEnsembleMembers,2206 +typeOfStatisticalProcessing,2207 +typeOfTimeIncrement,2208 +typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2209 +typeOfWavelengthInterval,2210 +typicalCentury,2211 +typicalDate,2212 +typicalDateTime,2213 +typicalDay,2214 +typicalHour,2215 +typicalMinute,2216 +typicalMonth,2217 +typicalSecond,2218 +typicalTime,2219 +typicalYear,2220 +typicalYear2,2221 +typicalYearOfCentury,2222 +uco,2223 +ucs,2224 +unexpandedDescriptors,2225 +unexpandedDescriptorsEncoded,2226 +unitOfOffsetFromReferenceTime,2227 +unitOfTime,2228 +unitOfTimeIncrement,2229 +unitOfTimeRange,2230 +units,2231 +unitsBias,2232 +unitsConversionOffset,2233 +unitsConversionScaleFactor,2234 +unitsDecimalScaleFactor,2235 +unitsECMF,2236 +unitsFactor,2237 +unitsOfFirstFixedSurface,2238 +unitsOfSecondFixedSurface,2239 +unknown,2240 +unpack,2241 +unpackedError,2242 +unpackedSubsetPrecision,2243 +unpackedValues,2244 +unsignedIntegers,2245 +unusedBitsInBitmap,2246 +updateSequenceNumber,2247 +upperLimit,2248 +upperRange,2249 +upperThreshold,2250 +upperThresholdValue,2251 +userDateEnd,2252 +userDateStart,2253 +userDateTimeEnd,2254 +userDateTimeStart,2255 +userTimeEnd,2256 +userTimeStart,2257 +uuidOfHGrid,2258 +uuidOfVGrid,2259 +uvRelativeToGrid,2260 +validityDate,2261 +validityTime,2262 +values,2263 +variationOfVisibility,2264 +variationOfVisibilityDirection,2265 +variationOfVisibilityDirectionAngle,2266 +variationOfVisibilityDirectionTrend1,2267 +variationOfVisibilityDirectionTrend2,2268 +variationOfVisibilityDirectionTrend3,2269 +variationOfVisibilityDirectionTrend4,2270 +variationOfVisibilityTrend1,2271 +variationOfVisibilityTrend2,2272 +variationOfVisibilityTrend3,2273 +variationOfVisibilityTrend4,2274 +varno,2275 +verificationDate,2276 +verificationMonth,2277 +verificationYear,2278 +verifyingMonth,2279 +version,2280 +versionNumOfFilesFreeSpaceStorage,2281 +versionNumOfRootGroupSymbolTableEntry,2282 +versionNumOfSharedHeaderMessageFormat,2283 +versionNumberOfExperimentalSuite,2284 +versionNumberOfGribLocalTables,2285 +versionNumberOfSuperblock,2286 +versionOfModelClimate,2287 +verticalCoordinate,2288 +verticalCoordinateDefinition,2289 +verticalDomainTemplate,2290 +verticalDomainTemplateNumber,2291 +verticalVisibility,2292 +verticalVisibilityCoded,2293 +visibility,2294 +visibilityInKilometresTrend1,2295 +visibilityInKilometresTrend2,2296 +visibilityInKilometresTrend3,2297 +visibilityInKilometresTrend4,2298 +visibilityTrend1,2299 +visibilityTrend2,2300 +visibilityTrend3,2301 +visibilityTrend4,2302 +waveDomain,2303 +weightAppliedToClimateMonth1,2304 +westLongitudeOfCluster,2305 +westLongitudeOfDomainOfTubing,2306 +westernLongitudeOfClusterDomain,2307 +westernLongitudeOfDomain,2308 +widthOfFirstOrderValues,2309 +widthOfLengths,2310 +widthOfSPD,2311 +widthOfWidths,2312 +windDirection,2313 +windDirectionTrend1,2314 +windDirectionTrend2,2315 +windDirectionTrend3,2316 +windDirectionTrend4,2317 +windGust,2318 +windGustTrend1,2319 +windGustTrend2,2320 +windGustTrend3,2321 +windGustTrend4,2322 +windPresent,2323 +windSpeed,2324 +windSpeedTrend1,2325 +windSpeedTrend2,2326 +windSpeedTrend3,2327 +windSpeedTrend4,2328 +windUnits,2329 +windUnitsTrend1,2330 +windUnitsTrend2,2331 +windUnitsTrend3,2332 +windUnitsTrend4,2333 +windVariableDirection,2334 +windVariableDirectionTrend1,2335 +windVariableDirectionTrend2,2336 +windVariableDirectionTrend3,2337 +windVariableDirectionTrend4,2338 +wrongPadding,2339 +xCoordinateOfOriginOfSectorImage,2340 +xCoordinateOfSubSatellitePoint,2341 +xDirectionGridLength,2342 +xDirectionGridLengthInMetres,2343 +xDirectionGridLengthInMillimetres,2344 +xFirst,2345 +xLast,2346 +yCoordinateOfOriginOfSectorImage,2347 +yCoordinateOfSubSatellitePoint,2348 +yDirectionGridLength,2349 +yDirectionGridLengthInMetres,2350 +yDirectionGridLengthInMillimetres,2351 +yFirst,2352 +yLast,2353 +year,2354 +yearOfAnalysis,2355 +yearOfCentury,2356 +yearOfEndOfOverallTimeInterval,2357 +yearOfForecast,2358 +yearOfModelVersion,2359 +yearOfReference,2360 +zero,2361 +zeros,2362 From 10a5cbfbcf4bc4f8cb3cb7cd1fdb7834d0c675c0 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 21 Apr 2020 18:28:26 +0100 Subject: [PATCH 6/8] ECC-1053: Pass in stepUnits and stepRange --- definitions/grib1/section.1.def | 2 +- .../grib2/template.4.point_in_time.def | 2 +- src/eccodes.h | 3 - src/grib_accessor_class_step_human_readable.c | 86 +++++++++++-------- src/grib_api_prototypes.h | 1 - src/grib_util.c | 7 +- 6 files changed, 53 insertions(+), 48 deletions(-) diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index f36c63cad..1cd7cdf45 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -210,7 +210,7 @@ _if (stepType is "instant" ) { meta stepRange g1step_range(P1,P2,timeRangeIndicator,unitOfTimeRange,stepUnits,stepType) : dump; meta startStep long_vector(stepRange,0) : dump,no_copy; meta endStep long_vector(stepRange,1) : dump,no_copy; -meta stepHuman step_human_readable(stepRange): hidden, no_copy; +meta stepHuman step_human_readable(stepUnits, stepRange): hidden,no_copy; alias stepInHours = endStep; alias ls.stepRange = stepRange; diff --git a/definitions/grib2/template.4.point_in_time.def b/definitions/grib2/template.4.point_in_time.def index 6747bdbe7..0ea3ac11a 100644 --- a/definitions/grib2/template.4.point_in_time.def +++ b/definitions/grib2/template.4.point_in_time.def @@ -16,7 +16,7 @@ alias ls.stepRange=stepRange; concept stepTypeInternal { "instant" = {dummy=1;} } -meta stepHuman step_human_readable(stepRange): hidden, no_copy; +meta stepHuman step_human_readable(stepUnits, stepRange): hidden,no_copy; alias time.stepType=stepType; alias time.stepRange=stepRange; diff --git a/src/eccodes.h b/src/eccodes.h index a7b336703..a310dbbfb 100644 --- a/src/eccodes.h +++ b/src/eccodes.h @@ -1281,9 +1281,6 @@ codes_handle* codes_grib_util_set_spec(codes_handle* h, int codes_bufr_extract_headers_malloc(codes_context* c, const char* filename, codes_bufr_header** result, int* num_messages, int strict_mode); int codes_bufr_header_get_string(codes_bufr_header* bh, const char* key, char* val, size_t* len); - -int codes_get_step_human_readable(codes_handle* h, char* result, size_t* length); - /* --------------------------------------- */ #ifdef __cplusplus } diff --git a/src/grib_accessor_class_step_human_readable.c b/src/grib_accessor_class_step_human_readable.c index 4572ebc97..3da2e495a 100644 --- a/src/grib_accessor_class_step_human_readable.c +++ b/src/grib_accessor_class_step_human_readable.c @@ -17,7 +17,8 @@ CLASS = accessor SUPER = grib_accessor_class_gen IMPLEMENTS = init;unpack_string; get_native_type - MEMBERS = const char* time + MEMBERS = const char* stepUnits + MEMBERS = const char* step END_CLASS_DEF */ @@ -42,7 +43,8 @@ typedef struct grib_accessor_step_human_readable grib_accessor att; /* Members defined in gen */ /* Members defined in step_human_readable */ - const char* time; + const char* stepUnits; + const char* step; } grib_accessor_step_human_readable; extern grib_accessor_class* grib_accessor_class_gen; @@ -134,7 +136,10 @@ static void init(grib_accessor* a, const long len, grib_arguments* params) { grib_accessor_step_human_readable* self = (grib_accessor_step_human_readable*)a; int n = 0; - self->time = grib_arguments_get_name(grib_handle_of_accessor(a), params, n++); + grib_handle* h = grib_handle_of_accessor(a); + + self->stepUnits = grib_arguments_get_name(h, params, n++); + self->step = grib_arguments_get_name(h, params, n++); a->length = 0; a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; } @@ -144,46 +149,51 @@ static int get_native_type(grib_accessor* a) return GRIB_TYPE_STRING; } +static int get_step_human_readable(grib_handle* h, char* result, size_t* length) +{ + int err = 0; + size_t slen = 2; + long step, hour, minute, second; + + /* Change units to seconds (highest resolution) + * before computing the step value + */ + err = grib_set_string(h, "stepUnits", "s", &slen); + if (err) return err; + err = grib_get_long(h, "step", &step); + if (err) return err; + + hour = step/3600; + minute = step/60 % 60; + second = step % 60; + /* sprintf(result, "%ld:%ld:%ld", hour, minute, second); */ + + if (second) { + sprintf(result, "%ldh %ldm %lds", hour, minute, second); + } else { + if (minute) sprintf(result, "%ldh %ldm", hour, minute); + else sprintf(result, "%ldh", hour); + } + + *length = strlen(result); + return GRIB_SUCCESS; +} + static int unpack_string(grib_accessor* a, char* buffer, size_t* len) { - /*grib_accessor_step_human_readable* self = (grib_accessor_step_human_readable*)a;*/ + grib_accessor_step_human_readable* self = (grib_accessor_step_human_readable*)a; grib_handle* h = grib_handle_of_accessor(a); - int err = codes_get_step_human_readable(h, buffer, len); -#if 0 - grib_codetable* table = NULL; + long stepUnits; + int err = 0; - size_t size = 1; - long value; - int err = GRIB_SUCCESS; - char tmp[1024]; - size_t l = 1024; - grib_accessor_codetable* ca = (grib_accessor_codetable*)grib_find_accessor(grib_handle_of_accessor(a), self->codetable); + /* Save the current value of stepUnits */ + err = grib_get_long_internal(h, self->stepUnits, &stepUnits); + if (err) return err; - if ((err = grib_unpack_long((grib_accessor*)ca, &value, &size)) != GRIB_SUCCESS) - return err; + /* This will change stepUnits to seconds for its calculation */ + err = get_step_human_readable(h, buffer, len); - table = ca->table; - - if (table && (value >= 0) && (value < table->size) && table->entries[value].title) { - strcpy(tmp, table->entries[value].title); - } - else { -#if 1 - sprintf(tmp, "%d", (int)value); -#else - return GRIB_DECODING_ERROR; -#endif - } - - l = strlen(tmp) + 1; - - if (*len < l) { - *len = l; - return GRIB_BUFFER_TOO_SMALL; - } - - strcpy(buffer, tmp); - *len = l; -#endif + /* Restore stepUnits */ + grib_set_long(h, self->stepUnits, stepUnits); return err; } diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index ed54edb6e..66c569132 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -1468,7 +1468,6 @@ int path_is_directory(const char* filename); char* codes_getenv(const char* name); /* grib_util.c */ -int codes_get_step_human_readable(grib_handle* h, char* result, size_t* length); grib_handle* grib_util_sections_copy(grib_handle* hfrom, grib_handle* hto, int what, int* err); grib_string_list* grib_util_get_param_id(const char* mars_param); grib_string_list* grib_util_get_mars_param(const char* param_id); diff --git a/src/grib_util.c b/src/grib_util.c index 7d40d9393..8ed9f8aaf 100644 --- a/src/grib_util.c +++ b/src/grib_util.c @@ -18,6 +18,7 @@ typedef enum eROUND_ANGLE_DOWN } RoundingPolicy; +#if 0 int codes_get_step_human_readable(grib_handle* h, char* result, size_t* length) { long stepUnits, step, hour, minute, second; @@ -26,7 +27,7 @@ int codes_get_step_human_readable(grib_handle* h, char* result, size_t* length) err = grib_get_long(h, "stepUnits", &stepUnits); if (err) return err; - // Set units to seconds (highest resolution) + slen = 2; err = grib_set_string(h, "stepUnits", "s", &slen); if (err) return err; @@ -36,7 +37,6 @@ int codes_get_step_human_readable(grib_handle* h, char* result, size_t* length) hour = step/3600; minute = step/60 % 60; second = step % 60; - //sprintf(result, "%ld:%ld:%ld", hour, minute, second); if (second) { sprintf(result, "%ldh %ldm %lds", hour, minute, second); @@ -47,13 +47,12 @@ int codes_get_step_human_readable(grib_handle* h, char* result, size_t* length) *length = strlen(result); - // Restore err = grib_set_long(h, "stepUnits", stepUnits); if (err) return err; return GRIB_SUCCESS; } - +#endif static void set_total_length(unsigned char* buffer, long* section_length, long* section_offset, int edition, size_t totalLength) { From 5ea2ac0db3954afa76e1e79447ae109b5a44dc31 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 21 Apr 2020 19:44:12 +0100 Subject: [PATCH 7/8] ECC-1053: Added test --- tests/CMakeLists.txt | 1 + tests/grib_ecc-1053.sh | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100755 tests/grib_ecc-1053.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b63330b84..a6ee4dfb1 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -57,6 +57,7 @@ list(APPEND tests_no_data_reqd grib_ecc-136 grib_ecc-967 grib_ecc-1065 + grib_ecc-1053 julian bufr_dump_samples bufr_json_samples diff --git a/tests/grib_ecc-1053.sh b/tests/grib_ecc-1053.sh new file mode 100755 index 000000000..719e611be --- /dev/null +++ b/tests/grib_ecc-1053.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# (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.sh +set -u +# --------------------------------------------------------- +# This is the test for the JIRA issue ECC-1053 +# It tests the human readable step key +# --------------------------------------------------------- +label="grib_ecc-1053-test" +temp=temp.${label}.grib +sample_g1=$ECCODES_SAMPLES_PATH/GRIB1.tmpl + +${tools_dir}/grib_set -s unitOfTimeRange=254,P1=250 $sample_g1 $temp +grib_check_key_equals $temp stepHuman '0h 4m 10s' + +${tools_dir}/grib_set -s unitOfTimeRange=0,P1=200 $sample_g1 $temp +grib_check_key_equals $temp stepHuman '3h 20m' + +rm -f $temp From 06deb515d582003d6f4a170c095ca9873e6bde51 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 22 Apr 2020 12:51:04 +0100 Subject: [PATCH 8/8] ECC-1053: Renamed key to stepHumanReadable --- definitions/grib1/section.1.def | 2 +- definitions/grib2/template.4.point_in_time.def | 2 +- src/grib_hash_keys.c | 10 +++++----- tests/grib_ecc-1053.sh | 4 ++-- tests/keys | 2 +- windows/msvc/grib_api_lib/grib_api_lib.vcxproj | 1 + 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/definitions/grib1/section.1.def b/definitions/grib1/section.1.def index 1cd7cdf45..91f891a41 100644 --- a/definitions/grib1/section.1.def +++ b/definitions/grib1/section.1.def @@ -210,7 +210,7 @@ _if (stepType is "instant" ) { meta stepRange g1step_range(P1,P2,timeRangeIndicator,unitOfTimeRange,stepUnits,stepType) : dump; meta startStep long_vector(stepRange,0) : dump,no_copy; meta endStep long_vector(stepRange,1) : dump,no_copy; -meta stepHuman step_human_readable(stepUnits, stepRange): hidden,no_copy; +meta stepHumanReadable step_human_readable(stepUnits, stepRange): hidden,no_copy; alias stepInHours = endStep; alias ls.stepRange = stepRange; diff --git a/definitions/grib2/template.4.point_in_time.def b/definitions/grib2/template.4.point_in_time.def index 0ea3ac11a..f2e8606fd 100644 --- a/definitions/grib2/template.4.point_in_time.def +++ b/definitions/grib2/template.4.point_in_time.def @@ -16,7 +16,7 @@ alias ls.stepRange=stepRange; concept stepTypeInternal { "instant" = {dummy=1;} } -meta stepHuman step_human_readable(stepUnits, stepRange): hidden,no_copy; +meta stepHumanReadable step_human_readable(stepUnits, stepRange): hidden,no_copy; alias time.stepType=stepType; alias time.stepRange=stepRange; diff --git a/src/grib_hash_keys.c b/src/grib_hash_keys.c index 81886e11e..72f39e85c 100644 --- a/src/grib_hash_keys.c +++ b/src/grib_hash_keys.c @@ -347,7 +347,7 @@ static const unsigned char lengthtable[] = 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 10, 0, 0, 11, 0, 0, 33, 0, 0, 0, 0, 0, 21, 0, 0, 11, 0, 23, 0, 0, 24, 0, 0, 0, 9, 0, - 0, 0, 9, 17, 33, 0, 0, 0, 0, 14, 18, 16, 0, 0, + 0, 0, 0, 17, 33, 0, 0, 0, 0, 14, 18, 16, 0, 0, 0, 0, 21, 0, 28, 0, 0, 0, 0, 31, 21, 0, 0, 6, 34, 0, 0, 0, 0, 0, 0, 0, 22, 15, 20, 0, 0, 0, 0, 0, 0, 0, 18, 21, 8, 0, 0, 0, 0, 16, 27, 0, @@ -477,7 +477,7 @@ static const unsigned char lengthtable[] = 0, 0, 0, 0, 0, 0, 16, 0, 0, 19, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 15, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 37, 0, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 14, 0, + 0, 0, 0, 0, 0, 21, 0, 0, 0, 22, 0, 17, 14, 0, 0, 14, 0, 0, 0, 0, 0, 32, 0, 2, 0, 13, 0, 33, 0, 26, 23, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 15, 0, 24, 0, 0, 20, 0, 0, 20, 0, 0, 0, 0, 6, 0, @@ -3727,8 +3727,7 @@ static const struct grib_keys_hash wordlist[] = {"longitudeOfLastGridPoint",1157}, {""}, {""}, {""}, {"julianDay",1025}, - {""}, {""}, {""}, - {"stepHuman",2066}, + {""}, {""}, {""}, {""}, {"localDefNumberTwo",1118}, {"lengthIncrementForTheGroupLengths",1082}, {""}, {""}, {""}, {""}, @@ -4585,7 +4584,8 @@ static const struct grib_keys_hash wordlist[] = {"biFourierCoefficients",351}, {""}, {""}, {""}, {"epsStatisticsContinous",761}, - {""}, {""}, + {""}, + {"stepHumanReadable",2066}, {"section9Length",1965}, {""}, {""}, {"lowerThreshold",1180}, diff --git a/tests/grib_ecc-1053.sh b/tests/grib_ecc-1053.sh index 719e611be..b147ecc8f 100755 --- a/tests/grib_ecc-1053.sh +++ b/tests/grib_ecc-1053.sh @@ -19,9 +19,9 @@ temp=temp.${label}.grib sample_g1=$ECCODES_SAMPLES_PATH/GRIB1.tmpl ${tools_dir}/grib_set -s unitOfTimeRange=254,P1=250 $sample_g1 $temp -grib_check_key_equals $temp stepHuman '0h 4m 10s' +grib_check_key_equals $temp stepHumanReadable '0h 4m 10s' ${tools_dir}/grib_set -s unitOfTimeRange=0,P1=200 $sample_g1 $temp -grib_check_key_equals $temp stepHuman '3h 20m' +grib_check_key_equals $temp stepHumanReadable '3h 20m' rm -f $temp diff --git a/tests/keys b/tests/keys index 8fbe7a1fc..2f70eb8c8 100644 --- a/tests/keys +++ b/tests/keys @@ -2068,7 +2068,7 @@ statistics,2062 status,2063 step,2064 stepForClustering,2065 -stepHuman,2066 +stepHumanReadable,2066 stepInHours,2067 stepRange,2068 stepRangeInHours,2069 diff --git a/windows/msvc/grib_api_lib/grib_api_lib.vcxproj b/windows/msvc/grib_api_lib/grib_api_lib.vcxproj index 43e88df91..01cc09d78 100755 --- a/windows/msvc/grib_api_lib/grib_api_lib.vcxproj +++ b/windows/msvc/grib_api_lib/grib_api_lib.vcxproj @@ -396,6 +396,7 @@ +