diff --git a/.gitignore b/.gitignore index 7f271601e..30cd90a75 100644 --- a/.gitignore +++ b/.gitignore @@ -273,3 +273,6 @@ python/gribapi_swig_wrap.c data/bufr/*diff data/bufr/*decode data/bufr/*test + +*.sublime-workspace +*.old diff --git a/definitions/CMakeLists.txt b/definitions/CMakeLists.txt index d863d998f..1c2612f2e 100644 --- a/definitions/CMakeLists.txt +++ b/definitions/CMakeLists.txt @@ -20,7 +20,7 @@ install( DIRECTORY budg bufr cdf common grib1 grib2 gts mars metar taf tide file( COPY ${definition_files} ${table_files} DESTINATION ${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/definitions ) -file( COPY budg cdf common grib1 grib2 gts mars metar taf tide +file( COPY budg cdf common grib1 grib2 gts mars metar taf tide hdf5 wrap DESTINATION ${CMAKE_BINARY_DIR}/share/${PROJECT_NAME}/definitions FILES_MATCHING PATTERN "*.def" diff --git a/definitions/boot.def b/definitions/boot.def index b2258862c..682c56094 100644 --- a/definitions/boot.def +++ b/definitions/boot.def @@ -106,3 +106,15 @@ if(kindOfProduct == `TAF ` ){ constant TAFstr="TAF"; alias ls.identifier=TAFstr; } + +if(kindOfProduct == 2303214662){ + template HDF5 "hdf5/boot.def" ; + constant HDF5str="HDF5"; + alias ls.identifier=HDF5str; +} + +if(kindOfProduct == `WRAP`){ + template WRAP "wrap/boot.def" ; + constant WRAPstr="WRAP"; + alias ls.identifier=WRAPstr; +} diff --git a/definitions/hdf5/boot.def b/definitions/hdf5/boot.def new file mode 100644 index 000000000..ecb988ebd --- /dev/null +++ b/definitions/hdf5/boot.def @@ -0,0 +1,29 @@ +# http://www.hdfgroup.org/HDF5/doc/H5.format.html#Superblock +constant identifier="HDF5"; + + +ascii[8] signature : dump; +uint8 versionNumberOfSuperblock : dump; + +if(versionNumberOfSuperblock == 2) { + uint8 sizeOfOffsets : dump; + uint8 sizeOfLength : dump; + uint8 fileConsistencyFlags : dump; + + if(sizeOfOffsets == 8) { + uint64_little_endian baseAddress : dump; + uint64_little_endian superblockExtensionAddress : dump; + uint64_little_endian endOfFileAddress : dump; + uint64_little_endian rootGroupObjectHeaderAddress : dump; + } + + if(sizeOfOffsets == 4) { + uint32_little_endian baseAddress : dump; + uint32_little_endian superblockExtensionAddress : dump; + uint32_little_endian endOfFileAddress : dump; + uint32_little_endian rootGroupObjectHeaderAddress : dump; + } + + #ascii[4] superblockChecksum; + +} diff --git a/definitions/wrap/boot.def b/definitions/wrap/boot.def new file mode 100644 index 000000000..89603c942 --- /dev/null +++ b/definitions/wrap/boot.def @@ -0,0 +1,27 @@ +# Copyright 2005-2014 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. +# + +position startOfHeaders; +ascii[4] identifier = `WRAP`: dump; +alias ls.identifier=identifier; + +uint64 totalLength : dump; +uint8 version = 1 : dump; +uint8 spare; + +template metadata "wrap/metadata.[version].def"; + +position endOfHeadersMaker; + +constant dataLength = (totalLength - endOfHeadersMaker - 4); +blob data[dataLength] : dump; + +ascii[4] endMark = `7777` : dump; + +position totalLength; diff --git a/definitions/wrap/metadata.0.def b/definitions/wrap/metadata.0.def new file mode 100644 index 000000000..38aa353a7 --- /dev/null +++ b/definitions/wrap/metadata.0.def @@ -0,0 +1,2 @@ +# empty +label 'empty'; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b42e9c971..714b6dbcf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -345,6 +345,21 @@ list( APPEND grib_api_srcs grib_yacc.h md5.h md5.c + grib_accessor_class_int16.c + grib_accessor_class_int16_little_endian.c + grib_accessor_class_int32.c + grib_accessor_class_int32_little_endian.c + grib_accessor_class_int64.c + grib_accessor_class_int64_little_endian.c + grib_accessor_class_int8.c + grib_accessor_class_uint16.c + grib_accessor_class_uint16_little_endian.c + grib_accessor_class_uint32.c + grib_accessor_class_uint32_little_endian.c + grib_accessor_class_uint64.c + grib_accessor_class_uint64_little_endian.c + grib_accessor_class_uint8.c + grib_accessor_class_blob.c grib_windef.h ) diff --git a/src/Makefile.am b/src/Makefile.am index 0eee0e813..796bc35b7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -128,6 +128,21 @@ libgrib_api_la_prototypes= \ grib_accessor_class_gen.c \ grib_accessor_class_gts_header.c \ grib_accessor_class_ifs_param.c \ + grib_accessor_class_int16.c \ + grib_accessor_class_int16_little_endian.c \ + grib_accessor_class_int32.c \ + grib_accessor_class_int32_little_endian.c \ + grib_accessor_class_int64.c \ + grib_accessor_class_int64_little_endian.c \ + grib_accessor_class_int8.c \ + grib_accessor_class_uint16.c \ + grib_accessor_class_uint16_little_endian.c \ + grib_accessor_class_uint32.c \ + grib_accessor_class_uint32_little_endian.c \ + grib_accessor_class_uint64.c \ + grib_accessor_class_uint64_little_endian.c \ + grib_accessor_class_uint8.c \ + grib_accessor_class_blob.c \ grib_accessor_class_julian_day.c \ grib_accessor_class_latlonvalues.c \ grib_accessor_class_latitudes.c \ diff --git a/src/README b/src/README new file mode 100644 index 000000000..21eee5671 --- /dev/null +++ b/src/README @@ -0,0 +1,3 @@ +# To rebuild the grammar: + +make LEX_OUTPUT_ROOT=lex.yy -f extrules.am grib_yacc.c grib_yacc.h grib_lex.c diff --git a/src/grib_accessor_class.h b/src/grib_accessor_class.h index 4ef19890f..a3400a28c 100644 --- a/src/grib_accessor_class.h +++ b/src/grib_accessor_class.h @@ -9,6 +9,7 @@ extern grib_accessor_class* grib_accessor_class_bit; extern grib_accessor_class* grib_accessor_class_bitmap; extern grib_accessor_class* grib_accessor_class_bits; extern grib_accessor_class* grib_accessor_class_bits_per_value; +extern grib_accessor_class* grib_accessor_class_blob; extern grib_accessor_class* grib_accessor_class_box; extern grib_accessor_class* grib_accessor_class_budgdate; extern grib_accessor_class* grib_accessor_class_bufr_data; @@ -119,6 +120,13 @@ extern grib_accessor_class* grib_accessor_class_headers_only; extern grib_accessor_class* grib_accessor_class_ibmfloat; extern grib_accessor_class* grib_accessor_class_ieeefloat; extern grib_accessor_class* grib_accessor_class_ifs_param; +extern grib_accessor_class* grib_accessor_class_int16; +extern grib_accessor_class* grib_accessor_class_int16_little_endian; +extern grib_accessor_class* grib_accessor_class_int32; +extern grib_accessor_class* grib_accessor_class_int32_little_endian; +extern grib_accessor_class* grib_accessor_class_int64; +extern grib_accessor_class* grib_accessor_class_int64_little_endian; +extern grib_accessor_class* grib_accessor_class_int8; extern grib_accessor_class* grib_accessor_class_iterator; extern grib_accessor_class* grib_accessor_class_julian_day; extern grib_accessor_class* grib_accessor_class_ksec1expver; @@ -186,6 +194,13 @@ extern grib_accessor_class* grib_accessor_class_to_double; extern grib_accessor_class* grib_accessor_class_to_integer; extern grib_accessor_class* grib_accessor_class_to_string; extern grib_accessor_class* grib_accessor_class_transient; +extern grib_accessor_class* grib_accessor_class_uint16; +extern grib_accessor_class* grib_accessor_class_uint16_little_endian; +extern grib_accessor_class* grib_accessor_class_uint32; +extern grib_accessor_class* grib_accessor_class_uint32_little_endian; +extern grib_accessor_class* grib_accessor_class_uint64; +extern grib_accessor_class* grib_accessor_class_uint64_little_endian; +extern grib_accessor_class* grib_accessor_class_uint8; extern grib_accessor_class* grib_accessor_class_unexpanded_descriptors; extern grib_accessor_class* grib_accessor_class_unpack_bufr_values; extern grib_accessor_class* grib_accessor_class_unsigned; diff --git a/src/grib_accessor_class_blob.c b/src/grib_accessor_class_blob.c new file mode 100644 index 000000000..8f772f63f --- /dev/null +++ b/src/grib_accessor_class_blob.c @@ -0,0 +1,150 @@ +/* + * Copyright 2005-2014 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 = get_native_type;init + IMPLEMENTS = unpack_bytes;dump + 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_bytes (grib_accessor*,unsigned char*, size_t *len); +static void dump(grib_accessor*, grib_dumper*); +static void init(grib_accessor*,const long, grib_arguments* ); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_blob { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in blob */ +} grib_accessor_blob; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_blob = { + &grib_accessor_class_gen, /* super */ + "blob", /* name */ + sizeof(grib_accessor_blob), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + &init, /* init */ + 0, /* post_init */ + 0, /* free mem */ + &dump, /* 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 */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack procedures bytes */ + &unpack_bytes, /* 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 */ +}; + + +grib_accessor_class* grib_accessor_class_blob = &_grib_accessor_class_blob; + + +static void init_class(grib_accessor_class* c) +{ + 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->unpack_string = (*(c->super))->unpack_string; + c->pack_bytes = (*(c->super))->pack_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; +} + +/* END_CLASS_IMP */ + +static void init(grib_accessor* a, const long len , grib_arguments* arg ) +{ + grib_get_long_internal(a->parent->h, grib_arguments_get_name(a->parent->h, arg, 0), &a->length); + Assert(a->length>=0); + +} + +static int get_native_type(grib_accessor* a){ + return GRIB_TYPE_BYTES; +} + +static int unpack_bytes (grib_accessor* a,unsigned char* buffer, size_t *len) { + if (*len < a->length) { + *len = a->length; + return GRIB_ARRAY_TOO_SMALL; + } + *len = a->length; + + memcpy(buffer, a->parent->h->buffer->data + a->offset, *len); + + return GRIB_SUCCESS; +} + +static void dump(grib_accessor* a, grib_dumper* dumper) +{ + grib_dump_bytes(dumper,a,NULL); +} diff --git a/src/grib_accessor_class_int16.c b/src/grib_accessor_class_int16.c new file mode 100644 index 000000000..982053199 --- /dev/null +++ b/src/grib_accessor_class_int16.c @@ -0,0 +1,146 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + 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 pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_int16 { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in int16 */ +} grib_accessor_int16; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_int16 = { + &grib_accessor_class_gen, /* super */ + "int16", /* name */ + sizeof(grib_accessor_int16), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* 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 */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_int16 = &_grib_accessor_class_int16; + + +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->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + unsigned char* data = a->parent->h->buffer->data; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + *val = value; + *len = 1; + return GRIB_NOT_IMPLEMENTED; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + diff --git a/src/grib_accessor_class_int16_little_endian.c b/src/grib_accessor_class_int16_little_endian.c new file mode 100644 index 000000000..7604f8151 --- /dev/null +++ b/src/grib_accessor_class_int16_little_endian.c @@ -0,0 +1,146 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + 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 pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_int16_little_endian { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in int16_little_endian */ +} grib_accessor_int16_little_endian; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_int16_little_endian = { + &grib_accessor_class_gen, /* super */ + "int16_little_endian", /* name */ + sizeof(grib_accessor_int16_little_endian), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* 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 */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_int16_little_endian = &_grib_accessor_class_int16_little_endian; + + +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->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + unsigned char* data = a->parent->h->buffer->data; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + *val = value; + *len = 1; + return GRIB_NOT_IMPLEMENTED; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + diff --git a/src/grib_accessor_class_int32.c b/src/grib_accessor_class_int32.c new file mode 100644 index 000000000..ceffc79dd --- /dev/null +++ b/src/grib_accessor_class_int32.c @@ -0,0 +1,146 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + 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 pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_int32 { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in int32 */ +} grib_accessor_int32; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_int32 = { + &grib_accessor_class_gen, /* super */ + "int32", /* name */ + sizeof(grib_accessor_int32), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* 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 */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_int32 = &_grib_accessor_class_int32; + + +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->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + unsigned char* data = a->parent->h->buffer->data; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + *val = value; + *len = 1; + return GRIB_NOT_IMPLEMENTED; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + diff --git a/src/grib_accessor_class_int32_little_endian.c b/src/grib_accessor_class_int32_little_endian.c new file mode 100644 index 000000000..485d47920 --- /dev/null +++ b/src/grib_accessor_class_int32_little_endian.c @@ -0,0 +1,146 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + 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 pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_int32_little_endian { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in int32_little_endian */ +} grib_accessor_int32_little_endian; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_int32_little_endian = { + &grib_accessor_class_gen, /* super */ + "int32_little_endian", /* name */ + sizeof(grib_accessor_int32_little_endian), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* 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 */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_int32_little_endian = &_grib_accessor_class_int32_little_endian; + + +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->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + unsigned char* data = a->parent->h->buffer->data; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + *val = value; + *len = 1; + return GRIB_NOT_IMPLEMENTED; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + diff --git a/src/grib_accessor_class_int64.c b/src/grib_accessor_class_int64.c new file mode 100644 index 000000000..f2f60945e --- /dev/null +++ b/src/grib_accessor_class_int64.c @@ -0,0 +1,162 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + 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 pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_int64 { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in int64 */ +} grib_accessor_int64; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_int64 = { + &grib_accessor_class_gen, /* super */ + "int64", /* name */ + sizeof(grib_accessor_int64), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* 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 */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_int64 = &_grib_accessor_class_int64; + + +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->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + unsigned char* data = a->parent->h->buffer->data; + unsigned long long result = 0, tmp; + int i; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + for(i = 0 ; i < 8; i ++) { + result <<= 8; + result |= data[pos + i]; + } + + value = result; + tmp = value; + + /* Result does not fit in long */ + if(tmp != result) { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Value for %s cannot be decoded as a 'long' (%llu)", a->name , result ); + return GRIB_DECODING_ERROR; + } + + *val = value; + *len = 1; + return GRIB_SUCCESS; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + diff --git a/src/grib_accessor_class_int64_little_endian.c b/src/grib_accessor_class_int64_little_endian.c new file mode 100644 index 000000000..c5e2f56e1 --- /dev/null +++ b/src/grib_accessor_class_int64_little_endian.c @@ -0,0 +1,162 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + 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 pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_int64_little_endian { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in int64_little_endian */ +} grib_accessor_int64_little_endian; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_int64_little_endian = { + &grib_accessor_class_gen, /* super */ + "int64_little_endian", /* name */ + sizeof(grib_accessor_int64_little_endian), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* 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 */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_int64_little_endian = &_grib_accessor_class_int64_little_endian; + + +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->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + unsigned char* data = a->parent->h->buffer->data; + unsigned long long result = 0, tmp; + int i; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + for(i = 7 ; i >= 0; i --) { + result <<= 8; + result |= data[pos + i]; + } + + value = result; + tmp = value; + + /* Result does not fit in long */ + if(tmp != result) { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Value for %s cannot be decoded as a 'long' (%llu)", a->name , result ); + return GRIB_DECODING_ERROR; + } + + *val = value; + *len = 1; + return GRIB_SUCCESS; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + diff --git a/src/grib_accessor_class_int8.c b/src/grib_accessor_class_int8.c new file mode 100644 index 000000000..7fcfe799d --- /dev/null +++ b/src/grib_accessor_class_int8.c @@ -0,0 +1,148 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + 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 pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_int8 { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in int8 */ +} grib_accessor_int8; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_int8 = { + &grib_accessor_class_gen, /* super */ + "int8", /* name */ + sizeof(grib_accessor_int8), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* 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 */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_int8 = &_grib_accessor_class_int8; + + +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->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + char* data = (char*)a->parent->h->buffer->data; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + value = data[pos]; + + *val = value; + *len = 1; + return GRIB_SUCCESS; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + diff --git a/src/grib_accessor_class_uint16.c b/src/grib_accessor_class_uint16.c new file mode 100644 index 000000000..ad2909264 --- /dev/null +++ b/src/grib_accessor_class_uint16.c @@ -0,0 +1,146 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + 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 pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_uint16 { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in uint16 */ +} grib_accessor_uint16; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_uint16 = { + &grib_accessor_class_gen, /* super */ + "uint16", /* name */ + sizeof(grib_accessor_uint16), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* 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 */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_uint16 = &_grib_accessor_class_uint16; + + +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->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + unsigned char* data = a->parent->h->buffer->data; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + *val = value; + *len = 1; + return GRIB_NOT_IMPLEMENTED; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + diff --git a/src/grib_accessor_class_uint16_little_endian.c b/src/grib_accessor_class_uint16_little_endian.c new file mode 100644 index 000000000..e94c54ba1 --- /dev/null +++ b/src/grib_accessor_class_uint16_little_endian.c @@ -0,0 +1,146 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + 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 pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_uint16_little_endian { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in uint16_little_endian */ +} grib_accessor_uint16_little_endian; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_uint16_little_endian = { + &grib_accessor_class_gen, /* super */ + "uint16_little_endian", /* name */ + sizeof(grib_accessor_uint16_little_endian), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* 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 */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_uint16_little_endian = &_grib_accessor_class_uint16_little_endian; + + +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->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + unsigned char* data = a->parent->h->buffer->data; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + *val = value; + *len = 1; + return GRIB_NOT_IMPLEMENTED; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + diff --git a/src/grib_accessor_class_uint32.c b/src/grib_accessor_class_uint32.c new file mode 100644 index 000000000..0a9c1a5a9 --- /dev/null +++ b/src/grib_accessor_class_uint32.c @@ -0,0 +1,146 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + 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 pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_uint32 { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in uint32 */ +} grib_accessor_uint32; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_uint32 = { + &grib_accessor_class_gen, /* super */ + "uint32", /* name */ + sizeof(grib_accessor_uint32), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* 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 */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_uint32 = &_grib_accessor_class_uint32; + + +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->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + unsigned char* data = a->parent->h->buffer->data; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + *val = value; + *len = 1; + return GRIB_NOT_IMPLEMENTED; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + diff --git a/src/grib_accessor_class_uint32_little_endian.c b/src/grib_accessor_class_uint32_little_endian.c new file mode 100644 index 000000000..d0e04fe70 --- /dev/null +++ b/src/grib_accessor_class_uint32_little_endian.c @@ -0,0 +1,146 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + 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 pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_uint32_little_endian { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in uint32_little_endian */ +} grib_accessor_uint32_little_endian; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_uint32_little_endian = { + &grib_accessor_class_gen, /* super */ + "uint32_little_endian", /* name */ + sizeof(grib_accessor_uint32_little_endian), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* 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 */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_uint32_little_endian = &_grib_accessor_class_uint32_little_endian; + + +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->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + unsigned char* data = a->parent->h->buffer->data; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + *val = value; + *len = 1; + return GRIB_NOT_IMPLEMENTED; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + diff --git a/src/grib_accessor_class_uint64.c b/src/grib_accessor_class_uint64.c new file mode 100644 index 000000000..60b235f6a --- /dev/null +++ b/src/grib_accessor_class_uint64.c @@ -0,0 +1,166 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + IMPLEMENTS = get_native_type + END_CLASS_DEF + +*/ + +/* START_CLASS_IMP */ + +/* + +Don't edit anything between START_CLASS_IMP and END_CLASS_IMP +Instead edit values between START_CLASS_DEF and END_CLASS_DEF +or edit "accessor.class" and rerun ./make_class.pl + +*/ + +static int get_native_type(grib_accessor*); +static int pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_uint64 { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in uint64 */ +} grib_accessor_uint64; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_uint64 = { + &grib_accessor_class_gen, /* super */ + "uint64", /* name */ + sizeof(grib_accessor_uint64), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* init */ + 0, /* post_init */ + 0, /* free mem */ + 0, /* describes himself */ + 0, /* get length of section */ + 0, /* get length of string */ + 0, /* get number of values */ + 0, /* get number of bytes */ + 0, /* get offset to bytes */ + &get_native_type, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_uint64 = &_grib_accessor_class_uint64; + + +static void init_class(grib_accessor_class* c) +{ + c->dump = (*(c->super))->dump; + c->next_offset = (*(c->super))->next_offset; + c->string_length = (*(c->super))->string_length; + c->value_count = (*(c->super))->value_count; + c->byte_count = (*(c->super))->byte_count; + c->byte_offset = (*(c->super))->byte_offset; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + unsigned char* data = a->parent->h->buffer->data; + unsigned long long result = 0, tmp; + int i; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + for(i = 0 ; i < 8; i ++) { + result <<= 8; + result |= data[pos + i]; + } + + value = result; + tmp = value; + + /* Result does not fit in long */ + if(tmp != result) { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Value for %s cannot be decoded as a 'long' (%llu)", a->name , result ); + return GRIB_DECODING_ERROR; + } + + *val = value; + *len = 1; + return GRIB_SUCCESS; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + +static int get_native_type(grib_accessor* a) { + return GRIB_TYPE_LONG; +} diff --git a/src/grib_accessor_class_uint64_little_endian.c b/src/grib_accessor_class_uint64_little_endian.c new file mode 100644 index 000000000..f98846b0a --- /dev/null +++ b/src/grib_accessor_class_uint64_little_endian.c @@ -0,0 +1,162 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + 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 pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_uint64_little_endian { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in uint64_little_endian */ +} grib_accessor_uint64_little_endian; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_uint64_little_endian = { + &grib_accessor_class_gen, /* super */ + "uint64_little_endian", /* name */ + sizeof(grib_accessor_uint64_little_endian), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* 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 */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_uint64_little_endian = &_grib_accessor_class_uint64_little_endian; + + +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->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + unsigned char* data = a->parent->h->buffer->data; + unsigned long long result = 0, tmp; + int i; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + for(i = 7 ; i >= 0; i --) { + result <<= 8; + result |= data[pos + i]; + } + + value = result; + tmp = value; + + /* Result does not fit in long */ + if(tmp != result) { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Value for %s cannot be decoded as a 'long' (%llu)", a->name , result ); + return GRIB_DECODING_ERROR; + } + + *val = value; + *len = 1; + return GRIB_SUCCESS; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + diff --git a/src/grib_accessor_class_uint8.c b/src/grib_accessor_class_uint8.c new file mode 100644 index 000000000..e89ddbc3b --- /dev/null +++ b/src/grib_accessor_class_uint8.c @@ -0,0 +1,148 @@ +/* + * Copyright 2005-2014 ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +/* + This is used by make_class.pl + + START_CLASS_DEF + CLASS = accessor + SUPER = grib_accessor_class_gen + IMPLEMENTS = unpack_long + IMPLEMENTS = pack_long + 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 pack_long(grib_accessor*, const long* val,size_t *len); +static int unpack_long(grib_accessor*, long* val,size_t *len); +static void init_class(grib_accessor_class*); + +typedef struct grib_accessor_uint8 { + grib_accessor att; +/* Members defined in gen */ +/* Members defined in uint8 */ +} grib_accessor_uint8; + +extern grib_accessor_class* grib_accessor_class_gen; + +static grib_accessor_class _grib_accessor_class_uint8 = { + &grib_accessor_class_gen, /* super */ + "uint8", /* name */ + sizeof(grib_accessor_uint8), /* size */ + 0, /* inited */ + &init_class, /* init_class */ + 0, /* 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 */ + 0, /* get native type */ + 0, /* get sub_section */ + 0, /* grib_pack procedures long */ + 0, /* grib_pack procedures long */ + &pack_long, /* grib_pack procedures long */ + &unpack_long, /* grib_unpack procedures long */ + 0, /* grib_pack procedures double */ + 0, /* grib_unpack procedures double */ + 0, /* grib_pack procedures string */ + 0, /* grib_unpack procedures string */ + 0, /* grib_pack 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 */ +}; + + +grib_accessor_class* grib_accessor_class_uint8 = &_grib_accessor_class_uint8; + + +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->get_native_type = (*(c->super))->get_native_type; + c->sub_section = (*(c->super))->sub_section; + c->pack_missing = (*(c->super))->pack_missing; + c->is_missing = (*(c->super))->is_missing; + c->pack_double = (*(c->super))->pack_double; + c->unpack_double = (*(c->super))->unpack_double; + c->pack_string = (*(c->super))->pack_string; + c->unpack_string = (*(c->super))->unpack_string; + c->pack_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; +} + +/* END_CLASS_IMP */ + +static int unpack_long(grib_accessor* a, long* val, size_t *len) +{ + long value = 0; + long pos = a->offset; + unsigned char* data = a->parent->h->buffer->data; + + if(*len < 1) + { + grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 ); + *len = 0; + return GRIB_ARRAY_TOO_SMALL; + } + + value = data[pos]; + + *val = value; + *len = 1; + return GRIB_SUCCESS; +} + + +static int pack_long(grib_accessor* a, const long* val, size_t *len) { + return GRIB_NOT_IMPLEMENTED; +} + diff --git a/src/grib_accessor_factory.h b/src/grib_accessor_factory.h index 1777caca2..6e6f9ee69 100644 --- a/src/grib_accessor_factory.h +++ b/src/grib_accessor_factory.h @@ -9,6 +9,7 @@ { "bitmap", &grib_accessor_class_bitmap, }, { "bits", &grib_accessor_class_bits, }, { "bits_per_value", &grib_accessor_class_bits_per_value, }, +{ "blob", &grib_accessor_class_blob, }, { "box", &grib_accessor_class_box, }, { "budgdate", &grib_accessor_class_budgdate, }, { "bufr_data", &grib_accessor_class_bufr_data, }, @@ -118,6 +119,13 @@ { "ibmfloat", &grib_accessor_class_ibmfloat, }, { "ieeefloat", &grib_accessor_class_ieeefloat, }, { "ifs_param", &grib_accessor_class_ifs_param, }, +{ "int16", &grib_accessor_class_int16, }, +{ "int16_little_endian", &grib_accessor_class_int16_little_endian, }, +{ "int32", &grib_accessor_class_int32, }, +{ "int32_little_endian", &grib_accessor_class_int32_little_endian, }, +{ "int64", &grib_accessor_class_int64, }, +{ "int64_little_endian", &grib_accessor_class_int64_little_endian, }, +{ "int8", &grib_accessor_class_int8, }, { "iterator", &grib_accessor_class_iterator, }, { "julian_day", &grib_accessor_class_julian_day, }, { "ksec1expver", &grib_accessor_class_ksec1expver, }, @@ -185,6 +193,13 @@ { "to_integer", &grib_accessor_class_to_integer, }, { "to_string", &grib_accessor_class_to_string, }, { "transient", &grib_accessor_class_transient, }, +{ "uint16", &grib_accessor_class_uint16, }, +{ "uint16_little_endian", &grib_accessor_class_uint16_little_endian, }, +{ "uint32", &grib_accessor_class_uint32, }, +{ "uint32_little_endian", &grib_accessor_class_uint32_little_endian, }, +{ "uint64", &grib_accessor_class_uint64, }, +{ "uint64_little_endian", &grib_accessor_class_uint64_little_endian, }, +{ "uint8", &grib_accessor_class_uint8, }, { "unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors, }, { "unpack_bufr_values", &grib_accessor_class_unpack_bufr_values, }, { "unsigned", &grib_accessor_class_unsigned, }, diff --git a/src/grib_accessor_factory_hash_list b/src/grib_accessor_factory_hash_list index 8616ad04c..4c1abc25d 100644 --- a/src/grib_accessor_factory_hash_list +++ b/src/grib_accessor_factory_hash_list @@ -9,6 +9,7 @@ bit, &grib_accessor_class_bit bitmap, &grib_accessor_class_bitmap bits, &grib_accessor_class_bits bits_per_value, &grib_accessor_class_bits_per_value +blob, &grib_accessor_class_blob box, &grib_accessor_class_box budgdate, &grib_accessor_class_budgdate bufr_data, &grib_accessor_class_bufr_data @@ -123,6 +124,13 @@ headers_only, &grib_accessor_class_headers_only ibmfloat, &grib_accessor_class_ibmfloat ieeefloat, &grib_accessor_class_ieeefloat ifs_param, &grib_accessor_class_ifs_param +int16, &grib_accessor_class_int16 +int16_little_endian, &grib_accessor_class_int16_little_endian +int32, &grib_accessor_class_int32 +int32_little_endian, &grib_accessor_class_int32_little_endian +int64, &grib_accessor_class_int64 +int64_little_endian, &grib_accessor_class_int64_little_endian +int8, &grib_accessor_class_int8 iterator, &grib_accessor_class_iterator julian_day, &grib_accessor_class_julian_day ksec1expver, &grib_accessor_class_ksec1expver @@ -191,6 +199,13 @@ to_double, &grib_accessor_class_to_double to_integer, &grib_accessor_class_to_integer to_string, &grib_accessor_class_to_string transient, &grib_accessor_class_transient +uint16, &grib_accessor_class_uint16 +uint16_little_endian, &grib_accessor_class_uint16_little_endian +uint32, &grib_accessor_class_uint32 +uint32_little_endian, &grib_accessor_class_uint32_little_endian +uint64, &grib_accessor_class_uint64 +uint64_little_endian, &grib_accessor_class_uint64_little_endian +uint8, &grib_accessor_class_uint8 unexpanded_descriptors, &grib_accessor_class_unexpanded_descriptors unpack_bufr_values, &grib_accessor_class_unpack_bufr_values unsigned, &grib_accessor_class_unsigned diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index b3197007b..00c47bee0 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -933,6 +933,7 @@ grib_handle *taf_new_from_file(grib_context *c, FILE *f, int headers_only, int * grib_handle *metar_new_from_file(grib_context *c, FILE *f, int headers_only, int *error); grib_handle *codes_new_from_file(grib_context *c, FILE *f, int headers_only, int *error); grib_handle *bufr_new_from_file(grib_context *c, FILE *f, int headers_only, int *error); +grib_handle *any_new_from_file(grib_context *c, FILE *f, int headers_only, int *error); grib_multi_handle *grib_multi_handle_new(grib_context *c); int grib_multi_handle_delete(grib_multi_handle *h); int grib_multi_handle_append(grib_handle *h, int start_section, grib_multi_handle *mh); diff --git a/src/grib_dumper_class_c_code.c b/src/grib_dumper_class_c_code.c index 87a9f9f7b..e49841ff4 100644 --- a/src/grib_dumper_class_c_code.c +++ b/src/grib_dumper_class_c_code.c @@ -265,7 +265,7 @@ static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment) err = grib_unpack_bytes(a,buf,&size); if(err){ grib_context_free(d->handle->context,buf); - fprintf(self->dumper.out," *** ERR=%d (%s) \n}",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_c_code::dump_bytes]\n}",err,grib_get_error_message(err)); return ; } diff --git a/src/grib_dumper_class_debug.c b/src/grib_dumper_class_debug.c index 394b52cf2..c916feb91 100644 --- a/src/grib_dumper_class_debug.c +++ b/src/grib_dumper_class_debug.c @@ -150,7 +150,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment) fprintf(self->dumper.out,"%ld-%ld %s %s = %ld",self->begin,self->theEnd,a->creator->op, a->name,value); if(comment) fprintf(self->dumper.out," [%s]",comment); if(err) - fprintf(self->dumper.out," *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_debug::dump_long]",err,grib_get_error_message(err)); aliases(d,a); @@ -189,7 +189,7 @@ static void dump_bits(grib_dumper* d,grib_accessor* a,const char* comment) fprintf(self->dumper.out,"]"); if(err) - fprintf(self->dumper.out," *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_debug::dump_bits]",err,grib_get_error_message(err)); aliases(d,a); fprintf(self->dumper.out,"\n"); @@ -216,7 +216,7 @@ static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment) fprintf(self->dumper.out,"%ld-%ld %s %s = %g",self->begin,self->theEnd,a->creator->op, a->name,value); if(comment) fprintf(self->dumper.out," [%s]",comment); if(err) - fprintf(self->dumper.out," *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_debug::dump_double]",err,grib_get_error_message(err)); aliases(d,a); fprintf(self->dumper.out,"\n"); } @@ -256,7 +256,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment) if(comment) fprintf(self->dumper.out," [%s]",comment); if(err) - fprintf(self->dumper.out," *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_debug::dump_string]",err,grib_get_error_message(err)); aliases(d,a); fprintf(self->dumper.out,"\n"); @@ -296,7 +296,7 @@ static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment) err = grib_unpack_bytes(a,buf,&size); if(err){ grib_context_free(d->handle->context,buf); - fprintf(self->dumper.out," *** ERR=%d (%s) \n}",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_debug::dump_bytes]\n}",err,grib_get_error_message(err)); return ; } @@ -374,7 +374,7 @@ static void dump_values(grib_dumper* d,grib_accessor* a) if(err){ grib_context_free(d->handle->context,buf); - fprintf(self->dumper.out," *** ERR=%d (%s) \n}",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_debug::dump_values]\n}",err,grib_get_error_message(err)); return ; } diff --git a/src/grib_dumper_class_default.c b/src/grib_dumper_class_default.c index b83a253b6..5ec02384b 100644 --- a/src/grib_dumper_class_default.c +++ b/src/grib_dumper_class_default.c @@ -197,7 +197,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment) if(err) { fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"# *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out,"# *** ERR=%d (%s) [grib_dumper_default::dump_long]",err,grib_get_error_message(err)); } fprintf(self->dumper.out,"\n"); @@ -271,7 +271,7 @@ static void dump_bits(grib_dumper* d,grib_accessor* a,const char* comment) if(err) { fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"# *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out,"# *** ERR=%d (%s) [grib_dumper_default::dump_bits]",err,grib_get_error_message(err)); } fprintf(self->dumper.out,"\n"); @@ -315,7 +315,7 @@ static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment) if(err) { fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"# *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out,"# *** ERR=%d (%s) [grib_dumper_default::dump_double]",err,grib_get_error_message(err)); } fprintf(self->dumper.out,"\n"); @@ -441,7 +441,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment) if(err) { fprintf(self->dumper.out," "); - fprintf(self->dumper.out,"# *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out,"# *** ERR=%d (%s) [grib_dumper_default::dump_string]",err,grib_get_error_message(err)); } fprintf(self->dumper.out,"\n"); @@ -488,7 +488,7 @@ static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment) err = grib_unpack_bytes(a,buf,&size); if(err){ grib_context_free(d->handle->context,buf); - fprintf(self->dumper.out," *** ERR=%d (%s) \n}",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_default::dump_bytes]\n}",err,grib_get_error_message(err)); return ; } @@ -578,7 +578,7 @@ static void dump_values(grib_dumper* d,grib_accessor* a) if(err){ grib_context_free(d->handle->context,buf); - fprintf(self->dumper.out," *** ERR=%d (%s) \n}",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_default::dump_values]\n}",err,grib_get_error_message(err)); return ; } diff --git a/src/grib_dumper_class_serialize.c b/src/grib_dumper_class_serialize.c index 81a6da31b..61aeabc1f 100644 --- a/src/grib_dumper_class_serialize.c +++ b/src/grib_dumper_class_serialize.c @@ -123,7 +123,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment) if(comment) fprintf(self->dumper.out," [%s]",comment); #endif if(err) - fprintf(self->dumper.out," *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_serialize::dump_long]",err,grib_get_error_message(err)); fprintf(self->dumper.out,"\n"); @@ -195,7 +195,7 @@ static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment) if(comment) fprintf(self->dumper.out," [%s]",comment); #endif if(err) - fprintf(self->dumper.out," *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_serialize::dump_double]",err,grib_get_error_message(err)); fprintf(self->dumper.out,"\n"); } @@ -229,7 +229,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment) if(comment) fprintf(self->dumper.out," [%s]",comment); #endif if(err) - fprintf(self->dumper.out," *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_serialize::dump_string]",err,grib_get_error_message(err)); fprintf(self->dumper.out,"\n"); } @@ -266,7 +266,7 @@ static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment) err = grib_unpack_bytes(a,buf,&size); if(err){ grib_context_free(d->handle->context,buf); - fprintf(self->dumper.out," *** ERR=%d (%s) \n}",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_serialize::dump_bytes]\n}",err,grib_get_error_message(err)); return ; } @@ -377,7 +377,7 @@ static void dump_values(grib_dumper* d,grib_accessor* a) if(err){ grib_context_free(d->handle->context,buf); - fprintf(self->dumper.out," *** ERR=%d (%s) \n}",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_serialize::dump_values]\n}",err,grib_get_error_message(err)); return ; } diff --git a/src/grib_dumper_class_wmo.c b/src/grib_dumper_class_wmo.c index 1f5cee111..6166b6cf0 100644 --- a/src/grib_dumper_class_wmo.c +++ b/src/grib_dumper_class_wmo.c @@ -194,7 +194,7 @@ static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment) if(comment) fprintf(self->dumper.out," [%s]",comment); } if(err) - fprintf(self->dumper.out," *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_long]",err,grib_get_error_message(err)); aliases(d,a); @@ -240,7 +240,7 @@ static void dump_bits(grib_dumper* d,grib_accessor* a,const char* comment) if (err==0) print_hexadecimal(self->dumper.out,d->option_flags,a); if(err) - fprintf(self->dumper.out," *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_bits]",err,grib_get_error_message(err)); aliases(d,a); fprintf(self->dumper.out,"\n"); @@ -274,7 +274,7 @@ static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment) if (err==0) print_hexadecimal(self->dumper.out,d->option_flags,a); if(err) - fprintf(self->dumper.out," *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_double]",err,grib_get_error_message(err)); aliases(d,a); fprintf(self->dumper.out,"\n"); } @@ -316,7 +316,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment) /*if(comment) fprintf(self->dumper.out," [%s]",comment);*/ if(err) - fprintf(self->dumper.out," *** ERR=%d (%s)",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_string]",err,grib_get_error_message(err)); aliases(d,a); fprintf(self->dumper.out,"\n"); if (value) grib_context_free(a->parent->h->context,value); @@ -361,7 +361,7 @@ static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment) err = grib_unpack_bytes(a,buf,&size); if(err){ grib_context_free(d->handle->context,buf); - fprintf(self->dumper.out," *** ERR=%d (%s) \n}",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_bytes]\n}",err,grib_get_error_message(err)); return ; } @@ -444,7 +444,7 @@ static void dump_values(grib_dumper* d,grib_accessor* a) if(err){ grib_context_free(d->handle->context,buf); - fprintf(self->dumper.out," *** ERR=%d (%s) \n}",err,grib_get_error_message(err)); + fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_values]\n}",err,grib_get_error_message(err)); return ; } diff --git a/src/grib_handle.c b/src/grib_handle.c index 098f1d1a4..973f7601a 100644 --- a/src/grib_handle.c +++ b/src/grib_handle.c @@ -928,6 +928,48 @@ grib_handle* bufr_new_from_file ( grib_context* c, FILE* f,int headers_only,int return gl; } +grib_handle* any_new_from_file ( grib_context* c, FILE* f,int headers_only,int *error ) +{ + void *data = NULL; + size_t olen = 0; + grib_handle *gl = NULL; + off_t offset=0; + + if ( c == NULL ) c = grib_context_get_default(); + + data = wmo_read_any_from_file_malloc ( f, headers_only,&olen,&offset,error ); + + if ( *error != GRIB_SUCCESS ) + { + if ( data ) grib_context_free ( c,data ); + + if ( *error == GRIB_END_OF_FILE ) *error = GRIB_SUCCESS; + return NULL; + } + + if (headers_only) { + gl = grib_handle_new_from_partial_message ( c, data, olen ); + } else { + gl = grib_handle_new_from_message ( c, data, olen ); + } + + if ( !gl ) + { + *error = GRIB_DECODING_ERROR; + grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle \n" ); + grib_context_free ( c,data ); + return NULL; + } + + gl->offset=offset; + gl->buffer->property = GRIB_MY_BUFFER; + c->handle_file_count++; + c->handle_total_count++; + + return gl; +} + + static grib_handle* grib_handle_new_from_file_no_multi ( grib_context* c,FILE* f,int headers_only,int *error ) { void *data = NULL; diff --git a/src/grib_io.c b/src/grib_io.c index 2fda399ba..ddf905ba4 100644 --- a/src/grib_io.c +++ b/src/grib_io.c @@ -16,8 +16,13 @@ #define DIAG 0x44494147 #define TIDE 0x54494445 #define BUFR 0x42554652 +#define HDF5 0x89484446 +#define WRAP 0x57524150 #define GRIB_API_READS_BUFR 1 +#define GRIB_API_READS_HDF5 1 +#define GRIB_API_READS_WRAP 1 + typedef struct alloc_buffer { size_t size; @@ -46,7 +51,7 @@ typedef struct reader { } reader; -static int read_the_rest(reader* r,size_t message_length,unsigned char* tmp, int already_read) +static int read_the_rest(reader* r,size_t message_length,unsigned char* tmp, int already_read, int check7777) { int err = 0; size_t buffer_size; @@ -65,7 +70,7 @@ static int read_the_rest(reader* r,size_t message_length,unsigned char* tmp, int if((r->read(r->read_data,buffer+already_read,rest,&err) != rest) || err) return err; - if(!r->headers_only && (buffer[message_length-4] != '7' || + if(check7777 && !r->headers_only && (buffer[message_length-4] != '7' || buffer[message_length-3] != '7' || buffer[message_length-2] != '7' || buffer[message_length-1] != '7')) { @@ -361,7 +366,7 @@ static int read_GRIB(reader* r) } /* Assert(i <= buf->length); */ - err=read_the_rest(r,length,tmp,i); + err=read_the_rest(r, length, tmp, i, 1); grib_buffer_delete(c,buf); @@ -415,7 +420,150 @@ static int read_PSEUDO(reader *r,const char* type) /* fprintf(stderr,"%s sec4len=%d i=%d l=%d\n",type,sec4len,i,4+sec1len+sec4len+4); */ Assert(i <= sizeof(tmp)); - return read_the_rest(r,4+sec1len+sec4len+4,tmp,i); + return read_the_rest(r,4+sec1len+sec4len+4,tmp,i, 1); +} + + +static int read_HDF5_offset(reader *r, int length, unsigned long* v, unsigned char *tmp, int* i) { + unsigned char buf[8]; + int j, k; + int err = 0; + + + if( (r->read(r->read_data, buf, length, &err) != length) || err) { + return err; + } + + k = *i; + for(j = 0; j < length; j++) { + tmp[k++] = buf[j]; + } + *i = k; + + *v = 0; + for(j = length-1; j >= 0; j--) { + *v <<= 8; + *v |= buf[j]; + } + + return 0; +} + +static int read_HDF5(reader *r) +{ + /* See: http://www.hdfgroup.org/HDF5/doc/H5.format.html#Superblock */ + unsigned char tmp[36]; /* Should be enough */ + unsigned char buf[4]; + + unsigned char version_of_superblock, size_of_offsets, size_of_lengths, consistency_flags; + unsigned long base_address, superblock_extension_address, end_of_file_address; + + int i = 0, j; + int err = 0; + grib_context* c = grib_context_get_default(); + + tmp[i++] = 137; + tmp[i++] = 'H'; + tmp[i++] = 'D'; + tmp[i++] = 'F'; + + if( (r->read(r->read_data, buf, 4, &err) != 4) || err) { + return err; + } + + if( !(buf[0] == '\r' && buf[1] == '\n' && buf[2] == 26 && buf[3] == '\n')) { + /* Invalid magic, we should not use grib_context_log without a context */ + grib_context_log(c, GRIB_LOG_ERROR,"read_HDF5: invalid signature"); + return GRIB_INVALID_MESSAGE; + } + + for(j = 0; j < 4; j++) { + tmp[i++] = buf[j]; + } + + if( (r->read(r->read_data, &version_of_superblock, 1, &err) != 1) || err) { + return err; + } + + tmp[i++] = version_of_superblock; + + if(version_of_superblock != 2) { + grib_context_log(c, GRIB_LOG_ERROR,"read_HDF5: invalid version_of_superblock: %ld, only version 2 is supported", (long)version_of_superblock); + return GRIB_NOT_IMPLEMENTED; + } + + if( (r->read(r->read_data, &size_of_offsets, 1, &err) != 1) || err) { + return err; + } + + tmp[i++] = size_of_offsets; + + + if(size_of_offsets > 8) { + grib_context_log(c, GRIB_LOG_ERROR,"read_HDF5: invalid size_of_offsets: %ld, only <= 8 is supported", (long)size_of_offsets); + return GRIB_NOT_IMPLEMENTED; + } + + if( (r->read(r->read_data, &size_of_lengths, 1, &err) != 1) || err) { + return err; + } + + tmp[i++] = size_of_lengths; + + if( (r->read(r->read_data, &consistency_flags, 1, &err) != 1) || err) { + return err; + } + + tmp[i++] = consistency_flags; + + err = read_HDF5_offset(r, size_of_offsets, &base_address, tmp, &i); + if(err) { + return err; + } + + err = read_HDF5_offset(r, size_of_offsets, &superblock_extension_address, tmp, &i); + if(err) { + return err; + } + + err = read_HDF5_offset(r, size_of_offsets, &end_of_file_address, tmp, &i); + if(err) { + return err; + } + + Assert(i <= sizeof(tmp)); + return read_the_rest(r, end_of_file_address, tmp, i, 0); +} + +static int read_WRAP(reader *r) +{ + /* See: http://www.hdfgroup.org/HDF5/doc/H5.format.html#Superblock */ + unsigned char tmp[36]; /* Should be enough */ + unsigned char buf[8]; + + unsigned long long length = 0; + + int i = 0, j; + int err = 0; + + tmp[i++] = 'W'; + tmp[i++] = 'R'; + tmp[i++] = 'A'; + tmp[i++] = 'P'; + + if( (r->read(r->read_data, buf, 8, &err) != 8) || err) { + printf("error\n"); + return err; + } + + for(j = 0; j < 8; j++) { + length <<= 8; + length |= buf[j]; + tmp[i++] = buf[j]; + } + + Assert(i <= sizeof(tmp)); + return read_the_rest(r, length, tmp, i, 1); } static int read_BUFR(reader *r) @@ -585,14 +733,14 @@ static int read_BUFR(reader *r) } /* Assert(i <= sizeof(tmp)); */ - err=read_the_rest(r,length,tmp,i); + err=read_the_rest(r, length, tmp, i, 1); grib_buffer_delete(c,buf); return err; } -static int read_any(reader *r,int grib_ok,int bufr_ok) +static int read_any(reader *r,int grib_ok,int bufr_ok, int hdf5_ok, int wrap_ok) { unsigned char c; int err = 0; @@ -621,6 +769,22 @@ static int read_any(reader *r,int grib_ok,int bufr_ok) } break; + case HDF5: + if(hdf5_ok) + { + err = read_HDF5(r); + return err == GRIB_END_OF_FILE ? GRIB_PREMATURE_END_OF_FILE : err; /* Premature EOF */ + } + break; + + case WRAP: + if(wrap_ok) + { + err = read_WRAP(r); + return err == GRIB_END_OF_FILE ? GRIB_PREMATURE_END_OF_FILE : err; /* Premature EOF */ + } + break; + case BUDG: if(grib_ok) { @@ -854,7 +1018,7 @@ static void* user_provider_buffer(void *data,size_t* length,int *err) } static -int _wmo_read_any_from_file(FILE* f,void* buffer,size_t* len,int grib_ok,int bufr_ok) +int _wmo_read_any_from_file(FILE* f,void* buffer,size_t* len,int grib_ok,int bufr_ok, int hdf5_ok, int wrap_ok) { int err; user_buffer u; @@ -872,7 +1036,7 @@ int _wmo_read_any_from_file(FILE* f,void* buffer,size_t* len,int grib_ok,int buf r.alloc = &user_provider_buffer; r.headers_only = 0; - err = read_any(&r,grib_ok,bufr_ok); + err = read_any(&r, grib_ok, bufr_ok, hdf5_ok, wrap_ok); *len = r.message_size; return err; @@ -880,17 +1044,17 @@ int _wmo_read_any_from_file(FILE* f,void* buffer,size_t* len,int grib_ok,int buf int wmo_read_any_from_file(FILE* f,void* buffer,size_t* len) { - return _wmo_read_any_from_file(f,buffer,len,1,1); + return _wmo_read_any_from_file(f, buffer, len, 1, 1, 1 ,1); } int wmo_read_grib_from_file(FILE* f,void* buffer,size_t* len) { - return _wmo_read_any_from_file(f,buffer,len,1,0); + return _wmo_read_any_from_file(f, buffer, len, 1, 0, 0, 0); } int wmo_read_bufr_from_file(FILE* f,void* buffer,size_t* len) { - return _wmo_read_any_from_file(f,buffer,len,0,1); + return _wmo_read_any_from_file(f, buffer, len, 0, 1, 0, 0); } int wmo_read_gts_from_file(FILE* f,void* buffer,size_t* len) @@ -1022,7 +1186,7 @@ int wmo_read_any_from_stream(void* stream_data,long (*stream_proc)(void*,void* b r.alloc = &user_provider_buffer; r.headers_only = 0; - err = read_any(&r,1,1); + err = read_any(&r, 1, 1, 1, 1); *len = r.message_size; return err; @@ -1046,6 +1210,7 @@ void *wmo_read_gts_from_file_malloc(FILE* f,int headers_only,size_t *size,off_t reader r; u.buffer = NULL; + r.offset = 0; r.message_size = 0; r.read_data = f; @@ -1108,7 +1273,7 @@ void *wmo_read_metar_from_file_malloc(FILE* f,int headers_only,size_t *size,off_ } static void *_wmo_read_any_from_file_malloc(FILE* f,int* err,size_t *size,off_t *offset, - int grib_ok,int bufr_ok,int headers_only) + int grib_ok,int bufr_ok, int hdf5_ok, int wrap_ok, int headers_only) { alloc_buffer u; reader r; @@ -1126,7 +1291,7 @@ static void *_wmo_read_any_from_file_malloc(FILE* f,int* err,size_t *size,off_t r.headers_only = headers_only; r.offset = 0; - *err = read_any(&r,grib_ok,bufr_ok); + *err = read_any(&r, grib_ok, bufr_ok, hdf5_ok, wrap_ok); *size = r.message_size; *offset = r.offset; @@ -1134,17 +1299,17 @@ static void *_wmo_read_any_from_file_malloc(FILE* f,int* err,size_t *size,off_t } void *wmo_read_any_from_file_malloc(FILE* f,int headers_only,size_t *size,off_t *offset,int* err) { - return _wmo_read_any_from_file_malloc(f,err,size,offset,1,1,headers_only); + return _wmo_read_any_from_file_malloc(f,err,size,offset, 1, 1, 1, 1, headers_only); } void *wmo_read_grib_from_file_malloc(FILE* f,int headers_only,size_t *size,off_t *offset,int* err) { - return _wmo_read_any_from_file_malloc(f,err,size,offset,1,0,headers_only); + return _wmo_read_any_from_file_malloc(f,err,size,offset, 1, 0, 0, 0, headers_only); } void *wmo_read_bufr_from_file_malloc(FILE* f,int headers_only,size_t *size,off_t *offset,int* err) { - return _wmo_read_any_from_file_malloc(f,err,size,offset,0,1,headers_only); + return _wmo_read_any_from_file_malloc(f,err,size,offset, 0, 1, 0, 0, headers_only); } @@ -1239,7 +1404,7 @@ int grib_read_any_headers_only_from_file(grib_context* ctx,FILE* f,void* buffer, r.alloc = &user_provider_buffer; r.headers_only = 1; - err = read_any(&r,1,GRIB_API_READS_BUFR); + err = read_any(&r, 1, GRIB_API_READS_BUFR, GRIB_API_READS_HDF5, GRIB_API_READS_WRAP); *len = r.message_size; @@ -1267,7 +1432,7 @@ int grib_read_any_from_file(grib_context* ctx,FILE* f,void* buffer,size_t* len) offset=ftello(f); - err = read_any(&r,1,GRIB_API_READS_BUFR); + err = read_any(&r, 1, GRIB_API_READS_BUFR, GRIB_API_READS_HDF5, GRIB_API_READS_WRAP); if (err==GRIB_BUFFER_TOO_SMALL) { if (fseeko(f,offset,SEEK_SET)) @@ -1337,7 +1502,7 @@ int grib_read_any_from_memory_alloc(grib_context* ctx,unsigned char** data,size_ r.alloc = &context_allocate_buffer; r.headers_only = 0; - err = read_any(&r,1,GRIB_API_READS_BUFR); + err = read_any(&r, 1, GRIB_API_READS_BUFR, GRIB_API_READS_HDF5, GRIB_API_READS_WRAP); *buffer = u.buffer; *length = u.length; @@ -1369,7 +1534,7 @@ int grib_read_any_from_memory(grib_context* ctx,unsigned char** data,size_t* dat r.alloc = &user_provider_buffer; r.headers_only = 0; - err = read_any(&r,1,GRIB_API_READS_BUFR); + err = read_any(&r, 1, GRIB_API_READS_BUFR, GRIB_API_READS_HDF5, GRIB_API_READS_WRAP); *len = r.message_size; *data_length = m.data_len; diff --git a/src/grib_lex.c b/src/grib_lex.c index 0517a6475..dd6939c60 100644 --- a/src/grib_lex.c +++ b/src/grib_lex.c @@ -359,8 +359,8 @@ static void grib_yy_fatal_error (grib_yyconst char msg[] ); *grib_yy_cp = '\0'; \ (grib_yy_c_buf_p) = grib_yy_cp; -#define YY_NUM_RULES 125 -#define YY_END_OF_BUFFER 126 +#define YY_NUM_RULES 140 +#define YY_END_OF_BUFFER 141 /* This struct is not used in this scanner, but its presence is necessary. */ struct grib_yy_trans_info @@ -368,80 +368,91 @@ struct grib_yy_trans_info flex_int32_t grib_yy_verify; flex_int32_t grib_yy_nxt; }; -static grib_yyconst flex_int16_t grib_yy_accept[656] = +static grib_yyconst flex_int16_t grib_yy_accept[760] = { 0, - 122, 122, 126, 124, 122, 123, 12, 113, 121, 124, - 124, 124, 116, 5, 124, 3, 115, 115, 115, 114, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 124, 18, 122, 6, 14, 117, 119, 0, - 118, 116, 0, 4, 7, 1, 2, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 23, 115, 10, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 137, 137, 141, 139, 137, 138, 12, 128, 136, 139, + 139, 139, 131, 5, 139, 3, 130, 130, 130, 129, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 139, 18, 137, 6, 14, 132, 134, 0, + 133, 131, 0, 4, 7, 1, 2, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 23, 130, + 10, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 115, 115, 15, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 16, 0, 120, 118, 0, 0, 120, 115, - 24, 115, 13, 115, 115, 115, 8, 66, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 35, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 11, - 115, 115, 52, 115, 115, 115, 115, 115, 115, 99, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 130, 130, 130, 15, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 16, 0, 135, 133, 0, 0, + 135, 130, 24, 130, 13, 130, 130, 130, 8, 130, + 66, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 35, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 100, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 11, 130, 130, 52, 130, 130, 130, + 130, 130, 130, 114, 130, 130, 130, 130, 130, 130, - 115, 115, 115, 115, 115, 115, 91, 0, 119, 0, - 0, 118, 115, 115, 115, 115, 115, 28, 115, 102, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 89, - 115, 25, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 90, 67, 115, - 115, 30, 115, 115, 115, 115, 48, 115, 115, 115, - 115, 115, 115, 17, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 111, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 101, 115, 115, - 0, 118, 115, 56, 115, 27, 115, 115, 20, 115, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 91, 0, 134, 0, 0, 133, 130, 130, 130, + 130, 130, 113, 28, 130, 117, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 89, 130, 25, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 90, 67, 130, 130, + 30, 130, 130, 130, 130, 48, 130, 130, 130, 130, + 130, 130, 17, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 126, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 116, 130, 130, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 44, 115, 115, 115, 115, 46, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 29, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 50, 115, - 110, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 31, - 108, 115, 109, 85, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 74, 115, 115, 115, 115, - 40, 115, 93, 115, 115, 115, 115, 115, 115, 115, - 115, 21, 115, 45, 115, 115, 70, 115, 115, 115, + 0, 133, 130, 56, 130, 27, 130, 130, 20, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 44, 130, 130, 130, 130, 46, 130, 130, 130, 130, + 130, 102, 106, 110, 130, 130, 130, 130, 29, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 50, 130, 125, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 99, 130, 130, 31, 123, 130, 124, + 85, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 74, 130, 130, 130, 130, 40, 130, 93, - 115, 9, 115, 115, 115, 115, 115, 75, 76, 115, - 115, 115, 38, 115, 115, 19, 103, 115, 115, 115, - 115, 115, 115, 115, 95, 115, 115, 115, 105, 115, - 115, 98, 104, 115, 115, 115, 68, 115, 115, 115, - 115, 115, 115, 112, 115, 115, 115, 115, 115, 115, - 115, 115, 54, 65, 87, 92, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 34, 57, 115, 115, 115, 115, 115, 59, 115, - 115, 115, 115, 115, 115, 115, 115, 36, 115, 115, - 115, 115, 115, 64, 115, 115, 115, 115, 115, 97, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 21, 130, 45, 130, 130, 70, 130, 130, 130, + 130, 9, 130, 130, 130, 130, 130, 75, 76, 130, + 130, 130, 38, 130, 130, 19, 118, 130, 130, 130, + 130, 130, 101, 105, 109, 130, 130, 95, 130, 130, + 130, 120, 130, 130, 98, 119, 130, 130, 130, 68, + 130, 130, 130, 130, 130, 130, 127, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 54, 65, + 87, 92, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 34, 130, 130, - 115, 115, 58, 115, 115, 115, 115, 115, 115, 32, - 115, 115, 115, 26, 115, 39, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 37, 115, 115, 115, - 83, 115, 62, 22, 115, 47, 49, 115, 86, 115, - 115, 115, 115, 115, 115, 115, 115, 80, 60, 115, - 115, 115, 96, 115, 115, 115, 115, 115, 115, 107, - 78, 77, 82, 115, 115, 115, 115, 115, 100, 115, - 115, 115, 115, 79, 115, 115, 115, 42, 63, 115, - 115, 115, 115, 69, 115, 115, 115, 115, 115, 41, - 61, 115, 115, 115, 115, 115, 115, 115, 115, 55, + 130, 57, 130, 130, 130, 130, 130, 59, 130, 130, + 130, 130, 130, 130, 130, 130, 36, 130, 130, 130, + 130, 130, 130, 130, 130, 64, 130, 130, 130, 130, + 130, 97, 130, 130, 58, 130, 130, 130, 130, 130, + 130, 32, 130, 130, 130, 130, 130, 130, 26, 130, + 39, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 37, 130, 130, 130, 130, 130, 130, 83, 130, + 62, 22, 130, 47, 49, 130, 86, 130, 130, 130, + 130, 130, 130, 130, 130, 80, 60, 130, 130, 130, + 130, 130, 130, 96, 130, 130, 130, 130, 130, 130, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 51, 115, 115, 115, 115, 94, 115, 106, - 115, 115, 115, 115, 84, 115, 115, 115, 115, 115, - 115, 115, 115, 53, 115, 33, 115, 88, 115, 115, - 115, 115, 43, 115, 72, 115, 115, 115, 73, 115, - 115, 81, 115, 71, 0 + 122, 130, 130, 130, 78, 77, 82, 130, 130, 130, + 130, 130, 115, 130, 130, 130, 130, 79, 130, 130, + 130, 130, 130, 130, 42, 63, 130, 130, 130, 130, + 130, 130, 130, 69, 130, 130, 130, 130, 130, 41, + 61, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 55, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 51, 130, 130, 130, 130, 130, + 130, 130, 94, 130, 121, 130, 130, 130, 130, 130, + 130, 130, 84, 130, 130, 130, 130, 130, 130, 130, + + 130, 130, 130, 130, 130, 130, 130, 53, 130, 33, + 130, 130, 130, 130, 88, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 43, 130, 72, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 73, 130, 130, + 130, 130, 130, 130, 130, 130, 104, 108, 112, 81, + 130, 130, 130, 130, 103, 107, 111, 71, 0 } ; static grib_yyconst flex_int32_t grib_yy_ec[256] = @@ -451,15 +462,15 @@ static grib_yyconst flex_int32_t grib_yy_ec[256] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 1, 1, 7, 8, 1, 1, 1, 9, 1, 9, 10, 1, 11, 12, 13, - 11, 14, 11, 11, 11, 11, 11, 1, 1, 15, - 16, 17, 1, 1, 18, 18, 18, 18, 19, 18, - 20, 18, 21, 18, 18, 18, 22, 23, 18, 18, - 18, 18, 24, 18, 18, 18, 18, 18, 18, 18, - 1, 1, 1, 1, 25, 26, 27, 28, 29, 30, + 14, 15, 11, 16, 11, 17, 11, 1, 1, 18, + 19, 20, 1, 1, 21, 21, 21, 21, 22, 21, + 23, 21, 24, 21, 21, 21, 25, 26, 21, 21, + 21, 21, 27, 21, 21, 21, 21, 21, 21, 21, + 1, 1, 1, 1, 28, 29, 30, 31, 32, 33, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 18, 43, 44, 45, 46, 47, 48, 49, - 50, 18, 1, 51, 1, 52, 1, 1, 1, 1, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 21, 46, 47, 48, 49, 50, 51, 52, + 53, 21, 1, 54, 1, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -476,896 +487,530 @@ static grib_yyconst flex_int32_t grib_yy_ec[256] = 1, 1, 1, 1, 1 } ; -static grib_yyconst flex_int32_t grib_yy_meta[53] = +static grib_yyconst flex_int32_t grib_yy_meta[56] = { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 1 + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, + 4, 3, 4, 4, 4, 4, 4, 4, 1, 4, + 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 1, 1 } ; -static grib_yyconst flex_int16_t grib_yy_base[658] = +static grib_yyconst flex_int16_t grib_yy_base[767] = { 0, - 0, 0, 449, 3229, 439, 3229, 423, 3229, 3229, 428, - 42, 46, 52, 51, 416, 413, 61, 65, 76, 3229, - 101, 81, 58, 115, 79, 63, 94, 103, 134, 129, - 142, 150, 101, 117, 152, 170, 129, 186, 169, 150, - 186, 197, 375, 3229, 414, 3229, 3229, 195, 231, 235, - 240, 0, 252, 3229, 3229, 3229, 3229, 0, 230, 243, - 244, 258, 260, 235, 265, 270, 278, 279, 258, 294, - 303, 294, 308, 318, 326, 325, 335, 338, 343, 357, - 389, 348, 363, 368, 373, 380, 390, 392, 399, 412, - 411, 413, 420, 432, 430, 437, 442, 447, 458, 466, + 0, 0, 1454, 1455, 1451, 1455, 1433, 1455, 1455, 1444, + 45, 52, 61, 53, 1431, 1430, 63, 73, 58, 1455, + 57, 67, 69, 83, 82, 68, 102, 92, 104, 77, + 94, 116, 109, 121, 113, 132, 95, 133, 145, 134, + 137, 70, 1394, 1455, 1445, 1455, 1455, 176, 146, 188, + 172, 186, 200, 1455, 1455, 1455, 1455, 0, 1422, 163, + 107, 169, 164, 194, 195, 197, 120, 198, 199, 201, + 202, 210, 200, 204, 205, 207, 213, 209, 208, 214, + 233, 1417, 216, 234, 236, 237, 238, 241, 1420, 242, + 243, 245, 244, 248, 253, 249, 252, 257, 262, 261, - 469, 457, 477, 481, 493, 491, 495, 505, 508, 518, - 524, 536, 533, 550, 549, 558, 567, 574, 579, 581, - 583, 588, 3229, 622, 244, 626, 635, 639, 647, 630, - 625, 635, 638, 650, 652, 653, 666, 669, 678, 686, - 685, 695, 699, 704, 709, 712, 728, 719, 737, 729, - 738, 753, 754, 755, 771, 684, 762, 774, 787, 794, - 795, 803, 808, 816, 819, 826, 836, 836, 848, 855, - 862, 874, 871, 881, 886, 896, 898, 914, 922, 923, - 894, 932, 939, 921, 947, 948, 962, 969, 971, 988, - 987, 967, 997, 1000, 990, 1007, 1008, 1016, 1024, 1023, + 263, 274, 125, 1419, 271, 273, 265, 280, 283, 279, + 292, 291, 290, 295, 299, 297, 300, 308, 309, 310, + 313, 314, 316, 320, 1455, 353, 341, 323, 365, 372, + 379, 322, 1418, 373, 1417, 374, 334, 375, 1416, 376, + 1415, 377, 331, 378, 380, 381, 386, 382, 389, 392, + 393, 394, 395, 396, 399, 1414, 402, 400, 401, 411, + 404, 397, 406, 423, 425, 332, 438, 413, 431, 433, + 436, 437, 439, 440, 442, 441, 445, 443, 450, 446, + 448, 461, 458, 467, 459, 449, 463, 465, 473, 468, + 475, 478, 480, 481, 482, 483, 486, 489, 491, 490, - 1036, 1033, 1048, 1044, 1053, 1058, 1066, 1100, 1104, 1110, - 1114, 1118, 1099, 1096, 1104, 1114, 1116, 1123, 1135, 1136, - 1137, 1144, 1153, 1153, 1161, 1173, 1170, 1187, 1183, 1192, - 1200, 1207, 1208, 1217, 380, 374, 371, 1218, 1225, 1239, - 1239, 1244, 1255, 1259, 1264, 1272, 1284, 1281, 1320, 1297, - 1298, 1306, 1320, 1320, 1322, 1340, 1338, 1356, 1339, 1358, - 1365, 1374, 1372, 1381, 1388, 1395, 1397, 1404, 1421, 1413, - 1422, 1434, 1432, 1444, 1448, 1450, 1462, 1460, 1471, 1481, - 1480, 1488, 1489, 1497, 1505, 1505, 1517, 1524, 1525, 1526, - 1562, 1566, 1558, 1551, 1560, 1567, 1574, 1576, 1583, 1596, + 493, 494, 496, 497, 500, 498, 501, 506, 508, 509, + 499, 1413, 541, 548, 557, 564, 571, 1412, 543, 565, + 567, 503, 1411, 1410, 514, 1409, 568, 569, 570, 572, + 571, 573, 574, 575, 580, 1408, 576, 1407, 583, 585, + 1400, 1395, 1394, 588, 589, 594, 586, 600, 591, 601, + 1411, 1413, 1410, 603, 604, 606, 1400, 621, 611, 613, + 1399, 614, 615, 616, 619, 1398, 620, 623, 624, 630, + 635, 632, 1397, 627, 634, 639, 642, 643, 645, 650, + 648, 651, 652, 655, 1396, 653, 656, 657, 659, 661, + 660, 658, 669, 672, 695, 676, 674, 1395, 689, 691, - 1595, 1605, 1608, 1622, 1616, 1627, 1631, 1639, 1647, 1648, - 1655, 362, 352, 362, 1656, 1664, 1673, 1669, 1681, 1686, - 1691, 1698, 1706, 1709, 358, 1717, 1718, 1725, 1733, 1743, - 1746, 1751, 1736, 1754, 1768, 1762, 1773, 1781, 1789, 1788, - 1790, 1802, 1809, 1810, 1811, 1818, 1827, 1830, 1844, 1847, - 1846, 1860, 1869, 1867, 1868, 1885, 1886, 1898, 1896, 1903, - 1908, 1915, 1916, 1923, 1924, 1941, 1933, 1946, 1932, 1960, - 1955, 1963, 1975, 1984, 1980, 1989, 1994, 342, 326, 324, - 2002, 2005, 2012, 2024, 1982, 2024, 2031, 2041, 2049, 2048, - 314, 2050, 2057, 2069, 2070, 2071, 2078, 2087, 2090, 2097, + 715, 722, 694, 1394, 716, 1393, 673, 717, 1392, 718, + 719, 700, 720, 723, 722, 728, 730, 732, 731, 733, + 1391, 1373, 1366, 1380, 734, 1387, 735, 737, 738, 736, + 745, 1382, 1381, 1380, 744, 680, 746, 1373, 1382, 749, + 750, 757, 759, 761, 763, 764, 765, 766, 771, 769, + 775, 772, 777, 1381, 776, 784, 785, 779, 781, 797, + 800, 798, 803, 783, 804, 806, 808, 811, 810, 813, + 1388, 1390, 1387, 0, 814, 816, 1377, 1376, 819, 1375, + 1374, 821, 822, 826, 827, 828, 830, 834, 831, 838, + 837, 839, 1373, 840, 1361, 1348, 1346, 1369, 843, 1368, - 2104, 2105, 2120, 2119, 2134, 2136, 2130, 2141, 2146, 2149, - 2160, 2157, 2165, 2168, 2186, 2176, 2177, 2187, 2202, 2203, - 2204, 2211, 2218, 2220, 2228, 2236, 2241, 2248, 2251, 2256, - 2268, 2271, 2280, 2289, 2287, 2288, 2296, 337, 331, 320, - 2305, 2308, 2325, 2324, 2326, 2327, 2343, 2344, 2351, 312, - 2358, 2361, 2366, 2369, 2374, 2377, 2386, 2392, 2394, 2399, - 2404, 2407, 2425, 2426, 2440, 2447, 2449, 2456, 2465, 2414, - 2417, 2461, 2470, 2477, 2485, 2487, 2494, 2492, 2499, 2504, - 2507, 2514, 2515, 323, 311, 298, 2533, 2523, 2534, 2551, - 2543, 2551, 2553, 2567, 284, 2569, 2570, 2583, 2590, 2591, + 846, 842, 849, 1350, 1349, 1348, 844, 856, 860, 857, + 1336, 1363, 845, 1362, 863, 868, 1361, 870, 871, 872, + 875, 1360, 873, 876, 879, 881, 880, 1359, 1358, 884, + 886, 883, 1357, 885, 887, 1356, 1355, 888, 895, 893, + 898, 892, 1350, 1349, 1348, 890, 910, 1351, 911, 915, + 917, 918, 916, 919, 1350, 1349, 924, 923, 927, 1348, + 1343, 1340, 1331, 926, 925, 928, 1344, 1329, 1328, 1327, + 936, 937, 941, 935, 938, 1319, 942, 939, 952, 1339, + 1338, 1337, 944, 954, 955, 958, 959, 966, 967, 968, + 970, 973, 961, 972, 969, 976, 977, 1336, 1318, 1317, - 2600, 2601, 2609, 2610, 2617, 2627, 2635, 2636, 2634, 2654, - 2652, 2655, 2668, 2671, 2678, 2681, 2693, 2695, 2702, 2709, - 2714, 2719, 280, 297, 273, 2722, 2727, 2735, 2743, 2751, - 2758, 280, 2759, 2766, 2774, 2776, 2783, 2790, 2792, 2799, - 2808, 2804, 2820, 2813, 2821, 2828, 2831, 2838, 2839, 2846, - 2855, 2860, 2863, 2872, 2878, 2880, 252, 267, 266, 2887, - 2894, 2896, 2903, 235, 2901, 2908, 2913, 2924, 2921, 2929, - 2939, 2941, 2948, 2955, 2957, 2964, 2973, 2971, 2980, 2987, - 238, 222, 215, 0, 2989, 2985, 2998, 3007, 2140, 3041, - 3045, 3049, 3006, 3026, 3034, 3041, 213, 202, 184, 3042, + 1316, 1332, 980, 986, 987, 990, 988, 1331, 991, 992, + 993, 994, 1323, 1317, 1308, 999, 1327, 1001, 1302, 1301, + 1300, 1003, 1004, 1002, 1006, 1323, 1296, 1008, 1009, 1013, + 1020, 1321, 1015, 1016, 1320, 1023, 1024, 1029, 1030, 1031, + 1032, 1033, 1036, 1035, 1039, 1305, 1304, 1303, 1316, 1042, + 1315, 1044, 1049, 1050, 1051, 1054, 1055, 1285, 1303, 1293, + 1053, 1311, 1286, 1285, 1284, 1056, 1057, 1062, 1307, 1296, + 1305, 1304, 1058, 1303, 1302, 1071, 1301, 1060, 1066, 1073, + 1077, 1079, 1067, 1068, 1086, 1300, 1299, 1274, 1273, 1272, + 1089, 1091, 1092, 1295, 1093, 1094, 1095, 1270, 1289, 1301, - 3043, 3055, 3062, 189, 3064, 3071, 3080, 3076, 3087, 189, - 174, 172, 3090, 3099, 3098, 171, 3113, 3114, 3122, 3121, - 3130, 148, 135, 114, 3138, 3139, 122, 3148, 3149, 3165, - 103, 82, 93, 3157, 89, 3158, 3173, 3175, 89, 84, - 65, 69, 3182, 72, 0, 63, 64, 46, 0, 44, - 54, 0, 47, 0, 3229, 68, 67 + 1291, 1273, 1272, 1271, 1287, 1286, 1285, 1262, 1097, 1098, + 1101, 1102, 1283, 1099, 1107, 1113, 1109, 1282, 1257, 1256, + 1255, 1110, 1115, 1121, 1278, 1277, 1114, 1266, 1258, 1270, + 1263, 1262, 1261, 0, 1126, 1128, 1130, 1131, 1143, 1270, + 1269, 1133, 1251, 1250, 1249, 1134, 1135, 1136, 1137, 1261, + 1254, 1246, 1258, 1257, 1256, 1259, 1138, 1139, 1146, 1249, + 1141, 1247, 1246, 1245, 1149, 1152, 1154, 1156, 1246, 1234, + 1242, 1241, 1240, 1239, 1248, 1157, 1162, 1237, 1164, 1242, + 1241, 1240, 1243, 1165, 1242, 1166, 1221, 1228, 1220, 1219, + 1218, 1217, 1235, 1173, 1226, 1169, 1223, 1222, 1221, 1174, + + 1168, 1221, 1205, 1216, 1218, 1217, 1216, 1224, 1209, 1222, + 1202, 1201, 1200, 1177, 1218, 1207, 1203, 1191, 1200, 1199, + 1198, 1193, 1201, 1200, 1199, 1207, 1195, 0, 1192, 1198, + 1197, 1196, 1184, 1175, 1174, 1170, 1166, 0, 1163, 1160, + 1156, 929, 937, 687, 518, 402, 0, 0, 0, 0, + 328, 253, 248, 194, 0, 0, 0, 0, 1455, 1214, + 1215, 1218, 189, 100, 1219, 1222 } ; -static grib_yyconst flex_int16_t grib_yy_def[658] = +static grib_yyconst flex_int16_t grib_yy_def[767] = { 0, - 655, 1, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 656, 656, 656, 655, - 656, 656, 21, 21, 21, 21, 24, 24, 21, 21, - 21, 24, 24, 24, 24, 24, 24, 24, 24, 21, - 21, 21, 655, 655, 655, 655, 655, 13, 655, 655, - 655, 13, 655, 655, 655, 655, 655, 657, 21, 21, - 21, 24, 24, 21, 21, 21, 21, 21, 21, 24, - 21, 21, 21, 24, 24, 24, 21, 21, 21, 21, - 657, 21, 24, 21, 21, 21, 24, 24, 24, 24, - 24, 24, 24, 24, 21, 21, 21, 21, 21, 21, + 759, 1, 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 760, 759, 759, 759, 761, 761, 18, 759, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 759, 759, 759, 759, 759, 762, 763, 759, + 764, 760, 759, 759, 759, 759, 759, 765, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 765, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 21, 21, 21, 24, 24, 21, 24, 21, 21, 21, - 24, 24, 24, 24, 24, 24, 24, 24, 21, 24, - 24, 21, 655, 655, 13, 655, 655, 655, 655, 21, - 21, 21, 21, 24, 24, 24, 24, 24, 24, 24, - 24, 21, 24, 21, 21, 21, 21, 21, 21, 21, - 21, 24, 24, 24, 24, 657, 24, 24, 24, 24, - 24, 24, 21, 21, 21, 21, 21, 24, 24, 24, - 24, 24, 24, 21, 21, 24, 24, 24, 24, 24, - 21, 21, 21, 24, 21, 21, 24, 24, 24, 24, - 24, 21, 21, 21, 24, 21, 21, 21, 21, 21, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 759, 759, 766, 764, 759, 759, + 759, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 765, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 21, 21, 24, 21, 21, 21, 21, 655, 655, 655, - 655, 655, 21, 21, 21, 24, 24, 24, 24, 24, - 24, 24, 21, 24, 24, 24, 24, 24, 21, 21, - 24, 24, 24, 21, 657, 657, 657, 21, 21, 21, - 24, 21, 21, 24, 21, 24, 24, 24, 656, 21, - 21, 21, 21, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 21, 21, 24, 24, 24, 21, 21, 21, - 21, 21, 21, 21, 21, 24, 24, 24, 24, 24, - 655, 655, 24, 24, 24, 24, 24, 24, 24, 24, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 759, 759, 759, 759, 759, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 765, 765, 765, 18, 18, 18, 18, 18, 18, 18, + 765, 765, 765, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 24, 21, 21, 24, 21, 21, 24, 24, 24, 24, - 24, 657, 657, 657, 24, 24, 24, 21, 24, 21, - 21, 21, 21, 21, 657, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 24, 21, 21, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 24, 24, 21, 21, 21, 657, 657, 657, - 21, 21, 21, 21, 24, 24, 21, 24, 24, 24, - 657, 24, 24, 24, 24, 24, 24, 24, 24, 21, + 759, 759, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 765, 765, 765, 18, 18, 18, 18, 18, 18, + 18, 765, 765, 765, 18, 18, 18, 765, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 765, 765, 765, 765, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 765, 765, 765, 18, 18, 18, - 21, 21, 21, 21, 24, 24, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 24, 24, - 24, 24, 21, 24, 24, 24, 21, 21, 21, 21, - 24, 24, 24, 24, 24, 24, 24, 657, 657, 657, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 657, - 21, 21, 21, 21, 21, 21, 21, 24, 24, 21, - 21, 21, 21, 21, 24, 24, 24, 24, 24, 21, - 21, 21, 21, 21, 24, 24, 24, 21, 21, 21, - 21, 21, 21, 657, 657, 657, 21, 21, 21, 21, - 21, 24, 24, 24, 657, 24, 24, 24, 24, 24, + 18, 18, 18, 765, 765, 765, 18, 18, 18, 18, + 765, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 765, 765, 765, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 765, 765, 765, 18, 18, 18, 18, 765, 765, 765, + 18, 18, 18, 18, 18, 765, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 765, 765, - 21, 21, 21, 21, 21, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 21, 21, 24, 24, 24, 24, - 21, 21, 657, 657, 657, 21, 21, 21, 21, 21, - 21, 657, 21, 21, 24, 24, 24, 24, 24, 24, - 24, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 24, 24, 657, 657, 657, 24, - 24, 24, 24, 657, 21, 21, 21, 21, 21, 21, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 657, 657, 657, 657, 24, 21, 21, 21, 656, 656, - 656, 656, 21, 21, 24, 24, 657, 657, 657, 24, + 765, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 765, 765, 765, 18, 18, 18, 765, 765, + 765, 18, 18, 18, 18, 18, 765, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 765, 765, 765, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 765, 765, 765, + 18, 18, 765, 765, 765, 18, 18, 18, 18, 765, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 765, 765, 765, + 18, 18, 18, 18, 18, 18, 18, 765, 765, 765, - 24, 24, 24, 657, 24, 24, 24, 21, 21, 657, - 657, 657, 21, 21, 21, 657, 24, 24, 24, 24, - 24, 657, 657, 657, 24, 24, 657, 21, 21, 21, - 657, 657, 657, 21, 657, 21, 24, 24, 657, 657, - 657, 657, 24, 657, 657, 657, 657, 657, 657, 657, - 657, 657, 657, 657, 0, 655, 655 + 18, 765, 765, 765, 18, 18, 18, 765, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 765, 765, + 765, 18, 18, 18, 18, 18, 18, 765, 765, 765, + 765, 765, 765, 765, 18, 18, 18, 18, 18, 18, + 18, 18, 765, 765, 765, 18, 18, 18, 18, 765, + 765, 765, 765, 765, 765, 18, 18, 18, 18, 765, + 18, 765, 765, 765, 18, 18, 18, 18, 765, 765, + 765, 765, 765, 765, 18, 18, 18, 765, 18, 765, + 765, 765, 18, 18, 18, 18, 765, 765, 765, 765, + 765, 765, 18, 18, 765, 18, 765, 765, 765, 18, + + 18, 765, 765, 765, 765, 765, 765, 18, 765, 18, + 765, 765, 765, 18, 18, 765, 765, 765, 765, 765, + 765, 765, 765, 765, 765, 18, 765, 765, 765, 765, + 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, + 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, + 765, 765, 765, 765, 765, 765, 765, 765, 0, 759, + 759, 759, 759, 759, 759, 759 } ; -static grib_yyconst flex_int16_t grib_yy_nxt[3282] = +static grib_yyconst flex_int16_t grib_yy_nxt[1511] = { 0, 4, 5, 6, 7, 8, 9, 10, 8, 11, 12, - 13, 13, 13, 13, 14, 15, 16, 17, 17, 17, - 17, 18, 17, 17, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 17, 41, 42, 17, - 43, 44, 48, 48, 48, 48, 49, 49, 49, 49, - 50, 51, 52, 52, 52, 52, 54, 55, 58, 59, - 53, 58, 58, 58, 58, 58, 58, 58, 58, 654, - 653, 652, 53, 651, 69, 60, 58, 58, 58, 58, - 650, 58, 58, 58, 58, 70, 649, 59, 71, 59, + 13, 13, 13, 13, 13, 13, 13, 14, 15, 16, + 17, 17, 17, 17, 18, 17, 17, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 17, + 41, 42, 17, 43, 44, 48, 48, 48, 48, 48, + 48, 48, 49, 49, 49, 49, 49, 49, 49, 50, + 51, 54, 55, 58, 58, 58, 58, 58, 58, 58, + 59, 59, 53, 58, 58, 58, 58, 58, 58, 58, + 59, 59, 59, 59, 53, 61, 60, 62, 70, 63, - 80, 59, 59, 648, 59, 81, 59, 647, 76, 646, - 61, 58, 58, 58, 58, 66, 77, 645, 78, 644, - 59, 67, 59, 642, 82, 641, 640, 79, 59, 84, - 68, 98, 639, 59, 59, 59, 83, 85, 62, 59, - 63, 99, 64, 59, 65, 72, 59, 100, 59, 73, - 635, 59, 59, 633, 59, 74, 59, 101, 59, 108, - 75, 86, 102, 59, 87, 88, 59, 632, 59, 59, - 59, 59, 92, 89, 59, 59, 94, 90, 91, 59, - 95, 59, 59, 59, 96, 93, 59, 59, 631, 119, - 97, 59, 59, 59, 103, 59, 105, 59, 104, 116, + 59, 64, 128, 65, 66, 59, 59, 67, 81, 71, + 68, 124, 72, 82, 77, 59, 73, 59, 59, 69, + 74, 85, 78, 93, 79, 59, 75, 59, 109, 86, + 59, 76, 59, 80, 87, 83, 59, 88, 89, 59, + 94, 133, 99, 59, 59, 95, 90, 84, 59, 96, + 91, 92, 100, 97, 101, 59, 59, 59, 104, 98, + 59, 106, 105, 140, 102, 185, 110, 126, 59, 103, + 111, 120, 112, 122, 113, 107, 121, 108, 117, 126, + 114, 115, 123, 116, 50, 51, 59, 59, 118, 132, + 119, 49, 59, 129, 50, 51, 135, 53, 127, 127, - 59, 627, 624, 59, 59, 48, 48, 48, 48, 117, - 106, 118, 107, 623, 59, 59, 109, 622, 616, 120, - 110, 612, 111, 59, 112, 59, 59, 59, 121, 59, - 113, 114, 611, 115, 59, 122, 59, 610, 59, 599, - 59, 49, 49, 49, 49, 125, 125, 125, 125, 124, - 126, 126, 126, 126, 125, 125, 125, 125, 127, 598, - 128, 124, 129, 129, 129, 129, 130, 59, 597, 59, - 127, 59, 59, 59, 59, 131, 134, 584, 59, 583, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 133, - 59, 582, 132, 135, 59, 59, 581, 140, 59, 59, + 127, 127, 127, 127, 127, 129, 134, 53, 130, 53, + 131, 131, 131, 131, 131, 131, 131, 59, 59, 53, + 59, 59, 59, 59, 59, 59, 137, 59, 59, 758, + 59, 59, 59, 59, 150, 151, 59, 59, 136, 59, + 156, 138, 146, 143, 139, 145, 142, 144, 153, 141, + 154, 147, 148, 152, 149, 155, 59, 59, 157, 59, + 59, 59, 158, 160, 59, 59, 59, 59, 59, 163, + 168, 59, 59, 166, 165, 59, 59, 161, 169, 164, + 59, 171, 162, 172, 59, 59, 59, 170, 59, 167, + 757, 173, 181, 180, 59, 756, 59, 59, 174, 175, - 59, 141, 59, 59, 59, 59, 59, 59, 136, 59, - 564, 59, 559, 59, 137, 59, 59, 59, 59, 59, - 59, 59, 59, 139, 59, 147, 138, 558, 59, 557, - 532, 59, 143, 59, 142, 59, 148, 59, 525, 59, - 59, 144, 145, 524, 146, 59, 59, 59, 59, 59, - 523, 59, 59, 495, 486, 59, 59, 485, 59, 151, - 59, 484, 450, 149, 150, 59, 59, 153, 440, 439, - 59, 59, 59, 438, 59, 59, 59, 59, 152, 59, - 59, 59, 59, 155, 154, 59, 59, 59, 391, 59, - 380, 59, 157, 59, 59, 379, 59, 59, 59, 378, + 176, 182, 59, 59, 186, 187, 59, 177, 178, 179, + 193, 188, 190, 59, 59, 59, 183, 189, 59, 198, + 59, 184, 59, 59, 191, 192, 194, 196, 197, 200, + 195, 59, 59, 59, 201, 203, 59, 59, 204, 59, + 199, 202, 207, 59, 215, 59, 205, 209, 218, 50, + 51, 210, 206, 211, 59, 59, 215, 59, 225, 208, + 212, 213, 53, 214, 214, 214, 214, 214, 214, 214, + 755, 221, 250, 216, 53, 217, 217, 217, 217, 217, + 217, 217, 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 59, 59, 59, 59, - 59, 314, 160, 158, 313, 59, 312, 59, 59, 59, - 59, 159, 59, 156, 59, 45, 59, 59, 161, 59, - 162, 59, 59, 59, 59, 123, 59, 163, 57, 59, - 59, 56, 59, 59, 47, 59, 164, 59, 46, 59, - 45, 165, 59, 59, 59, 59, 59, 59, 655, 655, - 167, 59, 59, 166, 59, 655, 59, 59, 59, 168, - 59, 655, 59, 655, 655, 59, 59, 59, 655, 169, - 655, 59, 59, 59, 59, 655, 59, 59, 59, 59, - 170, 171, 172, 59, 59, 59, 59, 176, 59, 173, - 174, 175, 177, 178, 181, 59, 59, 59, 59, 59, - - 59, 59, 655, 59, 655, 59, 59, 59, 179, 59, - 59, 182, 59, 180, 59, 59, 59, 655, 59, 655, - 59, 59, 183, 59, 655, 59, 59, 59, 59, 185, - 59, 186, 59, 59, 184, 59, 189, 655, 59, 655, - 59, 655, 59, 187, 188, 59, 59, 59, 59, 59, - 192, 59, 190, 655, 59, 59, 191, 59, 193, 59, - 655, 59, 194, 59, 59, 655, 59, 59, 655, 59, - 59, 655, 655, 59, 655, 195, 59, 196, 59, 59, - 59, 59, 655, 197, 59, 655, 655, 655, 59, 59, - 59, 199, 59, 655, 59, 59, 198, 59, 59, 655, - - 200, 59, 655, 59, 59, 202, 655, 59, 201, 655, - 655, 204, 59, 59, 59, 205, 59, 206, 59, 59, - 59, 59, 203, 59, 655, 207, 59, 59, 59, 59, - 208, 59, 209, 209, 209, 209, 126, 126, 126, 126, - 655, 655, 655, 211, 210, 212, 212, 212, 212, 129, - 129, 129, 129, 213, 655, 655, 210, 129, 129, 129, - 129, 214, 59, 655, 59, 655, 59, 59, 59, 59, - 655, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 215, 59, 59, 217, 59, 655, 216, 59, 655, 655, - 59, 655, 59, 59, 655, 59, 59, 59, 59, 59, - - 59, 655, 655, 59, 655, 655, 59, 655, 218, 59, - 219, 59, 59, 655, 59, 220, 59, 235, 59, 59, - 59, 655, 236, 59, 655, 59, 59, 237, 655, 222, - 59, 59, 59, 59, 59, 655, 59, 224, 221, 59, - 655, 59, 655, 59, 59, 223, 59, 59, 59, 59, - 59, 59, 225, 59, 227, 59, 59, 655, 59, 655, - 59, 226, 59, 228, 229, 59, 59, 59, 59, 59, - 230, 59, 59, 655, 59, 59, 59, 59, 59, 59, - 59, 59, 231, 232, 59, 59, 655, 59, 59, 59, - 655, 655, 238, 59, 59, 233, 59, 655, 59, 59, - - 59, 59, 59, 234, 59, 59, 655, 59, 59, 655, - 655, 59, 655, 655, 59, 655, 59, 59, 655, 239, - 240, 59, 655, 241, 59, 59, 242, 59, 59, 59, - 655, 655, 59, 243, 59, 59, 655, 59, 655, 59, - 59, 655, 655, 59, 655, 244, 655, 59, 59, 59, - 245, 59, 655, 59, 655, 246, 59, 59, 59, 59, - 59, 247, 59, 59, 249, 248, 250, 59, 655, 59, - 59, 655, 655, 59, 655, 59, 59, 59, 59, 59, - 251, 59, 59, 655, 655, 59, 655, 655, 59, 59, - 655, 655, 59, 59, 253, 59, 59, 655, 655, 252, - - 59, 255, 59, 655, 59, 59, 655, 59, 59, 655, - 254, 59, 257, 655, 59, 655, 59, 655, 59, 59, - 59, 655, 59, 59, 256, 59, 59, 59, 59, 59, - 258, 264, 59, 59, 655, 59, 59, 59, 59, 655, - 259, 59, 260, 59, 59, 261, 262, 655, 59, 655, - 263, 59, 59, 59, 59, 267, 59, 59, 655, 59, - 655, 59, 59, 59, 655, 655, 59, 59, 59, 59, - 655, 59, 655, 59, 265, 59, 59, 269, 59, 655, - 59, 655, 59, 266, 59, 59, 268, 59, 59, 59, - 59, 59, 59, 655, 655, 271, 59, 655, 655, 59, - - 655, 59, 270, 59, 59, 59, 275, 59, 59, 59, - 59, 59, 273, 274, 59, 272, 59, 59, 59, 655, - 59, 59, 59, 655, 278, 655, 655, 59, 59, 655, - 59, 655, 59, 59, 59, 59, 59, 59, 276, 59, - 59, 59, 277, 59, 59, 59, 59, 59, 59, 59, - 279, 59, 280, 59, 655, 59, 655, 281, 282, 59, - 59, 59, 284, 59, 59, 59, 59, 283, 285, 655, - 286, 655, 59, 59, 59, 59, 59, 59, 59, 59, - 655, 59, 287, 288, 655, 59, 655, 59, 59, 655, - 289, 655, 59, 59, 59, 59, 59, 59, 655, 59, - - 655, 59, 290, 59, 655, 59, 655, 59, 655, 59, - 209, 209, 209, 209, 209, 209, 209, 209, 291, 293, - 292, 292, 292, 292, 212, 212, 212, 212, 212, 212, - 212, 212, 655, 59, 655, 59, 59, 59, 59, 294, - 59, 59, 59, 295, 59, 59, 59, 59, 296, 655, - 59, 655, 655, 59, 59, 655, 59, 59, 297, 59, - 655, 59, 298, 59, 655, 59, 59, 299, 59, 59, - 59, 59, 655, 655, 59, 59, 59, 59, 59, 655, - 59, 59, 59, 302, 59, 655, 655, 59, 300, 59, - 301, 59, 59, 59, 59, 59, 59, 304, 59, 655, - - 59, 59, 655, 59, 59, 303, 59, 59, 655, 655, - 59, 306, 655, 59, 655, 305, 655, 59, 59, 655, - 307, 59, 59, 655, 59, 655, 59, 59, 655, 59, - 59, 59, 59, 59, 308, 59, 655, 59, 59, 655, - 59, 59, 59, 655, 310, 59, 655, 59, 59, 655, - 309, 655, 59, 59, 59, 59, 59, 315, 59, 59, - 311, 59, 59, 317, 59, 655, 316, 655, 59, 318, - 655, 655, 655, 59, 655, 655, 59, 655, 59, 59, - 59, 319, 59, 59, 59, 59, 320, 59, 655, 59, - 655, 655, 59, 59, 59, 655, 59, 655, 59, 59, - - 655, 59, 59, 322, 321, 59, 59, 59, 655, 655, - 324, 59, 59, 655, 59, 59, 655, 323, 59, 655, - 655, 59, 655, 655, 59, 655, 59, 655, 655, 59, - 58, 325, 58, 58, 326, 59, 59, 59, 59, 59, - 59, 59, 327, 59, 328, 59, 655, 59, 655, 59, - 59, 655, 59, 655, 59, 655, 59, 59, 655, 59, - 59, 59, 59, 59, 330, 329, 331, 59, 59, 333, - 59, 655, 59, 59, 59, 655, 655, 655, 59, 59, - 59, 655, 655, 59, 59, 59, 59, 332, 59, 655, - 59, 335, 59, 655, 655, 59, 59, 655, 334, 59, - - 336, 59, 59, 59, 59, 59, 337, 655, 59, 655, - 59, 59, 59, 655, 59, 59, 655, 59, 59, 59, - 655, 59, 59, 655, 655, 59, 59, 59, 59, 59, - 338, 59, 655, 59, 59, 339, 655, 59, 59, 655, - 59, 340, 59, 59, 59, 342, 655, 59, 341, 59, - 655, 59, 59, 59, 655, 59, 59, 655, 59, 343, - 344, 59, 59, 655, 59, 655, 59, 59, 345, 59, - 655, 346, 655, 59, 59, 59, 347, 655, 348, 59, - 59, 59, 59, 59, 59, 59, 655, 59, 59, 655, - 59, 655, 59, 59, 655, 59, 59, 59, 655, 350, - - 655, 59, 59, 59, 655, 655, 349, 59, 59, 352, - 59, 655, 59, 655, 59, 351, 655, 353, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 354, 59, 59, - 59, 59, 59, 355, 59, 59, 59, 357, 59, 358, - 356, 655, 59, 655, 59, 59, 59, 59, 59, 359, - 59, 59, 655, 655, 59, 360, 361, 59, 59, 59, - 59, 655, 59, 655, 59, 59, 59, 655, 655, 59, - 59, 59, 292, 292, 292, 292, 292, 292, 292, 292, - 362, 59, 655, 655, 655, 59, 655, 655, 59, 363, - 59, 59, 59, 655, 59, 655, 59, 59, 59, 655, - - 59, 59, 655, 59, 59, 59, 365, 59, 59, 655, - 59, 655, 59, 59, 59, 655, 59, 59, 364, 59, - 655, 59, 366, 59, 655, 367, 59, 655, 59, 59, - 59, 655, 655, 655, 369, 59, 59, 655, 655, 655, - 59, 59, 59, 655, 59, 59, 368, 59, 59, 59, - 370, 59, 59, 372, 655, 59, 59, 59, 655, 59, - 655, 374, 371, 655, 59, 59, 59, 59, 59, 59, - 373, 59, 655, 59, 655, 655, 59, 59, 59, 375, - 655, 59, 377, 655, 59, 59, 59, 59, 59, 59, - 59, 376, 59, 59, 59, 59, 59, 655, 59, 382, - - 59, 59, 381, 59, 59, 655, 59, 59, 383, 59, - 59, 59, 59, 59, 655, 59, 655, 655, 59, 655, - 386, 384, 387, 385, 655, 59, 59, 59, 59, 59, - 59, 655, 59, 655, 59, 59, 655, 59, 655, 59, - 655, 59, 388, 59, 389, 59, 59, 59, 59, 59, - 59, 392, 59, 390, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 655, 59, 655, 59, 655, 59, 393, - 59, 395, 59, 59, 394, 59, 59, 59, 396, 398, - 59, 655, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 399, 655, 59, 59, 401, - - 397, 59, 400, 59, 655, 59, 655, 655, 59, 655, - 59, 59, 59, 59, 59, 403, 59, 402, 59, 404, - 59, 59, 406, 59, 59, 655, 59, 405, 59, 59, - 59, 655, 59, 59, 59, 59, 59, 655, 655, 408, - 409, 59, 407, 59, 59, 59, 655, 59, 59, 59, - 59, 410, 59, 655, 59, 59, 59, 412, 411, 413, - 59, 59, 655, 59, 59, 655, 655, 59, 414, 655, - 59, 655, 59, 655, 59, 59, 59, 59, 59, 415, - 59, 59, 655, 655, 59, 655, 59, 59, 416, 59, - 59, 59, 59, 417, 59, 418, 655, 59, 59, 59, - - 59, 59, 59, 59, 655, 59, 655, 59, 59, 59, - 420, 419, 59, 59, 59, 59, 422, 655, 655, 421, - 59, 655, 655, 655, 423, 59, 59, 655, 59, 655, - 59, 59, 59, 59, 425, 424, 655, 59, 59, 59, - 59, 655, 59, 59, 59, 59, 59, 59, 426, 59, - 655, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 427, 59, - 59, 430, 59, 59, 59, 59, 59, 655, 59, 655, - 59, 428, 59, 59, 59, 59, 431, 59, 655, 59, - 429, 432, 59, 655, 59, 655, 59, 59, 59, 59, - - 59, 59, 59, 59, 59, 434, 59, 433, 435, 59, - 655, 655, 59, 655, 59, 59, 59, 59, 59, 436, - 59, 59, 443, 59, 59, 655, 59, 59, 59, 59, - 59, 59, 59, 59, 655, 59, 655, 59, 437, 59, - 655, 59, 59, 59, 59, 59, 59, 441, 59, 59, - 442, 59, 655, 59, 444, 59, 655, 655, 59, 655, - 445, 59, 655, 59, 59, 59, 655, 59, 446, 59, - 59, 447, 59, 655, 59, 59, 448, 655, 59, 59, - 59, 59, 59, 59, 59, 655, 59, 59, 449, 59, - 59, 59, 655, 59, 59, 59, 452, 59, 655, 59, - - 59, 453, 59, 59, 59, 59, 451, 655, 59, 59, - 59, 59, 59, 655, 59, 59, 59, 59, 59, 655, - 59, 59, 655, 59, 59, 655, 655, 59, 655, 655, - 59, 454, 59, 655, 456, 59, 59, 655, 59, 455, - 59, 59, 59, 59, 59, 457, 59, 59, 59, 458, - 58, 58, 604, 58, 655, 655, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 459, 59, 59, 59, 462, - 59, 59, 655, 59, 59, 655, 461, 655, 59, 460, - 59, 59, 59, 59, 59, 59, 59, 59, 463, 59, - 59, 464, 59, 655, 59, 655, 59, 59, 59, 59, - - 465, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 467, 59, 466, 59, 59, 59, 59, 59, 59, 59, - 59, 655, 655, 59, 59, 59, 59, 59, 59, 59, - 59, 468, 469, 59, 471, 655, 59, 470, 59, 655, - 655, 59, 59, 59, 59, 59, 655, 59, 59, 59, - 474, 59, 655, 472, 59, 59, 59, 59, 59, 59, - 59, 473, 59, 655, 655, 59, 59, 655, 59, 655, - 59, 655, 477, 59, 475, 478, 59, 655, 476, 655, - 59, 59, 59, 655, 59, 59, 655, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 655, 59, 59, 59, - - 479, 59, 480, 655, 655, 59, 655, 655, 59, 655, - 59, 59, 483, 59, 59, 481, 59, 59, 59, 59, - 59, 59, 59, 59, 655, 59, 59, 59, 59, 59, - 59, 482, 59, 59, 59, 59, 59, 655, 59, 59, - 655, 59, 59, 655, 655, 59, 655, 487, 59, 655, - 59, 489, 488, 59, 59, 59, 59, 59, 59, 59, - 490, 491, 655, 655, 59, 59, 59, 59, 655, 59, - 59, 59, 59, 59, 493, 492, 655, 59, 59, 655, - 655, 59, 655, 59, 59, 59, 655, 655, 59, 59, - 498, 59, 655, 494, 655, 59, 59, 59, 59, 496, - - 59, 59, 59, 59, 497, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 499, - 59, 655, 500, 59, 501, 59, 59, 59, 59, 59, - 655, 655, 59, 655, 59, 655, 502, 59, 59, 59, - 59, 59, 59, 503, 504, 59, 59, 59, 59, 505, - 59, 59, 506, 512, 59, 59, 513, 59, 59, 655, - 59, 655, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 655, 655, 508, 507, 655, 655, 59, 655, 59, - 59, 59, 655, 59, 655, 59, 510, 59, 655, 59, - 59, 655, 59, 509, 59, 59, 59, 511, 59, 59, - - 59, 59, 59, 655, 59, 59, 514, 59, 655, 59, - 59, 59, 655, 59, 59, 59, 59, 516, 59, 515, - 59, 59, 517, 655, 59, 59, 655, 59, 59, 59, - 59, 518, 59, 59, 59, 59, 59, 655, 59, 59, - 59, 59, 59, 519, 59, 59, 59, 59, 59, 520, - 59, 59, 59, 59, 59, 59, 59, 59, 522, 526, - 59, 655, 59, 521, 59, 655, 59, 655, 655, 655, - 59, 59, 59, 59, 59, 59, 59, 59, 527, 528, - 59, 530, 59, 59, 59, 59, 529, 59, 59, 655, - 59, 59, 59, 59, 59, 531, 59, 59, 59, 533, - - 534, 59, 655, 59, 59, 655, 655, 59, 655, 59, - 59, 535, 59, 59, 59, 59, 536, 59, 655, 655, - 59, 59, 655, 59, 59, 59, 655, 655, 59, 655, - 59, 59, 655, 655, 655, 59, 59, 59, 59, 537, - 59, 59, 59, 59, 59, 538, 59, 59, 59, 59, - 59, 59, 59, 59, 540, 655, 59, 59, 541, 539, - 59, 542, 655, 544, 59, 59, 59, 59, 59, 59, - 59, 655, 59, 543, 59, 59, 59, 655, 546, 59, - 59, 59, 547, 545, 59, 59, 59, 548, 59, 59, - 655, 655, 59, 655, 59, 59, 655, 59, 59, 59, - - 59, 59, 59, 655, 655, 59, 655, 655, 59, 655, - 655, 59, 549, 59, 655, 59, 59, 59, 59, 59, - 59, 550, 59, 59, 59, 59, 655, 59, 655, 59, - 655, 655, 59, 551, 655, 552, 59, 554, 59, 59, - 59, 655, 59, 59, 655, 655, 553, 59, 655, 59, - 655, 59, 655, 59, 59, 555, 59, 59, 59, 59, - 556, 59, 59, 59, 59, 59, 59, 655, 59, 655, - 59, 560, 59, 655, 59, 655, 59, 655, 59, 561, - 59, 655, 59, 655, 59, 655, 59, 562, 59, 655, - 59, 655, 59, 563, 59, 59, 59, 59, 59, 59, + 59, 59, 219, 59, 59, 59, 223, 220, 222, 59, + 224, 226, 59, 230, 228, 59, 59, 59, 59, 59, + 59, 233, 59, 59, 235, 59, 227, 59, 231, 59, + 229, 754, 238, 246, 59, 240, 59, 241, 247, 236, + 234, 232, 242, 237, 244, 239, 59, 243, 59, 251, + 254, 252, 245, 253, 59, 255, 59, 248, 249, 59, + 59, 59, 59, 59, 59, 59, 59, 258, 59, 59, + 259, 59, 59, 59, 260, 257, 256, 262, 264, 266, + 263, 59, 59, 267, 59, 271, 59, 261, 59, 265, + 59, 59, 269, 268, 274, 270, 59, 272, 59, 273, + 278, 59, 276, 59, 59, 59, 59, 280, 282, 59, + 275, 283, 59, 59, 59, 277, 59, 59, 279, 59, + 59, 59, 59, 59, 59, 284, 59, 281, 287, 59, + 285, 59, 59, 291, 286, 294, 288, 59, 290, 293, + 289, 296, 292, 297, 308, 295, 300, 753, 307, 299, + 298, 214, 214, 214, 214, 214, 214, 214, 214, 214, + 214, 214, 214, 214, 214, 301, 59, 302, 302, 302, + 302, 302, 302, 302, 217, 217, 217, 217, 217, 217, + 217, 217, 217, 217, 217, 217, 217, 217, 59, 304, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 655, 655, 59, 565, 655, 59, 59, 655, 59, - 59, 59, 59, 59, 566, 655, 59, 655, 59, 567, - 59, 655, 59, 59, 568, 59, 655, 59, 59, 59, - 655, 569, 59, 59, 59, 59, 570, 59, 59, 655, - 571, 655, 59, 59, 59, 655, 59, 59, 59, 59, - 59, 59, 572, 59, 59, 59, 655, 573, 59, 59, - 59, 59, 59, 574, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 576, 59, 655, 59, 655, 575, - 655, 577, 59, 655, 59, 655, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 578, 59, 655, 579, 59, - 580, 59, 59, 59, 59, 59, 655, 59, 59, 655, - 59, 59, 655, 59, 59, 59, 59, 59, 59, 655, - 59, 655, 59, 59, 59, 655, 59, 59, 59, 59, - 59, 59, 585, 59, 59, 59, 655, 59, 59, 586, - 59, 59, 587, 588, 59, 655, 59, 655, 59, 655, - 59, 59, 59, 59, 59, 59, 589, 59, 59, 590, - 59, 591, 59, 59, 655, 59, 655, 655, 59, 59, - 655, 59, 59, 655, 59, 59, 59, 59, 592, 59, - 655, 593, 655, 59, 594, 59, 655, 59, 59, 595, + 314, 309, 316, 59, 306, 312, 59, 305, 59, 59, + 311, 59, 59, 318, 59, 320, 310, 59, 313, 328, + 317, 327, 315, 59, 59, 330, 59, 59, 319, 59, + 325, 321, 338, 326, 59, 337, 59, 59, 59, 59, + 329, 341, 59, 59, 59, 335, 59, 59, 344, 331, + 59, 339, 336, 59, 345, 59, 346, 59, 59, 348, + 340, 343, 59, 342, 349, 59, 59, 347, 59, 350, + 355, 59, 351, 59, 59, 59, 59, 352, 59, 59, + 59, 59, 59, 59, 59, 358, 353, 360, 361, 354, + 365, 357, 59, 359, 356, 59, 59, 59, 363, 59, - 59, 59, 59, 59, 59, 59, 655, 59, 655, 59, - 59, 59, 655, 59, 59, 596, 59, 59, 59, 59, - 59, 59, 601, 59, 59, 59, 59, 59, 59, 59, - 602, 655, 59, 655, 59, 59, 603, 59, 600, 59, - 655, 59, 655, 59, 59, 606, 59, 59, 59, 59, - 59, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 59, 59, 59, 655, 59, 608, 59, - 607, 59, 59, 613, 59, 609, 59, 59, 655, 59, - 605, 59, 59, 59, 655, 59, 59, 59, 59, 59, - 617, 655, 59, 655, 59, 59, 615, 655, 59, 614, + 362, 366, 367, 59, 364, 368, 371, 370, 372, 376, + 373, 374, 59, 375, 59, 369, 752, 59, 59, 379, + 381, 409, 377, 59, 378, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, 302, 59, + 59, 59, 59, 59, 385, 59, 59, 383, 380, 386, + 382, 59, 384, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 389, 391, 399, 387, 388, 59, 59, 59, + 394, 407, 59, 59, 390, 392, 402, 403, 393, 400, + 59, 401, 59, 398, 59, 412, 59, 59, 59, 59, + 415, 408, 59, 410, 59, 59, 416, 413, 59, 59, - 59, 59, 59, 618, 59, 59, 619, 59, 655, 59, - 59, 59, 655, 620, 59, 59, 59, 59, 621, 59, - 59, 655, 655, 655, 59, 59, 59, 59, 59, 59, - 59, 59, 625, 59, 655, 59, 59, 626, 59, 59, - 59, 59, 59, 59, 59, 655, 655, 628, 59, 629, - 655, 59, 59, 59, 59, 59, 59, 655, 59, 59, - 59, 59, 59, 655, 630, 655, 59, 59, 59, 59, - 59, 634, 59, 59, 655, 59, 655, 655, 59, 59, - 655, 655, 655, 59, 59, 636, 637, 59, 59, 59, - 59, 59, 59, 638, 59, 59, 59, 59, 59, 59, + 59, 414, 59, 420, 59, 424, 59, 59, 59, 419, + 418, 421, 423, 425, 426, 417, 422, 428, 429, 427, + 59, 59, 430, 59, 431, 434, 59, 59, 436, 59, + 432, 59, 433, 59, 59, 438, 59, 59, 435, 59, + 437, 448, 59, 446, 59, 59, 442, 441, 449, 59, + 59, 59, 450, 59, 59, 439, 440, 59, 447, 454, + 59, 59, 59, 59, 458, 59, 59, 59, 59, 59, + 453, 457, 59, 455, 452, 465, 471, 451, 456, 59, + 59, 459, 467, 59, 472, 466, 59, 460, 464, 473, + 474, 59, 478, 59, 59, 59, 59, 477, 59, 59, - 59, 59, 59, 643, 59, 59, 59, 59, 59, 59, - 655, 655, 59, 59, 655, 59, 59, 655, 59, 655, - 59, 655, 59, 655, 655, 655, 655, 59, 3, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655 + 475, 479, 59, 59, 59, 484, 59, 59, 59, 59, + 59, 59, 482, 59, 493, 59, 59, 480, 59, 483, + 490, 59, 488, 481, 487, 485, 489, 486, 495, 491, + 496, 497, 492, 59, 59, 494, 502, 498, 59, 59, + 59, 59, 59, 503, 506, 507, 59, 59, 59, 59, + 59, 59, 504, 510, 512, 505, 509, 518, 59, 59, + 59, 59, 59, 508, 59, 59, 751, 59, 525, 750, + 511, 516, 517, 522, 523, 59, 524, 59, 59, 530, + 531, 59, 59, 526, 59, 529, 528, 532, 533, 59, + 59, 59, 59, 59, 537, 59, 59, 538, 534, 59, + + 59, 535, 540, 59, 543, 542, 536, 539, 541, 59, + 59, 59, 549, 59, 59, 59, 59, 59, 544, 545, + 551, 552, 59, 550, 59, 59, 59, 59, 561, 59, + 553, 59, 59, 554, 566, 568, 59, 555, 59, 59, + 557, 571, 572, 59, 573, 556, 59, 59, 562, 574, + 567, 569, 59, 59, 59, 59, 59, 575, 59, 59, + 584, 582, 59, 576, 578, 59, 580, 59, 579, 585, + 586, 581, 59, 59, 59, 577, 59, 59, 59, 59, + 59, 59, 595, 59, 583, 59, 587, 592, 591, 59, + 59, 59, 593, 611, 59, 612, 59, 594, 596, 597, + + 59, 609, 59, 605, 606, 601, 614, 607, 610, 59, + 617, 616, 59, 613, 59, 59, 59, 59, 59, 615, + 59, 59, 59, 623, 59, 59, 624, 626, 627, 625, + 59, 618, 59, 59, 638, 622, 59, 59, 59, 639, + 640, 635, 636, 637, 59, 649, 641, 646, 647, 59, + 648, 59, 642, 59, 59, 660, 59, 59, 59, 59, + 59, 59, 59, 659, 59, 658, 59, 661, 657, 59, + 679, 675, 59, 667, 668, 59, 665, 59, 656, 59, + 59, 684, 666, 677, 683, 59, 676, 59, 59, 59, + 686, 59, 59, 693, 685, 700, 59, 59, 749, 715, + + 59, 696, 748, 701, 694, 747, 746, 745, 708, 710, + 726, 744, 743, 742, 714, 52, 52, 59, 59, 48, + 48, 58, 58, 127, 127, 741, 740, 739, 738, 737, + 59, 736, 735, 734, 733, 732, 731, 730, 729, 728, + 727, 59, 725, 724, 723, 59, 722, 59, 721, 720, + 719, 718, 717, 716, 713, 712, 711, 709, 59, 707, + 706, 705, 704, 703, 702, 59, 59, 699, 698, 697, + 695, 59, 692, 691, 690, 689, 688, 687, 682, 681, + 680, 678, 59, 674, 673, 672, 671, 670, 669, 664, + 663, 662, 59, 59, 655, 654, 653, 652, 651, 650, + + 59, 59, 645, 644, 643, 59, 59, 634, 59, 59, + 59, 633, 632, 631, 59, 630, 629, 628, 59, 621, + 620, 619, 59, 59, 59, 59, 59, 59, 59, 608, + 59, 604, 603, 602, 59, 600, 599, 598, 59, 59, + 590, 589, 588, 59, 59, 570, 59, 565, 564, 563, + 59, 560, 559, 558, 59, 59, 548, 547, 546, 59, + 59, 59, 59, 527, 521, 520, 519, 59, 515, 514, + 513, 59, 59, 59, 59, 501, 500, 499, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 476, 470, 469, + 468, 59, 59, 463, 462, 461, 59, 59, 59, 59, + + 59, 445, 444, 443, 59, 59, 411, 406, 405, 404, + 59, 397, 396, 395, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 334, 333, 332, 324, 323, 322, + 59, 59, 59, 59, 59, 303, 59, 59, 59, 59, + 59, 59, 59, 59, 159, 59, 45, 125, 57, 56, + 47, 46, 45, 759, 3, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, + + 759, 759, 759, 759, 759, 759, 759, 759, 759, 759 } ; -static grib_yyconst flex_int16_t grib_yy_chk[3282] = +static grib_yyconst flex_int16_t grib_yy_chk[1511] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 11, 11, 11, 11, 12, 12, 12, 12, - 13, 13, 13, 13, 13, 13, 14, 14, 657, 656, - 13, 17, 17, 17, 17, 18, 18, 18, 18, 653, - 651, 650, 13, 648, 23, 18, 19, 19, 19, 19, - 647, 22, 22, 22, 22, 23, 646, 23, 23, 23, + 1, 1, 1, 1, 1, 11, 11, 11, 11, 11, + 11, 11, 12, 12, 12, 12, 12, 12, 12, 13, + 13, 14, 14, 17, 17, 17, 17, 17, 17, 17, + 21, 19, 13, 18, 18, 18, 18, 18, 18, 18, + 22, 26, 23, 42, 13, 19, 18, 21, 23, 21, - 26, 23, 26, 644, 26, 27, 26, 642, 25, 641, - 19, 21, 21, 21, 21, 22, 25, 640, 25, 639, - 25, 22, 25, 635, 27, 633, 632, 25, 27, 28, - 22, 33, 631, 28, 27, 33, 27, 28, 21, 27, - 21, 33, 21, 28, 21, 24, 33, 34, 28, 24, - 627, 34, 24, 624, 24, 24, 24, 34, 24, 37, - 24, 29, 34, 37, 29, 29, 30, 623, 30, 37, - 30, 29, 30, 29, 37, 29, 32, 29, 29, 31, - 32, 31, 35, 31, 32, 31, 35, 40, 622, 40, - 32, 40, 35, 40, 35, 32, 36, 35, 35, 39, + 30, 21, 764, 21, 22, 25, 24, 22, 26, 23, + 22, 42, 23, 27, 25, 28, 24, 31, 37, 22, + 24, 28, 25, 30, 25, 27, 24, 29, 37, 28, + 61, 24, 33, 25, 29, 27, 35, 29, 29, 32, + 31, 61, 33, 67, 34, 32, 29, 27, 103, 32, + 29, 29, 33, 32, 34, 36, 38, 40, 35, 32, + 41, 36, 35, 67, 34, 103, 38, 49, 39, 34, + 38, 40, 38, 41, 38, 36, 40, 36, 39, 49, + 38, 38, 41, 38, 48, 48, 60, 63, 39, 60, + 39, 763, 62, 51, 52, 52, 63, 48, 50, 50, - 36, 616, 612, 39, 36, 48, 48, 48, 48, 39, - 36, 39, 36, 611, 39, 36, 38, 610, 604, 41, - 38, 599, 38, 41, 38, 41, 38, 41, 41, 41, - 38, 38, 598, 38, 42, 42, 42, 597, 42, 583, - 42, 49, 49, 49, 49, 50, 50, 50, 50, 49, - 51, 51, 51, 51, 125, 125, 125, 125, 51, 582, - 53, 49, 53, 53, 53, 53, 60, 59, 581, 59, - 51, 59, 64, 59, 64, 61, 64, 564, 64, 559, - 60, 61, 60, 61, 60, 61, 60, 61, 62, 63, - 63, 558, 62, 65, 63, 69, 557, 69, 62, 69, + 50, 50, 50, 50, 50, 51, 62, 52, 53, 48, + 53, 53, 53, 53, 53, 53, 53, 64, 65, 52, + 66, 68, 69, 73, 70, 71, 65, 74, 75, 754, + 76, 79, 78, 72, 73, 74, 77, 80, 64, 83, + 79, 65, 72, 70, 66, 71, 69, 70, 76, 68, + 77, 72, 72, 75, 72, 78, 81, 84, 80, 85, + 86, 87, 81, 83, 88, 90, 91, 93, 92, 86, + 91, 94, 96, 90, 88, 97, 95, 84, 92, 87, + 98, 94, 85, 95, 100, 99, 101, 93, 107, 90, + 753, 96, 101, 100, 105, 752, 106, 102, 97, 98, - 63, 69, 65, 62, 65, 63, 65, 66, 65, 66, - 532, 66, 525, 66, 66, 67, 68, 67, 68, 67, - 68, 67, 68, 68, 70, 72, 67, 524, 70, 523, - 495, 72, 71, 72, 70, 72, 73, 72, 486, 70, - 71, 71, 71, 485, 71, 73, 71, 73, 74, 73, - 484, 73, 74, 450, 440, 76, 75, 439, 74, 76, - 75, 438, 391, 74, 75, 76, 75, 78, 380, 379, - 76, 75, 77, 378, 77, 78, 77, 78, 77, 78, - 79, 78, 79, 80, 79, 82, 79, 82, 325, 82, - 314, 82, 82, 83, 80, 313, 80, 83, 80, 312, + 98, 102, 110, 108, 105, 106, 109, 98, 99, 99, + 110, 107, 109, 113, 112, 111, 102, 108, 114, 113, + 116, 102, 115, 117, 109, 109, 110, 111, 112, 115, + 110, 118, 119, 120, 116, 118, 121, 122, 119, 123, + 114, 117, 121, 124, 128, 132, 119, 122, 132, 127, + 127, 122, 120, 123, 143, 166, 128, 137, 143, 121, + 124, 126, 127, 126, 126, 126, 126, 126, 126, 126, + 751, 137, 166, 129, 127, 129, 129, 129, 129, 129, + 129, 129, 130, 130, 130, 130, 130, 130, 130, 131, + 131, 131, 131, 131, 131, 131, 134, 136, 138, 140, - 80, 237, 85, 83, 236, 84, 235, 84, 83, 84, - 85, 84, 85, 81, 85, 45, 85, 86, 86, 86, - 87, 86, 88, 86, 87, 43, 88, 89, 16, 89, - 87, 15, 88, 89, 10, 87, 90, 88, 7, 89, - 5, 91, 90, 92, 89, 91, 90, 92, 3, 0, - 93, 91, 90, 92, 93, 0, 91, 90, 92, 94, - 93, 0, 94, 0, 0, 93, 94, 95, 0, 95, - 0, 95, 94, 95, 96, 0, 96, 94, 96, 97, - 96, 97, 97, 97, 98, 97, 98, 99, 98, 97, - 98, 98, 100, 101, 102, 99, 102, 99, 102, 99, + 142, 144, 134, 145, 146, 148, 140, 136, 138, 147, + 142, 144, 149, 148, 146, 150, 151, 152, 153, 154, + 162, 150, 155, 158, 152, 157, 145, 161, 148, 163, + 147, 746, 155, 162, 160, 158, 168, 159, 163, 153, + 151, 149, 159, 154, 160, 157, 164, 159, 165, 167, + 168, 167, 161, 167, 169, 168, 170, 164, 165, 171, + 172, 167, 173, 174, 176, 175, 178, 171, 177, 180, + 172, 181, 186, 179, 173, 170, 169, 175, 177, 179, + 176, 183, 185, 180, 182, 183, 187, 174, 188, 178, + 184, 190, 182, 181, 186, 182, 189, 184, 191, 185, - 102, 99, 0, 100, 0, 100, 101, 100, 101, 100, - 101, 104, 101, 101, 103, 104, 103, 0, 103, 0, - 103, 104, 105, 105, 0, 107, 104, 105, 106, 107, - 106, 108, 106, 105, 106, 107, 109, 0, 105, 0, - 107, 0, 108, 108, 108, 109, 108, 109, 108, 109, - 110, 109, 109, 0, 111, 110, 109, 110, 111, 110, - 0, 110, 112, 113, 111, 0, 112, 113, 0, 111, - 112, 0, 0, 113, 0, 113, 112, 114, 113, 115, - 114, 112, 0, 115, 114, 0, 0, 0, 116, 115, - 114, 117, 116, 0, 115, 114, 116, 117, 116, 0, + 190, 192, 188, 193, 194, 195, 196, 192, 194, 197, + 187, 195, 198, 200, 199, 189, 201, 202, 191, 203, + 204, 206, 211, 205, 207, 196, 222, 193, 199, 208, + 197, 209, 210, 203, 198, 205, 200, 225, 202, 204, + 201, 207, 203, 208, 225, 206, 211, 745, 222, 210, + 209, 213, 213, 213, 213, 213, 213, 213, 214, 214, + 214, 214, 214, 214, 214, 215, 219, 215, 215, 215, + 215, 215, 215, 215, 216, 216, 216, 216, 216, 216, + 216, 217, 217, 217, 217, 217, 217, 217, 220, 219, + 221, 227, 228, 229, 231, 230, 232, 233, 234, 237, - 118, 117, 0, 116, 118, 119, 0, 117, 118, 0, - 0, 120, 117, 121, 118, 120, 119, 121, 119, 118, - 119, 120, 119, 121, 0, 122, 120, 122, 121, 122, - 124, 122, 124, 124, 124, 124, 126, 126, 126, 126, - 0, 0, 0, 127, 126, 127, 127, 127, 127, 128, - 128, 128, 128, 130, 0, 0, 126, 129, 129, 129, - 129, 132, 131, 0, 131, 0, 131, 130, 131, 130, - 0, 130, 132, 130, 132, 133, 132, 133, 132, 133, - 134, 133, 135, 136, 134, 0, 135, 136, 0, 0, - 134, 0, 135, 136, 0, 134, 137, 135, 136, 138, + 232, 227, 234, 235, 221, 230, 239, 220, 240, 247, + 229, 244, 245, 237, 249, 240, 228, 246, 231, 247, + 235, 246, 233, 248, 250, 249, 254, 255, 239, 256, + 244, 240, 258, 245, 259, 256, 260, 262, 263, 264, + 248, 262, 265, 267, 258, 254, 268, 269, 265, 250, + 274, 259, 255, 270, 267, 272, 268, 275, 271, 270, + 260, 264, 276, 263, 271, 277, 278, 269, 279, 272, + 278, 281, 274, 280, 282, 283, 286, 275, 284, 287, + 288, 292, 289, 291, 290, 281, 276, 283, 284, 277, + 289, 280, 293, 282, 279, 294, 307, 297, 287, 296, - 137, 0, 0, 138, 0, 0, 137, 0, 139, 138, - 140, 137, 139, 0, 138, 141, 140, 156, 139, 141, - 140, 0, 156, 139, 0, 141, 140, 156, 0, 143, - 141, 140, 142, 143, 142, 0, 142, 145, 142, 143, - 0, 144, 0, 144, 143, 144, 145, 144, 145, 146, - 145, 146, 145, 146, 147, 146, 148, 0, 148, 0, - 148, 146, 148, 148, 149, 147, 150, 147, 150, 147, - 150, 147, 150, 0, 149, 151, 149, 151, 149, 151, - 149, 151, 151, 152, 153, 154, 0, 152, 153, 154, - 0, 0, 157, 152, 153, 154, 157, 0, 152, 153, + 286, 290, 291, 336, 288, 292, 295, 294, 295, 297, + 295, 295, 299, 296, 300, 293, 744, 303, 295, 303, + 307, 336, 299, 312, 300, 301, 301, 301, 301, 301, + 301, 301, 302, 302, 302, 302, 302, 302, 302, 305, + 308, 310, 311, 313, 312, 315, 314, 310, 305, 313, + 308, 316, 311, 317, 319, 318, 320, 325, 327, 330, + 328, 329, 315, 317, 327, 313, 314, 335, 331, 337, + 320, 335, 340, 341, 316, 318, 330, 331, 319, 328, + 342, 329, 343, 325, 344, 340, 345, 346, 347, 348, + 343, 335, 350, 337, 349, 352, 344, 341, 351, 355, - 154, 155, 157, 155, 158, 155, 0, 157, 158, 0, - 0, 155, 0, 0, 158, 0, 155, 159, 0, 158, - 159, 159, 0, 160, 160, 161, 161, 159, 160, 161, - 0, 0, 159, 162, 160, 161, 0, 162, 0, 160, - 161, 0, 0, 162, 0, 163, 0, 163, 162, 163, - 164, 163, 0, 164, 0, 164, 165, 164, 165, 164, - 165, 165, 165, 166, 167, 166, 168, 166, 0, 166, - 168, 0, 0, 167, 0, 167, 168, 167, 169, 167, - 169, 168, 169, 0, 0, 170, 0, 0, 169, 170, - 0, 0, 171, 169, 171, 170, 171, 0, 0, 170, + 353, 342, 358, 348, 359, 352, 364, 356, 357, 347, + 346, 349, 351, 352, 353, 345, 350, 356, 357, 355, + 360, 362, 358, 361, 359, 362, 363, 365, 364, 366, + 360, 367, 361, 369, 368, 366, 370, 375, 363, 376, + 365, 379, 379, 375, 382, 383, 370, 369, 382, 384, + 385, 386, 383, 387, 389, 367, 368, 388, 376, 387, + 391, 390, 392, 394, 391, 402, 399, 407, 413, 401, + 386, 390, 403, 388, 385, 401, 407, 384, 389, 408, + 410, 392, 403, 409, 407, 402, 415, 394, 399, 408, + 409, 416, 415, 418, 419, 420, 423, 413, 421, 424, - 170, 173, 171, 0, 172, 173, 0, 171, 172, 0, - 172, 173, 175, 0, 172, 0, 173, 0, 174, 172, - 174, 0, 174, 175, 174, 175, 176, 175, 177, 175, - 176, 181, 177, 181, 0, 181, 176, 181, 177, 0, - 177, 176, 178, 177, 178, 178, 179, 0, 178, 0, - 180, 184, 179, 180, 178, 184, 179, 180, 0, 178, - 0, 184, 179, 180, 0, 0, 184, 179, 180, 182, - 0, 182, 0, 182, 182, 182, 183, 186, 183, 0, - 183, 0, 183, 183, 185, 186, 185, 186, 185, 186, - 185, 186, 187, 0, 0, 188, 187, 0, 0, 188, + 410, 416, 425, 427, 426, 423, 432, 430, 434, 431, + 435, 438, 420, 446, 435, 442, 440, 418, 439, 421, + 431, 441, 427, 419, 426, 424, 430, 425, 439, 432, + 440, 441, 434, 447, 449, 438, 446, 442, 450, 453, + 451, 452, 454, 447, 451, 452, 458, 457, 465, 464, + 459, 466, 449, 457, 459, 450, 454, 466, 474, 471, + 472, 475, 478, 453, 473, 477, 743, 483, 474, 742, + 458, 464, 465, 471, 472, 479, 473, 484, 485, 479, + 483, 486, 487, 475, 493, 478, 477, 484, 485, 488, + 489, 490, 495, 491, 489, 494, 492, 490, 486, 496, - 0, 189, 187, 188, 192, 189, 192, 187, 192, 188, - 192, 189, 190, 191, 188, 189, 189, 191, 190, 0, - 195, 191, 190, 0, 195, 0, 0, 191, 190, 0, - 195, 0, 191, 190, 193, 195, 193, 194, 193, 194, - 193, 194, 194, 194, 196, 197, 196, 197, 196, 197, - 196, 197, 197, 198, 0, 198, 0, 198, 199, 198, - 200, 199, 200, 199, 200, 199, 200, 199, 201, 0, - 202, 0, 202, 201, 202, 201, 202, 201, 203, 201, - 0, 204, 203, 204, 0, 204, 0, 204, 203, 0, - 205, 0, 205, 203, 205, 206, 205, 206, 0, 206, + 497, 487, 492, 503, 495, 494, 488, 491, 493, 504, + 505, 507, 503, 506, 509, 510, 511, 512, 496, 497, + 505, 506, 516, 504, 518, 524, 522, 523, 516, 525, + 507, 528, 529, 509, 522, 524, 530, 510, 533, 534, + 512, 528, 529, 531, 530, 511, 536, 537, 518, 531, + 523, 525, 538, 539, 540, 541, 542, 533, 544, 543, + 542, 540, 545, 534, 537, 550, 538, 552, 537, 543, + 544, 539, 553, 554, 555, 536, 561, 556, 557, 566, + 567, 573, 555, 578, 541, 568, 545, 552, 550, 579, + 583, 584, 553, 578, 576, 579, 580, 554, 556, 557, - 0, 206, 206, 207, 0, 207, 0, 207, 0, 207, - 208, 208, 208, 208, 209, 209, 209, 209, 210, 213, - 210, 210, 210, 210, 211, 211, 211, 211, 212, 212, - 212, 212, 0, 214, 0, 214, 213, 214, 213, 214, - 213, 215, 213, 215, 216, 215, 217, 215, 216, 0, - 217, 0, 0, 218, 216, 0, 217, 218, 217, 216, - 0, 217, 219, 218, 0, 219, 220, 221, 218, 219, - 220, 221, 0, 0, 222, 219, 220, 221, 222, 0, - 219, 220, 221, 224, 222, 0, 0, 224, 222, 222, - 223, 225, 223, 224, 223, 225, 223, 226, 224, 0, + 581, 573, 582, 566, 567, 561, 581, 568, 576, 585, + 584, 583, 591, 580, 592, 593, 595, 596, 597, 582, + 609, 610, 614, 592, 611, 612, 593, 596, 597, 595, + 615, 585, 617, 622, 612, 591, 616, 627, 623, 614, + 615, 609, 610, 611, 624, 627, 616, 622, 623, 635, + 624, 636, 617, 637, 638, 639, 642, 646, 647, 648, + 649, 657, 658, 638, 661, 637, 639, 642, 636, 659, + 661, 657, 665, 648, 649, 666, 646, 667, 635, 668, + 676, 666, 647, 659, 665, 677, 658, 679, 684, 686, + 668, 701, 696, 676, 667, 684, 694, 700, 741, 701, - 227, 225, 0, 226, 227, 225, 225, 226, 0, 0, - 227, 228, 0, 226, 0, 227, 0, 228, 226, 0, - 229, 228, 229, 0, 229, 0, 229, 228, 0, 230, - 231, 230, 228, 230, 231, 230, 0, 232, 233, 0, - 231, 232, 233, 0, 234, 231, 0, 232, 233, 0, - 233, 0, 232, 233, 234, 238, 234, 238, 234, 238, - 234, 238, 239, 240, 239, 0, 239, 0, 239, 241, - 0, 0, 0, 241, 0, 0, 240, 0, 240, 241, - 240, 242, 240, 242, 241, 242, 243, 242, 0, 244, - 0, 0, 243, 244, 243, 0, 243, 0, 243, 244, + 714, 679, 740, 686, 677, 739, 737, 736, 694, 696, + 714, 735, 734, 733, 700, 760, 760, 761, 761, 762, + 762, 765, 765, 766, 766, 732, 731, 730, 729, 727, + 726, 725, 724, 723, 722, 721, 720, 719, 718, 717, + 716, 715, 713, 712, 711, 710, 709, 708, 707, 706, + 705, 704, 703, 702, 699, 698, 697, 695, 693, 692, + 691, 690, 689, 688, 687, 685, 683, 682, 681, 680, + 678, 675, 674, 673, 672, 671, 670, 669, 664, 663, + 662, 660, 656, 655, 654, 653, 652, 651, 650, 645, + 644, 643, 641, 640, 633, 632, 631, 630, 629, 628, - 0, 245, 246, 245, 244, 245, 246, 245, 0, 0, - 247, 248, 246, 0, 247, 248, 0, 246, 247, 0, - 0, 248, 0, 0, 247, 0, 248, 0, 0, 247, - 249, 249, 249, 249, 250, 251, 250, 251, 250, 251, - 250, 251, 251, 252, 253, 252, 0, 252, 0, 252, - 254, 0, 255, 0, 254, 0, 255, 253, 0, 253, - 254, 253, 255, 253, 255, 254, 256, 255, 257, 259, - 256, 0, 257, 259, 256, 0, 0, 0, 257, 259, - 256, 0, 0, 257, 259, 256, 258, 258, 260, 0, - 258, 261, 260, 0, 0, 261, 258, 0, 260, 261, + 626, 625, 621, 620, 619, 618, 613, 608, 607, 606, + 605, 604, 603, 602, 601, 600, 599, 598, 594, 590, + 589, 588, 587, 586, 577, 575, 574, 572, 571, 570, + 569, 565, 564, 563, 562, 560, 559, 558, 551, 549, + 548, 547, 546, 535, 532, 527, 526, 521, 520, 519, + 517, 515, 514, 513, 508, 502, 501, 500, 499, 498, + 482, 481, 480, 476, 470, 469, 468, 467, 463, 462, + 461, 460, 456, 455, 448, 445, 444, 443, 437, 436, + 433, 429, 428, 422, 417, 414, 412, 411, 406, 405, + 404, 400, 398, 397, 396, 395, 393, 381, 380, 378, - 262, 258, 263, 260, 262, 261, 263, 0, 262, 0, - 261, 264, 263, 0, 262, 264, 0, 263, 265, 262, - 0, 264, 265, 0, 0, 266, 264, 267, 265, 266, - 265, 267, 0, 265, 268, 266, 0, 267, 268, 0, - 266, 267, 267, 270, 268, 269, 0, 270, 268, 268, - 0, 269, 271, 270, 0, 269, 271, 0, 270, 270, - 271, 269, 271, 0, 272, 0, 269, 271, 272, 273, - 0, 273, 0, 273, 272, 273, 274, 0, 275, 272, - 276, 274, 275, 274, 276, 274, 0, 274, 275, 0, - 276, 0, 277, 275, 0, 276, 277, 278, 0, 278, + 377, 373, 372, 371, 354, 339, 338, 334, 333, 332, + 326, 324, 323, 322, 321, 309, 306, 304, 298, 285, + 273, 266, 261, 257, 253, 252, 251, 243, 242, 241, + 238, 236, 226, 224, 223, 218, 212, 156, 141, 139, + 135, 133, 104, 89, 82, 59, 45, 43, 16, 15, + 10, 7, 5, 3, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, - 0, 278, 277, 278, 0, 0, 277, 277, 279, 280, - 279, 0, 279, 0, 279, 279, 0, 281, 280, 281, - 280, 281, 280, 281, 280, 282, 283, 282, 283, 282, - 283, 282, 283, 283, 284, 286, 284, 285, 284, 286, - 284, 0, 285, 0, 285, 286, 285, 287, 285, 287, - 286, 287, 0, 0, 288, 289, 290, 287, 288, 289, - 290, 0, 287, 0, 288, 289, 290, 0, 0, 288, - 289, 290, 291, 291, 291, 291, 292, 292, 292, 292, - 293, 294, 0, 0, 0, 294, 0, 0, 293, 295, - 295, 294, 293, 0, 295, 0, 294, 296, 293, 0, - - 295, 296, 0, 293, 297, 295, 298, 296, 297, 0, - 298, 0, 296, 299, 297, 0, 298, 299, 297, 297, - 0, 298, 300, 299, 0, 301, 300, 0, 299, 301, - 300, 0, 0, 0, 303, 301, 300, 0, 0, 0, - 301, 300, 302, 0, 302, 303, 302, 303, 302, 303, - 303, 303, 304, 305, 0, 305, 304, 305, 0, 305, - 0, 307, 304, 0, 306, 307, 306, 304, 306, 308, - 306, 307, 0, 308, 0, 0, 307, 309, 310, 308, - 0, 309, 310, 0, 308, 311, 315, 309, 310, 311, - 315, 309, 309, 310, 316, 311, 315, 0, 316, 317, - - 311, 315, 315, 317, 316, 0, 318, 317, 318, 316, - 318, 319, 318, 317, 0, 319, 0, 0, 317, 0, - 321, 319, 322, 320, 0, 320, 319, 320, 321, 320, - 321, 0, 321, 0, 321, 322, 0, 322, 0, 322, - 0, 322, 322, 323, 323, 323, 324, 323, 324, 323, - 324, 327, 324, 324, 326, 327, 326, 327, 326, 327, - 326, 327, 328, 0, 328, 0, 328, 0, 328, 328, - 329, 330, 329, 333, 329, 333, 329, 333, 331, 333, - 330, 0, 330, 331, 330, 331, 330, 331, 332, 331, - 332, 334, 332, 334, 332, 334, 0, 334, 335, 336, - - 332, 336, 335, 336, 0, 336, 0, 0, 335, 0, - 337, 338, 337, 335, 337, 338, 337, 337, 340, 339, - 341, 338, 340, 339, 341, 0, 338, 339, 340, 339, - 341, 0, 342, 340, 339, 341, 342, 0, 0, 343, - 344, 345, 342, 343, 344, 345, 0, 342, 346, 343, - 344, 345, 346, 0, 343, 344, 345, 347, 346, 348, - 348, 347, 0, 346, 348, 0, 0, 347, 349, 0, - 348, 0, 347, 0, 349, 348, 351, 350, 349, 350, - 351, 350, 0, 0, 349, 0, 351, 350, 351, 349, - 352, 351, 350, 352, 352, 353, 0, 354, 355, 353, - - 352, 354, 355, 353, 0, 352, 0, 354, 355, 353, - 355, 354, 354, 355, 353, 356, 357, 0, 0, 356, - 357, 0, 0, 0, 358, 356, 357, 0, 358, 0, - 356, 357, 358, 359, 362, 359, 0, 359, 358, 359, - 360, 0, 360, 358, 360, 361, 360, 361, 365, 361, - 0, 361, 362, 363, 362, 363, 362, 363, 362, 363, - 364, 365, 364, 365, 364, 365, 364, 365, 366, 369, - 367, 369, 367, 369, 367, 369, 367, 0, 366, 0, - 366, 367, 366, 368, 366, 368, 370, 368, 0, 368, - 368, 371, 371, 0, 371, 0, 371, 370, 371, 370, - - 372, 370, 372, 370, 372, 373, 372, 372, 374, 373, - 0, 0, 385, 0, 374, 373, 385, 375, 374, 375, - 373, 375, 385, 375, 374, 0, 376, 385, 376, 374, - 376, 377, 376, 377, 0, 377, 0, 377, 377, 381, - 0, 381, 382, 381, 382, 381, 382, 382, 382, 383, - 384, 383, 0, 383, 386, 383, 0, 0, 386, 0, - 387, 384, 0, 384, 386, 384, 0, 384, 387, 386, - 387, 388, 387, 0, 387, 388, 389, 0, 390, 389, - 392, 388, 390, 389, 392, 0, 388, 393, 390, 389, - 392, 393, 0, 390, 389, 392, 395, 393, 0, 394, - - 395, 396, 393, 394, 395, 396, 393, 0, 397, 394, - 395, 396, 397, 0, 394, 395, 396, 398, 397, 0, - 399, 398, 0, 397, 399, 0, 0, 398, 0, 0, - 399, 398, 398, 0, 400, 399, 400, 0, 400, 399, - 400, 401, 402, 401, 402, 401, 402, 401, 402, 403, - 589, 589, 589, 589, 0, 0, 404, 403, 404, 403, - 404, 403, 404, 403, 405, 404, 406, 407, 405, 407, - 406, 407, 0, 407, 405, 0, 406, 0, 408, 405, - 408, 406, 408, 409, 408, 409, 410, 409, 410, 409, - 410, 411, 410, 0, 412, 0, 412, 411, 412, 411, - - 412, 411, 413, 411, 413, 414, 413, 414, 413, 414, - 415, 414, 414, 416, 417, 416, 417, 416, 417, 416, - 417, 0, 0, 415, 418, 415, 418, 415, 418, 415, - 418, 418, 419, 420, 421, 0, 419, 420, 421, 0, - 0, 422, 419, 420, 421, 422, 0, 419, 420, 421, - 424, 422, 0, 422, 424, 423, 422, 423, 425, 423, - 424, 423, 425, 0, 0, 424, 426, 0, 425, 0, - 426, 0, 428, 425, 426, 429, 426, 0, 427, 0, - 427, 426, 427, 0, 427, 428, 0, 428, 429, 428, - 429, 428, 429, 430, 429, 430, 0, 430, 431, 430, - - 430, 432, 431, 0, 0, 432, 0, 0, 431, 0, - 433, 432, 436, 431, 433, 434, 432, 435, 436, 434, - 433, 435, 436, 434, 0, 433, 437, 435, 436, 434, - 437, 435, 435, 436, 434, 441, 437, 0, 442, 441, - 0, 437, 442, 0, 0, 441, 0, 441, 442, 0, - 441, 443, 442, 442, 444, 443, 445, 446, 444, 443, - 445, 446, 0, 0, 444, 443, 445, 446, 0, 444, - 443, 445, 446, 447, 448, 447, 0, 447, 448, 0, - 0, 449, 0, 447, 448, 449, 0, 0, 447, 448, - 453, 449, 0, 449, 0, 451, 449, 451, 452, 451, - - 452, 451, 452, 453, 452, 453, 454, 453, 454, 453, - 454, 455, 454, 455, 456, 455, 456, 455, 456, 457, - 456, 0, 458, 457, 459, 457, 458, 457, 459, 457, - 0, 0, 458, 0, 459, 0, 460, 458, 460, 459, - 460, 461, 460, 461, 462, 461, 462, 461, 462, 463, - 462, 470, 464, 470, 471, 470, 471, 470, 471, 0, - 471, 0, 463, 464, 463, 464, 463, 464, 463, 464, - 465, 0, 0, 466, 465, 0, 0, 466, 0, 467, - 465, 466, 0, 467, 0, 465, 468, 466, 0, 467, - 468, 0, 466, 467, 467, 469, 468, 469, 472, 469, - - 472, 468, 472, 0, 472, 469, 474, 473, 0, 473, - 469, 473, 0, 473, 474, 475, 474, 476, 474, 475, - 474, 476, 477, 0, 477, 475, 0, 476, 477, 478, - 475, 478, 476, 478, 477, 478, 479, 0, 479, 477, - 479, 480, 479, 480, 481, 480, 481, 480, 481, 481, - 481, 482, 483, 482, 483, 482, 483, 482, 483, 487, - 488, 0, 488, 482, 488, 0, 488, 0, 0, 0, - 487, 489, 487, 489, 487, 489, 487, 489, 489, 490, - 491, 492, 491, 493, 491, 492, 491, 493, 490, 0, - 490, 492, 490, 493, 490, 493, 492, 494, 493, 496, - - 497, 494, 0, 496, 497, 0, 0, 494, 0, 496, - 497, 498, 494, 498, 496, 497, 499, 498, 0, 0, - 499, 500, 0, 498, 499, 500, 0, 0, 498, 0, - 499, 500, 0, 0, 0, 499, 500, 501, 502, 501, - 502, 501, 502, 501, 502, 502, 503, 504, 503, 504, - 503, 504, 503, 504, 505, 0, 505, 506, 505, 504, - 505, 506, 0, 508, 509, 507, 508, 506, 509, 507, - 508, 0, 506, 507, 509, 507, 508, 0, 510, 509, - 507, 508, 511, 509, 510, 512, 511, 512, 510, 512, - 0, 0, 511, 0, 510, 512, 0, 511, 513, 510, - - 512, 514, 513, 0, 0, 514, 0, 0, 513, 0, - 0, 514, 513, 513, 0, 515, 514, 515, 516, 515, - 516, 515, 516, 517, 516, 518, 0, 517, 0, 518, - 0, 0, 519, 517, 0, 518, 519, 520, 517, 520, - 518, 0, 519, 520, 0, 0, 519, 519, 0, 520, - 0, 521, 0, 521, 520, 521, 522, 521, 522, 526, - 522, 526, 522, 526, 527, 526, 527, 0, 527, 0, - 527, 526, 528, 0, 528, 0, 528, 0, 528, 528, - 529, 0, 529, 0, 529, 0, 529, 529, 530, 0, - 530, 0, 530, 530, 530, 531, 533, 531, 533, 531, - - 533, 531, 533, 534, 535, 534, 536, 534, 535, 534, - 536, 0, 0, 537, 535, 0, 536, 537, 0, 535, - 538, 536, 539, 537, 538, 0, 539, 0, 537, 540, - 538, 0, 539, 540, 541, 538, 0, 539, 541, 540, - 0, 542, 541, 542, 540, 542, 543, 542, 541, 0, - 544, 0, 544, 541, 544, 0, 544, 543, 545, 543, - 545, 543, 545, 543, 545, 546, 0, 546, 547, 546, - 547, 546, 547, 547, 547, 548, 549, 548, 549, 548, - 549, 548, 549, 550, 551, 550, 0, 550, 0, 550, - 0, 552, 551, 0, 551, 0, 551, 552, 551, 552, - - 553, 552, 553, 552, 553, 554, 553, 0, 555, 554, - 556, 554, 555, 554, 556, 554, 0, 560, 555, 0, - 556, 560, 0, 555, 561, 556, 562, 560, 561, 0, - 562, 0, 560, 563, 561, 0, 562, 563, 565, 561, - 565, 562, 565, 563, 565, 566, 0, 566, 563, 566, - 567, 566, 567, 568, 567, 0, 567, 0, 569, 0, - 569, 568, 569, 568, 569, 568, 570, 568, 570, 571, - 570, 572, 570, 571, 0, 572, 0, 0, 573, 571, - 0, 572, 573, 0, 571, 574, 572, 575, 573, 574, - 0, 575, 0, 573, 576, 574, 0, 575, 576, 577, - - 574, 578, 575, 577, 576, 578, 0, 577, 0, 576, - 579, 578, 0, 577, 579, 580, 578, 580, 577, 585, - 579, 580, 586, 585, 586, 579, 586, 580, 586, 585, - 587, 0, 580, 0, 585, 587, 588, 587, 585, 587, - 0, 587, 0, 593, 588, 593, 588, 593, 588, 593, - 588, 590, 590, 590, 590, 591, 591, 591, 591, 592, - 592, 592, 592, 594, 595, 594, 0, 594, 595, 594, - 594, 596, 600, 601, 595, 596, 600, 601, 0, 595, - 592, 596, 600, 601, 0, 602, 596, 600, 601, 602, - 605, 0, 603, 0, 605, 602, 603, 0, 605, 602, - - 602, 606, 603, 606, 605, 606, 607, 603, 0, 605, - 607, 606, 0, 608, 607, 608, 606, 608, 609, 608, - 607, 0, 0, 0, 609, 607, 609, 613, 609, 613, - 609, 613, 614, 613, 0, 615, 614, 615, 614, 615, - 614, 615, 614, 617, 618, 0, 0, 617, 618, 619, - 0, 620, 619, 617, 618, 620, 619, 0, 617, 618, - 621, 620, 619, 0, 621, 0, 620, 619, 625, 626, - 621, 626, 625, 626, 0, 621, 0, 0, 625, 626, - 0, 0, 0, 625, 626, 628, 629, 628, 629, 628, - 629, 628, 629, 630, 634, 636, 634, 636, 634, 636, - - 634, 636, 630, 637, 630, 638, 630, 637, 630, 638, - 0, 0, 643, 637, 0, 638, 643, 0, 637, 0, - 638, 0, 643, 0, 0, 0, 0, 643, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655 + 759, 759, 759, 759, 759, 759, 759, 759, 759, 759 } ; static grib_yy_state_type grib_yy_last_accepting_state; @@ -1431,7 +1076,7 @@ void _grib_ignore_grib_yyunput_unused_error() { grib_yyunput(0,0); } #define GET_INPUT input #endif -#line 1435 "lex.grib_yy.c" +#line 1080 "lex.grib_yy.c" #define INITIAL 0 @@ -1617,7 +1262,7 @@ YY_DECL -#line 1621 "lex.grib_yy.c" +#line 1266 "lex.grib_yy.c" if ( !(grib_yy_init) ) { @@ -1670,13 +1315,13 @@ grib_yy_match: while ( grib_yy_chk[grib_yy_base[grib_yy_current_state] + grib_yy_c] != grib_yy_current_state ) { grib_yy_current_state = (int) grib_yy_def[grib_yy_current_state]; - if ( grib_yy_current_state >= 656 ) + if ( grib_yy_current_state >= 760 ) grib_yy_c = grib_yy_meta[(unsigned int) grib_yy_c]; } grib_yy_current_state = grib_yy_nxt[grib_yy_base[grib_yy_current_state] + (unsigned int) grib_yy_c]; ++grib_yy_cp; } - while ( grib_yy_base[grib_yy_current_state] != 3229 ); + while ( grib_yy_base[grib_yy_current_state] != 1455 ); grib_yy_find_action: grib_yy_act = grib_yy_accept[grib_yy_current_state]; @@ -2193,71 +1838,146 @@ return COPY_OK; case 99: YY_RULE_SETUP #line 175 "gribl.l" -return SET; +return UINT8; YY_BREAK case 100: YY_RULE_SETUP #line 176 "gribl.l" -return SET_NOFAIL; +return INT8; YY_BREAK case 101: YY_RULE_SETUP -#line 177 "gribl.l" -return WHEN; +#line 178 "gribl.l" +return UINT16; YY_BREAK case 102: YY_RULE_SETUP -#line 178 "gribl.l" -return CASE; +#line 179 "gribl.l" +return INT16; YY_BREAK case 103: YY_RULE_SETUP -#line 179 "gribl.l" -return SWITCH; +#line 180 "gribl.l" +return UINT16_LITTLE_ENDIAN; YY_BREAK case 104: YY_RULE_SETUP -#line 180 "gribl.l" -return DEFAULT; +#line 181 "gribl.l" +return INT16_LITTLE_ENDIAN; YY_BREAK case 105: YY_RULE_SETUP -#line 181 "gribl.l" -return CONCEPT; +#line 183 "gribl.l" +return UINT32; YY_BREAK case 106: YY_RULE_SETUP -#line 182 "gribl.l" -return CONCEPT_NOFAIL; +#line 184 "gribl.l" +return INT32; YY_BREAK case 107: YY_RULE_SETUP -#line 183 "gribl.l" -return HASH_ARRAY; +#line 185 "gribl.l" +return UINT32_LITTLE_ENDIAN; YY_BREAK case 108: YY_RULE_SETUP -#line 184 "gribl.l" -return WRITE; +#line 186 "gribl.l" +return INT32_LITTLE_ENDIAN; YY_BREAK case 109: YY_RULE_SETUP -#line 185 "gribl.l" -return APPEND; +#line 188 "gribl.l" +return UINT64; YY_BREAK case 110: YY_RULE_SETUP -#line 186 "gribl.l" -return PRINT; +#line 189 "gribl.l" +return INT64; YY_BREAK case 111: YY_RULE_SETUP -#line 187 "gribl.l" -return SKIP; +#line 190 "gribl.l" +return UINT64_LITTLE_ENDIAN; YY_BREAK case 112: YY_RULE_SETUP -#line 189 "gribl.l" +#line 191 "gribl.l" +return INT64_LITTLE_ENDIAN; + YY_BREAK +case 113: +YY_RULE_SETUP +#line 193 "gribl.l" +return BLOB; + YY_BREAK +case 114: +YY_RULE_SETUP +#line 195 "gribl.l" +return SET; + YY_BREAK +case 115: +YY_RULE_SETUP +#line 196 "gribl.l" +return SET_NOFAIL; + YY_BREAK +case 116: +YY_RULE_SETUP +#line 197 "gribl.l" +return WHEN; + YY_BREAK +case 117: +YY_RULE_SETUP +#line 198 "gribl.l" +return CASE; + YY_BREAK +case 118: +YY_RULE_SETUP +#line 199 "gribl.l" +return SWITCH; + YY_BREAK +case 119: +YY_RULE_SETUP +#line 200 "gribl.l" +return DEFAULT; + YY_BREAK +case 120: +YY_RULE_SETUP +#line 201 "gribl.l" +return CONCEPT; + YY_BREAK +case 121: +YY_RULE_SETUP +#line 202 "gribl.l" +return CONCEPT_NOFAIL; + YY_BREAK +case 122: +YY_RULE_SETUP +#line 203 "gribl.l" +return HASH_ARRAY; + YY_BREAK +case 123: +YY_RULE_SETUP +#line 204 "gribl.l" +return WRITE; + YY_BREAK +case 124: +YY_RULE_SETUP +#line 205 "gribl.l" +return APPEND; + YY_BREAK +case 125: +YY_RULE_SETUP +#line 206 "gribl.l" +return PRINT; + YY_BREAK +case 126: +YY_RULE_SETUP +#line 207 "gribl.l" +return SKIP; + YY_BREAK +case 127: +YY_RULE_SETUP +#line 209 "gribl.l" { int c,q; while((c = GET_INPUT()) && isspace(c) && c != '\n') ; @@ -2275,9 +1995,9 @@ YY_RULE_SETUP grib_parser_include(grib_yytext); } YY_BREAK -case 113: +case 128: YY_RULE_SETUP -#line 206 "gribl.l" +#line 226 "gribl.l" { int c,q = grib_yytext[0]; @@ -2297,9 +2017,9 @@ YY_RULE_SETUP return STRING; } YY_BREAK -case 114: +case 129: YY_RULE_SETUP -#line 225 "gribl.l" +#line 245 "gribl.l" { int c; unsigned long val = 0; @@ -2313,39 +2033,39 @@ YY_RULE_SETUP return INTEGER; } YY_BREAK -case 115: +case 130: YY_RULE_SETUP -#line 239 "gribl.l" +#line 259 "gribl.l" { grib_yylval.str = strdup(grib_yytext); return IDENT; } YY_BREAK -case 116: +case 131: YY_RULE_SETUP -#line 240 "gribl.l" +#line 260 "gribl.l" { grib_yylval.lval = atol((const char *)grib_yytext); return INTEGER; } YY_BREAK -case 117: +case 132: YY_RULE_SETUP -#line 241 "gribl.l" +#line 261 "gribl.l" { grib_yylval.lval = atol((const char *)grib_yytext); return INTEGER; } YY_BREAK -case 118: +case 133: YY_RULE_SETUP -#line 242 "gribl.l" +#line 262 "gribl.l" { grib_yylval.dval = atof((const char *)grib_yytext); return FLOAT; } YY_BREAK -case 119: +case 134: YY_RULE_SETUP -#line 243 "gribl.l" +#line 263 "gribl.l" { grib_yylval.dval = atof((const char *)grib_yytext); return FLOAT; } YY_BREAK -case 120: +case 135: YY_RULE_SETUP -#line 244 "gribl.l" +#line 264 "gribl.l" { grib_yylval.dval = atof((const char *)grib_yytext); return FLOAT; } YY_BREAK -case 121: +case 136: YY_RULE_SETUP -#line 247 "gribl.l" +#line 267 "gribl.l" { int c; while((c = GET_INPUT()) && (c != '\n')){} @@ -2353,28 +2073,28 @@ YY_RULE_SETUP grib_yylineno++; } YY_BREAK -case 122: +case 137: YY_RULE_SETUP -#line 253 "gribl.l" +#line 273 "gribl.l" ; YY_BREAK -case 123: -/* rule 123 can match eol */ +case 138: +/* rule 138 can match eol */ YY_RULE_SETUP -#line 254 "gribl.l" +#line 274 "gribl.l" grib_yylineno++; YY_BREAK -case 124: +case 139: YY_RULE_SETUP -#line 258 "gribl.l" +#line 278 "gribl.l" return *grib_yytext; YY_BREAK -case 125: +case 140: YY_RULE_SETUP -#line 260 "gribl.l" +#line 280 "gribl.l" ECHO; YY_BREAK -#line 2378 "lex.grib_yy.c" +#line 2098 "lex.grib_yy.c" case YY_STATE_EOF(INITIAL): grib_yyterminate(); @@ -2666,7 +2386,7 @@ static int grib_yy_get_next_buffer (void) while ( grib_yy_chk[grib_yy_base[grib_yy_current_state] + grib_yy_c] != grib_yy_current_state ) { grib_yy_current_state = (int) grib_yy_def[grib_yy_current_state]; - if ( grib_yy_current_state >= 656 ) + if ( grib_yy_current_state >= 760 ) grib_yy_c = grib_yy_meta[(unsigned int) grib_yy_c]; } grib_yy_current_state = grib_yy_nxt[grib_yy_base[grib_yy_current_state] + (unsigned int) grib_yy_c]; @@ -2694,11 +2414,11 @@ static int grib_yy_get_next_buffer (void) while ( grib_yy_chk[grib_yy_base[grib_yy_current_state] + grib_yy_c] != grib_yy_current_state ) { grib_yy_current_state = (int) grib_yy_def[grib_yy_current_state]; - if ( grib_yy_current_state >= 656 ) + if ( grib_yy_current_state >= 760 ) grib_yy_c = grib_yy_meta[(unsigned int) grib_yy_c]; } grib_yy_current_state = grib_yy_nxt[grib_yy_base[grib_yy_current_state] + (unsigned int) grib_yy_c]; - grib_yy_is_jam = (grib_yy_current_state == 655); + grib_yy_is_jam = (grib_yy_current_state == 759); return grib_yy_is_jam ? 0 : grib_yy_current_state; } @@ -3372,7 +3092,7 @@ void grib_yyfree (void * ptr ) #define YYTABLES_NAME "grib_yytables" -#line 260 "gribl.l" +#line 280 "gribl.l" diff --git a/src/grib_yacc.c b/src/grib_yacc.c index 1865a3095..12290de86 100644 --- a/src/grib_yacc.c +++ b/src/grib_yacc.c @@ -147,90 +147,105 @@ static grib_hash_array_value *_reverse_hash_array(grib_hash_array_value *r,grib_ WHILE = 280, IBMFLOAT = 281, SIGNED = 282, - BYTE = 283, - CODETABLE = 284, - SMART_TABLE = 285, - DICTIONARY = 286, - COMPLEX_CODETABLE = 287, - LOOKUP = 288, - ALIAS = 289, - UNALIAS = 290, - META = 291, - POS = 292, - INTCONST = 293, - TRANS = 294, - FLAGBIT = 295, - CONCEPT = 296, - GETENV = 297, - HASH_ARRAY = 298, - CONCEPT_NOFAIL = 299, - NIL = 300, - DUMMY = 301, - MODIFY = 302, - READ_ONLY = 303, - STRING_TYPE = 304, - LONG_TYPE = 305, - DOUBLE_TYPE = 306, - NO_COPY = 307, - DUMP = 308, - JSON = 309, - XML = 310, - NO_FAIL = 311, - EDITION_SPECIFIC = 312, - OVERRIDE = 313, - HIDDEN = 314, - CAN_BE_MISSING = 315, - MISSING = 316, - CONSTRAINT = 317, - COPY_OK = 318, - WHEN = 319, - SET = 320, - SET_NOFAIL = 321, - WRITE = 322, - APPEND = 323, - PRINT = 324, - EXPORT = 325, - REMOVE = 326, - RENAME = 327, - SKIP = 328, - PAD = 329, - SECTION_PADDING = 330, - MESSAGE = 331, - MESSAGE_COPY = 332, - PADTO = 333, - PADTOEVEN = 334, - PADTOMULTIPLE = 335, - G1_HALF_BYTE = 336, - G1_MESSAGE_LENGTH = 337, - G1_SECTION4_LENGTH = 338, - SECTION_LENGTH = 339, - LENGTH = 340, - FLAG = 341, - ITERATOR = 342, - NEAREST = 343, - BOX = 344, - KSEC = 345, - ASSERT = 346, - SUBSTR = 347, - CASE = 348, - SWITCH = 349, - DEFAULT = 350, - EQ = 351, - NE = 352, - GE = 353, - LE = 354, - LT = 355, - GT = 356, - BIT = 357, - BITOFF = 358, - AND = 359, - OR = 360, - NOT = 361, - IS = 362, - IDENT = 363, - STRING = 364, - INTEGER = 365, - FLOAT = 366 + UINT8 = 283, + INT8 = 284, + UINT16 = 285, + INT16 = 286, + UINT16_LITTLE_ENDIAN = 287, + INT16_LITTLE_ENDIAN = 288, + UINT32 = 289, + INT32 = 290, + UINT32_LITTLE_ENDIAN = 291, + INT32_LITTLE_ENDIAN = 292, + UINT64 = 293, + INT64 = 294, + UINT64_LITTLE_ENDIAN = 295, + INT64_LITTLE_ENDIAN = 296, + BLOB = 297, + BYTE = 298, + CODETABLE = 299, + SMART_TABLE = 300, + DICTIONARY = 301, + COMPLEX_CODETABLE = 302, + LOOKUP = 303, + ALIAS = 304, + UNALIAS = 305, + META = 306, + POS = 307, + INTCONST = 308, + TRANS = 309, + FLAGBIT = 310, + CONCEPT = 311, + GETENV = 312, + HASH_ARRAY = 313, + CONCEPT_NOFAIL = 314, + NIL = 315, + DUMMY = 316, + MODIFY = 317, + READ_ONLY = 318, + STRING_TYPE = 319, + LONG_TYPE = 320, + DOUBLE_TYPE = 321, + NO_COPY = 322, + DUMP = 323, + JSON = 324, + XML = 325, + NO_FAIL = 326, + EDITION_SPECIFIC = 327, + OVERRIDE = 328, + HIDDEN = 329, + CAN_BE_MISSING = 330, + MISSING = 331, + CONSTRAINT = 332, + COPY_OK = 333, + WHEN = 334, + SET = 335, + SET_NOFAIL = 336, + WRITE = 337, + APPEND = 338, + PRINT = 339, + EXPORT = 340, + REMOVE = 341, + RENAME = 342, + SKIP = 343, + PAD = 344, + SECTION_PADDING = 345, + MESSAGE = 346, + MESSAGE_COPY = 347, + PADTO = 348, + PADTOEVEN = 349, + PADTOMULTIPLE = 350, + G1_HALF_BYTE = 351, + G1_MESSAGE_LENGTH = 352, + G1_SECTION4_LENGTH = 353, + SECTION_LENGTH = 354, + LENGTH = 355, + FLAG = 356, + ITERATOR = 357, + NEAREST = 358, + BOX = 359, + KSEC = 360, + ASSERT = 361, + SUBSTR = 362, + CASE = 363, + SWITCH = 364, + DEFAULT = 365, + EQ = 366, + NE = 367, + GE = 368, + LE = 369, + LT = 370, + GT = 371, + BIT = 372, + BITOFF = 373, + AND = 374, + OR = 375, + NOT = 376, + IS = 377, + IDENT = 378, + STRING = 379, + INTEGER = 380, + FLOAT = 381 }; #endif /* Tokens. */ @@ -259,90 +274,105 @@ static grib_hash_array_value *_reverse_hash_array(grib_hash_array_value *r,grib_ #define WHILE 280 #define IBMFLOAT 281 #define SIGNED 282 -#define BYTE 283 -#define CODETABLE 284 -#define SMART_TABLE 285 -#define DICTIONARY 286 -#define COMPLEX_CODETABLE 287 -#define LOOKUP 288 -#define ALIAS 289 -#define UNALIAS 290 -#define META 291 -#define POS 292 -#define INTCONST 293 -#define TRANS 294 -#define FLAGBIT 295 -#define CONCEPT 296 -#define GETENV 297 -#define HASH_ARRAY 298 -#define CONCEPT_NOFAIL 299 -#define NIL 300 -#define DUMMY 301 -#define MODIFY 302 -#define READ_ONLY 303 -#define STRING_TYPE 304 -#define LONG_TYPE 305 -#define DOUBLE_TYPE 306 -#define NO_COPY 307 -#define DUMP 308 -#define JSON 309 -#define XML 310 -#define NO_FAIL 311 -#define EDITION_SPECIFIC 312 -#define OVERRIDE 313 -#define HIDDEN 314 -#define CAN_BE_MISSING 315 -#define MISSING 316 -#define CONSTRAINT 317 -#define COPY_OK 318 -#define WHEN 319 -#define SET 320 -#define SET_NOFAIL 321 -#define WRITE 322 -#define APPEND 323 -#define PRINT 324 -#define EXPORT 325 -#define REMOVE 326 -#define RENAME 327 -#define SKIP 328 -#define PAD 329 -#define SECTION_PADDING 330 -#define MESSAGE 331 -#define MESSAGE_COPY 332 -#define PADTO 333 -#define PADTOEVEN 334 -#define PADTOMULTIPLE 335 -#define G1_HALF_BYTE 336 -#define G1_MESSAGE_LENGTH 337 -#define G1_SECTION4_LENGTH 338 -#define SECTION_LENGTH 339 -#define LENGTH 340 -#define FLAG 341 -#define ITERATOR 342 -#define NEAREST 343 -#define BOX 344 -#define KSEC 345 -#define ASSERT 346 -#define SUBSTR 347 -#define CASE 348 -#define SWITCH 349 -#define DEFAULT 350 -#define EQ 351 -#define NE 352 -#define GE 353 -#define LE 354 -#define LT 355 -#define GT 356 -#define BIT 357 -#define BITOFF 358 -#define AND 359 -#define OR 360 -#define NOT 361 -#define IS 362 -#define IDENT 363 -#define STRING 364 -#define INTEGER 365 -#define FLOAT 366 +#define UINT8 283 +#define INT8 284 +#define UINT16 285 +#define INT16 286 +#define UINT16_LITTLE_ENDIAN 287 +#define INT16_LITTLE_ENDIAN 288 +#define UINT32 289 +#define INT32 290 +#define UINT32_LITTLE_ENDIAN 291 +#define INT32_LITTLE_ENDIAN 292 +#define UINT64 293 +#define INT64 294 +#define UINT64_LITTLE_ENDIAN 295 +#define INT64_LITTLE_ENDIAN 296 +#define BLOB 297 +#define BYTE 298 +#define CODETABLE 299 +#define SMART_TABLE 300 +#define DICTIONARY 301 +#define COMPLEX_CODETABLE 302 +#define LOOKUP 303 +#define ALIAS 304 +#define UNALIAS 305 +#define META 306 +#define POS 307 +#define INTCONST 308 +#define TRANS 309 +#define FLAGBIT 310 +#define CONCEPT 311 +#define GETENV 312 +#define HASH_ARRAY 313 +#define CONCEPT_NOFAIL 314 +#define NIL 315 +#define DUMMY 316 +#define MODIFY 317 +#define READ_ONLY 318 +#define STRING_TYPE 319 +#define LONG_TYPE 320 +#define DOUBLE_TYPE 321 +#define NO_COPY 322 +#define DUMP 323 +#define JSON 324 +#define XML 325 +#define NO_FAIL 326 +#define EDITION_SPECIFIC 327 +#define OVERRIDE 328 +#define HIDDEN 329 +#define CAN_BE_MISSING 330 +#define MISSING 331 +#define CONSTRAINT 332 +#define COPY_OK 333 +#define WHEN 334 +#define SET 335 +#define SET_NOFAIL 336 +#define WRITE 337 +#define APPEND 338 +#define PRINT 339 +#define EXPORT 340 +#define REMOVE 341 +#define RENAME 342 +#define SKIP 343 +#define PAD 344 +#define SECTION_PADDING 345 +#define MESSAGE 346 +#define MESSAGE_COPY 347 +#define PADTO 348 +#define PADTOEVEN 349 +#define PADTOMULTIPLE 350 +#define G1_HALF_BYTE 351 +#define G1_MESSAGE_LENGTH 352 +#define G1_SECTION4_LENGTH 353 +#define SECTION_LENGTH 354 +#define LENGTH 355 +#define FLAG 356 +#define ITERATOR 357 +#define NEAREST 358 +#define BOX 359 +#define KSEC 360 +#define ASSERT 361 +#define SUBSTR 362 +#define CASE 363 +#define SWITCH 364 +#define DEFAULT 365 +#define EQ 366 +#define NE 367 +#define GE 368 +#define LE 369 +#define LT 370 +#define GT 371 +#define BIT 372 +#define BITOFF 373 +#define AND 374 +#define OR 375 +#define NOT 376 +#define IS 377 +#define IDENT 378 +#define STRING 379 +#define INTEGER 380 +#define FLOAT 381 @@ -372,7 +402,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 376 "y.tab.c" +#line 406 "y.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define grib_yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -384,7 +414,7 @@ typedef union YYSTYPE /* Line 264 of yacc.c */ -#line 388 "y.tab.c" +#line 418 "y.tab.c" #ifdef short # undef short @@ -597,22 +627,22 @@ union grib_yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 184 +#define YYFINAL 214 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1538 +#define YYLAST 1760 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 129 +#define YYNTOKENS 144 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 49 /* YYNRULES -- Number of rules. */ -#define YYNRULES 249 +#define YYNRULES 264 /* YYNRULES -- Number of states. */ -#define YYNSTATES 823 +#define YYNSTATES 886 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 366 +#define YYMAXUTOK 381 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? grib_yytranslate[YYX] : YYUNDEFTOK) @@ -623,16 +653,16 @@ static const grib_yytype_uint8 grib_yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 127, 2, 2, - 116, 117, 125, 128, 112, 123, 119, 126, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 122, 113, - 2, 118, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 142, 2, 2, + 131, 132, 140, 143, 127, 138, 134, 141, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 137, 128, + 2, 133, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 114, 2, 115, 124, 2, 2, 2, 2, 2, + 2, 129, 2, 130, 139, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 120, 2, 121, 2, 2, 2, 2, + 2, 2, 2, 135, 2, 136, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -656,7 +686,9 @@ static const grib_yytype_uint8 grib_yytranslate[] = 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111 + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126 }; #if YYDEBUG @@ -670,193 +702,205 @@ static const grib_yytype_uint16 grib_yyprhs[] = 70, 72, 74, 76, 80, 82, 90, 101, 109, 120, 128, 133, 141, 149, 157, 165, 170, 178, 186, 197, 205, 213, 224, 232, 243, 252, 265, 276, 284, 293, - 302, 311, 322, 331, 341, 349, 352, 355, 360, 367, - 375, 378, 384, 390, 395, 402, 410, 413, 419, 428, - 437, 441, 447, 453, 459, 465, 472, 476, 480, 484, - 488, 494, 497, 505, 510, 519, 530, 536, 542, 548, - 554, 557, 564, 569, 573, 578, 583, 590, 595, 598, - 600, 606, 611, 614, 616, 622, 627, 632, 635, 641, - 647, 649, 657, 669, 677, 689, 696, 704, 716, 721, - 726, 729, 733, 735, 738, 740, 743, 745, 749, 751, - 753, 755, 757, 759, 761, 763, 765, 767, 769, 771, - 773, 775, 777, 779, 781, 783, 792, 800, 808, 815, - 825, 838, 853, 864, 879, 892, 901, 913, 920, 930, - 943, 954, 969, 982, 991, 1003, 1005, 1008, 1010, 1013, - 1020, 1033, 1035, 1038, 1043, 1054, 1064, 1072, 1078, 1084, - 1090, 1096, 1098, 1101, 1106, 1112, 1118, 1127, 1129, 1138, - 1140, 1142, 1144, 1146, 1148, 1150, 1154, 1157, 1161, 1166, - 1170, 1172, 1176, 1180, 1184, 1188, 1192, 1194, 1199, 1206, - 1213, 1220, 1229, 1234, 1238, 1242, 1244, 1248, 1252, 1256, - 1260, 1264, 1268, 1272, 1275, 1277, 1281, 1283, 1287, 1289, - 1291, 1293, 1295, 1300, 1303, 1305, 1308, 1310, 1318, 1320 + 302, 311, 322, 331, 341, 349, 352, 355, 360, 365, + 370, 375, 380, 385, 390, 395, 400, 405, 410, 415, + 420, 425, 430, 438, 445, 453, 456, 462, 468, 473, + 480, 488, 491, 497, 506, 515, 519, 525, 531, 537, + 543, 550, 554, 558, 562, 566, 572, 575, 583, 588, + 597, 608, 614, 620, 626, 632, 635, 642, 647, 651, + 656, 661, 668, 673, 676, 678, 684, 689, 692, 694, + 700, 705, 710, 713, 719, 725, 727, 735, 747, 755, + 767, 774, 782, 794, 799, 804, 807, 811, 813, 816, + 818, 821, 823, 827, 829, 831, 833, 835, 837, 839, + 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, + 861, 870, 878, 886, 893, 903, 916, 931, 942, 957, + 970, 979, 991, 998, 1008, 1021, 1032, 1047, 1060, 1069, + 1081, 1083, 1086, 1088, 1091, 1098, 1111, 1113, 1116, 1121, + 1132, 1142, 1150, 1156, 1162, 1168, 1174, 1176, 1179, 1184, + 1190, 1196, 1205, 1207, 1216, 1218, 1220, 1222, 1224, 1226, + 1228, 1232, 1235, 1239, 1244, 1248, 1250, 1254, 1258, 1262, + 1266, 1270, 1272, 1277, 1284, 1291, 1298, 1307, 1312, 1316, + 1320, 1322, 1326, 1330, 1334, 1338, 1342, 1346, 1350, 1353, + 1355, 1359, 1361, 1365, 1367, 1369, 1371, 1373, 1378, 1381, + 1383, 1386, 1388, 1396, 1398 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const grib_yytype_int16 grib_yyrhs[] = { - 130, 0, -1, 131, -1, 153, -1, 154, -1, 134, - -1, 177, -1, 1, -1, -1, 111, -1, 132, 112, - 111, -1, 110, -1, 132, 112, 110, -1, 110, -1, - 133, 112, 110, -1, 135, -1, 135, 134, -1, 135, - 113, 134, -1, 135, 113, -1, 140, 113, -1, 141, - -1, 149, -1, 150, -1, 151, -1, 152, -1, 155, - -1, 142, -1, 158, -1, 113, -1, 136, 113, -1, - 131, -1, 138, -1, 139, -1, 139, 112, 138, -1, - 171, -1, 9, 114, 110, 115, 108, 145, 146, -1, - 9, 114, 110, 115, 108, 114, 137, 115, 145, 146, - -1, 9, 116, 110, 117, 108, 145, 146, -1, 9, - 116, 110, 117, 108, 114, 137, 115, 145, 146, -1, - 13, 114, 110, 115, 108, 145, 146, -1, 14, 108, - 145, 146, -1, 14, 108, 116, 137, 117, 145, 146, - -1, 108, 118, 22, 116, 137, 117, 146, -1, 108, - 118, 24, 116, 137, 117, 146, -1, 108, 118, 23, - 116, 137, 117, 146, -1, 15, 108, 145, 146, -1, - 13, 114, 110, 115, 109, 145, 146, -1, 28, 114, - 110, 115, 108, 145, 146, -1, 28, 114, 110, 115, - 108, 114, 137, 115, 145, 146, -1, 16, 114, 110, - 115, 108, 145, 146, -1, 27, 114, 110, 115, 108, - 145, 146, -1, 27, 114, 110, 115, 108, 114, 137, - 115, 145, 146, -1, 27, 116, 110, 117, 108, 145, - 146, -1, 27, 116, 110, 117, 108, 114, 137, 115, - 145, 146, -1, 29, 114, 110, 115, 108, 139, 145, - 146, -1, 29, 114, 110, 115, 108, 139, 145, 65, - 116, 108, 117, 146, -1, 29, 114, 110, 115, 108, - 116, 137, 117, 145, 146, -1, 30, 108, 116, 137, - 117, 145, 146, -1, 108, 118, 31, 116, 137, 117, - 145, 146, -1, 108, 118, 42, 116, 137, 117, 145, - 146, -1, 32, 114, 110, 115, 108, 139, 145, 146, - -1, 32, 114, 110, 115, 108, 116, 137, 117, 145, - 146, -1, 86, 114, 110, 115, 108, 139, 145, 146, - -1, 33, 114, 110, 115, 108, 116, 137, 117, 146, - -1, 40, 108, 116, 137, 117, 145, 146, -1, 17, - 108, -1, 17, 109, -1, 26, 108, 145, 146, -1, - 26, 108, 119, 108, 145, 146, -1, 26, 108, 114, - 139, 115, 145, 146, -1, 37, 108, -1, 38, 108, - 118, 139, 146, -1, 39, 108, 118, 139, 146, -1, - 111, 108, 145, 146, -1, 111, 108, 119, 108, 145, - 146, -1, 111, 108, 114, 139, 115, 145, 146, -1, - 81, 108, -1, 84, 114, 110, 115, 108, -1, 82, - 114, 110, 115, 108, 116, 137, 117, -1, 83, 114, - 110, 115, 108, 116, 137, 117, -1, 90, 108, 139, - -1, 74, 108, 116, 137, 117, -1, 78, 108, 116, - 137, 117, -1, 79, 108, 116, 137, 117, -1, 80, - 108, 116, 137, 117, -1, 76, 114, 110, 115, 108, - 146, -1, 77, 108, 146, -1, 75, 108, 146, -1, - 10, 108, 109, -1, 11, 108, 109, -1, 34, 108, - 118, 108, 146, -1, 35, 108, -1, 34, 108, 119, - 108, 118, 108, 146, -1, 35, 108, 119, 108, -1, - 36, 108, 108, 116, 137, 117, 145, 146, -1, 36, - 108, 119, 108, 108, 116, 137, 117, 145, 146, -1, - 87, 108, 116, 137, 117, -1, 88, 108, 116, 137, - 117, -1, 89, 108, 116, 137, 117, -1, 70, 108, - 116, 137, 117, -1, 71, 137, -1, 72, 116, 108, - 112, 108, 117, -1, 91, 116, 171, 117, -1, 47, - 108, 146, -1, 65, 108, 118, 61, -1, 65, 108, - 118, 171, -1, 65, 108, 118, 120, 132, 121, -1, - 66, 108, 118, 171, -1, 67, 109, -1, 67, -1, - 67, 116, 110, 117, 109, -1, 67, 116, 110, 117, - -1, 68, 109, -1, 68, -1, 68, 116, 110, 117, - 109, -1, 68, 116, 110, 117, -1, 8, 116, 108, - 117, -1, 69, 109, -1, 69, 116, 109, 117, 109, - -1, 69, 116, 108, 117, 109, -1, 69, -1, 4, - 116, 171, 117, 120, 134, 121, -1, 4, 116, 171, - 117, 120, 134, 121, 6, 120, 134, 121, -1, 5, - 116, 171, 117, 120, 134, 121, -1, 5, 116, 171, - 117, 120, 134, 121, 6, 120, 134, 121, -1, 64, - 116, 171, 117, 143, 136, -1, 64, 116, 171, 117, - 120, 144, 121, -1, 64, 116, 171, 117, 120, 144, - 121, 6, 120, 144, 121, -1, 65, 108, 118, 171, - -1, 66, 108, 118, 171, -1, 143, 136, -1, 144, - 143, 136, -1, 131, -1, 118, 137, -1, 131, -1, - 122, 147, -1, 148, -1, 147, 112, 148, -1, 48, - -1, 3, -1, 53, -1, 54, -1, 55, -1, 52, - -1, 56, -1, 59, -1, 57, -1, 60, -1, 62, - -1, 58, -1, 63, -1, 39, -1, 49, -1, 50, - -1, 51, -1, 108, 18, 116, 171, 117, 120, 134, - 121, -1, 25, 116, 171, 117, 120, 134, 121, -1, - 12, 116, 137, 117, 120, 134, 121, -1, 41, 108, - 120, 153, 121, 146, -1, 41, 108, 116, 108, 117, - 120, 153, 121, 146, -1, 41, 108, 116, 108, 112, - 109, 112, 108, 112, 108, 117, 146, -1, 41, 108, - 116, 108, 112, 109, 112, 108, 112, 108, 112, 108, - 117, 146, -1, 41, 108, 116, 108, 112, 109, 112, - 108, 117, 146, -1, 41, 108, 119, 108, 116, 108, - 112, 109, 112, 108, 112, 108, 117, 146, -1, 41, - 108, 119, 108, 116, 108, 112, 109, 112, 108, 117, - 146, -1, 41, 108, 119, 108, 120, 153, 121, 146, - -1, 41, 108, 119, 108, 116, 108, 117, 120, 153, - 121, 146, -1, 44, 108, 120, 153, 121, 146, -1, - 44, 108, 116, 108, 117, 120, 153, 121, 146, -1, - 44, 108, 116, 108, 112, 109, 112, 108, 112, 108, - 117, 146, -1, 44, 108, 116, 108, 112, 109, 112, - 108, 117, 146, -1, 44, 108, 119, 108, 116, 108, - 112, 109, 112, 108, 112, 108, 117, 146, -1, 44, - 108, 119, 108, 116, 108, 112, 109, 112, 108, 117, - 146, -1, 44, 108, 119, 108, 120, 153, 121, 146, - -1, 44, 108, 119, 108, 116, 108, 117, 120, 153, - 121, 146, -1, 159, -1, 153, 159, -1, 162, -1, - 154, 162, -1, 43, 108, 120, 154, 121, 146, -1, - 43, 108, 116, 108, 112, 109, 112, 108, 112, 108, - 117, 146, -1, 157, -1, 156, 157, -1, 93, 138, - 122, 134, -1, 94, 116, 137, 117, 120, 156, 95, - 122, 134, 121, -1, 94, 116, 137, 117, 120, 156, - 95, 122, 121, -1, 94, 116, 137, 117, 120, 156, - 121, -1, 109, 118, 120, 160, 121, -1, 108, 118, - 120, 160, 121, -1, 110, 118, 120, 160, 121, -1, - 111, 118, 120, 160, 121, -1, 161, -1, 161, 160, - -1, 108, 118, 171, 113, -1, 109, 118, 114, 133, - 115, -1, 108, 118, 114, 133, 115, -1, 92, 116, - 108, 112, 110, 112, 110, 117, -1, 108, -1, 92, - 116, 109, 112, 110, 112, 110, 117, -1, 109, -1, - 163, -1, 110, -1, 111, -1, 45, -1, 46, -1, - 116, 171, 117, -1, 123, 164, -1, 108, 116, 117, - -1, 108, 116, 137, 117, -1, 164, 124, 165, -1, - 164, -1, 166, 125, 165, -1, 166, 126, 165, -1, - 166, 127, 165, -1, 166, 102, 165, -1, 166, 103, - 165, -1, 165, -1, 85, 116, 108, 117, -1, 19, - 116, 108, 112, 109, 117, -1, 20, 116, 108, 112, - 109, 117, -1, 21, 116, 108, 112, 110, 117, -1, - 21, 116, 108, 112, 110, 112, 110, 117, -1, 21, - 116, 108, 117, -1, 167, 128, 166, -1, 167, 123, - 166, -1, 166, -1, 168, 101, 167, -1, 168, 96, - 167, -1, 168, 100, 167, -1, 168, 98, 167, -1, - 168, 99, 167, -1, 168, 97, 167, -1, 163, 107, - 163, -1, 106, 168, -1, 167, -1, 169, 104, 168, - -1, 168, -1, 170, 105, 169, -1, 169, -1, 170, - -1, 175, -1, 176, -1, 108, 118, 171, 113, -1, - 73, 113, -1, 173, -1, 173, 174, -1, 173, -1, - 4, 116, 171, 117, 120, 174, 121, -1, 172, -1, - 172, 177, -1 + 145, 0, -1, 146, -1, 168, -1, 169, -1, 149, + -1, 192, -1, 1, -1, -1, 126, -1, 147, 127, + 126, -1, 125, -1, 147, 127, 125, -1, 125, -1, + 148, 127, 125, -1, 150, -1, 150, 149, -1, 150, + 128, 149, -1, 150, 128, -1, 155, 128, -1, 156, + -1, 164, -1, 165, -1, 166, -1, 167, -1, 170, + -1, 157, -1, 173, -1, 128, -1, 151, 128, -1, + 146, -1, 153, -1, 154, -1, 154, 127, 153, -1, + 186, -1, 9, 129, 125, 130, 123, 160, 161, -1, + 9, 129, 125, 130, 123, 129, 152, 130, 160, 161, + -1, 9, 131, 125, 132, 123, 160, 161, -1, 9, + 131, 125, 132, 123, 129, 152, 130, 160, 161, -1, + 13, 129, 125, 130, 123, 160, 161, -1, 14, 123, + 160, 161, -1, 14, 123, 131, 152, 132, 160, 161, + -1, 123, 133, 22, 131, 152, 132, 161, -1, 123, + 133, 24, 131, 152, 132, 161, -1, 123, 133, 23, + 131, 152, 132, 161, -1, 15, 123, 160, 161, -1, + 13, 129, 125, 130, 124, 160, 161, -1, 43, 129, + 125, 130, 123, 160, 161, -1, 43, 129, 125, 130, + 123, 129, 152, 130, 160, 161, -1, 16, 129, 125, + 130, 123, 160, 161, -1, 27, 129, 125, 130, 123, + 160, 161, -1, 27, 129, 125, 130, 123, 129, 152, + 130, 160, 161, -1, 27, 131, 125, 132, 123, 160, + 161, -1, 27, 131, 125, 132, 123, 129, 152, 130, + 160, 161, -1, 44, 129, 125, 130, 123, 154, 160, + 161, -1, 44, 129, 125, 130, 123, 154, 160, 80, + 131, 123, 132, 161, -1, 44, 129, 125, 130, 123, + 131, 152, 132, 160, 161, -1, 45, 123, 131, 152, + 132, 160, 161, -1, 123, 133, 46, 131, 152, 132, + 160, 161, -1, 123, 133, 57, 131, 152, 132, 160, + 161, -1, 47, 129, 125, 130, 123, 154, 160, 161, + -1, 47, 129, 125, 130, 123, 131, 152, 132, 160, + 161, -1, 101, 129, 125, 130, 123, 154, 160, 161, + -1, 48, 129, 125, 130, 123, 131, 152, 132, 161, + -1, 55, 123, 131, 152, 132, 160, 161, -1, 17, + 123, -1, 17, 124, -1, 26, 123, 160, 161, -1, + 29, 123, 160, 161, -1, 28, 123, 160, 161, -1, + 31, 123, 160, 161, -1, 30, 123, 160, 161, -1, + 33, 123, 160, 161, -1, 32, 123, 160, 161, -1, + 35, 123, 160, 161, -1, 34, 123, 160, 161, -1, + 37, 123, 160, 161, -1, 36, 123, 160, 161, -1, + 39, 123, 160, 161, -1, 38, 123, 160, 161, -1, + 41, 123, 160, 161, -1, 40, 123, 160, 161, -1, + 42, 123, 129, 152, 130, 160, 161, -1, 26, 123, + 134, 123, 160, 161, -1, 26, 123, 129, 154, 130, + 160, 161, -1, 52, 123, -1, 53, 123, 133, 154, + 161, -1, 54, 123, 133, 154, 161, -1, 126, 123, + 160, 161, -1, 126, 123, 134, 123, 160, 161, -1, + 126, 123, 129, 154, 130, 160, 161, -1, 96, 123, + -1, 99, 129, 125, 130, 123, -1, 97, 129, 125, + 130, 123, 131, 152, 132, -1, 98, 129, 125, 130, + 123, 131, 152, 132, -1, 105, 123, 154, -1, 89, + 123, 131, 152, 132, -1, 93, 123, 131, 152, 132, + -1, 94, 123, 131, 152, 132, -1, 95, 123, 131, + 152, 132, -1, 91, 129, 125, 130, 123, 161, -1, + 92, 123, 161, -1, 90, 123, 161, -1, 10, 123, + 124, -1, 11, 123, 124, -1, 49, 123, 133, 123, + 161, -1, 50, 123, -1, 49, 123, 134, 123, 133, + 123, 161, -1, 50, 123, 134, 123, -1, 51, 123, + 123, 131, 152, 132, 160, 161, -1, 51, 123, 134, + 123, 123, 131, 152, 132, 160, 161, -1, 102, 123, + 131, 152, 132, -1, 103, 123, 131, 152, 132, -1, + 104, 123, 131, 152, 132, -1, 85, 123, 131, 152, + 132, -1, 86, 152, -1, 87, 131, 123, 127, 123, + 132, -1, 106, 131, 186, 132, -1, 62, 123, 161, + -1, 80, 123, 133, 76, -1, 80, 123, 133, 186, + -1, 80, 123, 133, 135, 147, 136, -1, 81, 123, + 133, 186, -1, 82, 124, -1, 82, -1, 82, 131, + 125, 132, 124, -1, 82, 131, 125, 132, -1, 83, + 124, -1, 83, -1, 83, 131, 125, 132, 124, -1, + 83, 131, 125, 132, -1, 8, 131, 123, 132, -1, + 84, 124, -1, 84, 131, 124, 132, 124, -1, 84, + 131, 123, 132, 124, -1, 84, -1, 4, 131, 186, + 132, 135, 149, 136, -1, 4, 131, 186, 132, 135, + 149, 136, 6, 135, 149, 136, -1, 5, 131, 186, + 132, 135, 149, 136, -1, 5, 131, 186, 132, 135, + 149, 136, 6, 135, 149, 136, -1, 79, 131, 186, + 132, 158, 151, -1, 79, 131, 186, 132, 135, 159, + 136, -1, 79, 131, 186, 132, 135, 159, 136, 6, + 135, 159, 136, -1, 80, 123, 133, 186, -1, 81, + 123, 133, 186, -1, 158, 151, -1, 159, 158, 151, + -1, 146, -1, 133, 152, -1, 146, -1, 137, 162, + -1, 163, -1, 162, 127, 163, -1, 63, -1, 3, + -1, 68, -1, 69, -1, 70, -1, 67, -1, 71, + -1, 74, -1, 72, -1, 75, -1, 77, -1, 73, + -1, 78, -1, 54, -1, 64, -1, 65, -1, 66, + -1, 123, 18, 131, 186, 132, 135, 149, 136, -1, + 25, 131, 186, 132, 135, 149, 136, -1, 12, 131, + 152, 132, 135, 149, 136, -1, 56, 123, 135, 168, + 136, 161, -1, 56, 123, 131, 123, 132, 135, 168, + 136, 161, -1, 56, 123, 131, 123, 127, 124, 127, + 123, 127, 123, 132, 161, -1, 56, 123, 131, 123, + 127, 124, 127, 123, 127, 123, 127, 123, 132, 161, + -1, 56, 123, 131, 123, 127, 124, 127, 123, 132, + 161, -1, 56, 123, 134, 123, 131, 123, 127, 124, + 127, 123, 127, 123, 132, 161, -1, 56, 123, 134, + 123, 131, 123, 127, 124, 127, 123, 132, 161, -1, + 56, 123, 134, 123, 135, 168, 136, 161, -1, 56, + 123, 134, 123, 131, 123, 132, 135, 168, 136, 161, + -1, 59, 123, 135, 168, 136, 161, -1, 59, 123, + 131, 123, 132, 135, 168, 136, 161, -1, 59, 123, + 131, 123, 127, 124, 127, 123, 127, 123, 132, 161, + -1, 59, 123, 131, 123, 127, 124, 127, 123, 132, + 161, -1, 59, 123, 134, 123, 131, 123, 127, 124, + 127, 123, 127, 123, 132, 161, -1, 59, 123, 134, + 123, 131, 123, 127, 124, 127, 123, 132, 161, -1, + 59, 123, 134, 123, 135, 168, 136, 161, -1, 59, + 123, 134, 123, 131, 123, 132, 135, 168, 136, 161, + -1, 174, -1, 168, 174, -1, 177, -1, 169, 177, + -1, 58, 123, 135, 169, 136, 161, -1, 58, 123, + 131, 123, 127, 124, 127, 123, 127, 123, 132, 161, + -1, 172, -1, 171, 172, -1, 108, 153, 137, 149, + -1, 109, 131, 152, 132, 135, 171, 110, 137, 149, + 136, -1, 109, 131, 152, 132, 135, 171, 110, 137, + 136, -1, 109, 131, 152, 132, 135, 171, 136, -1, + 124, 133, 135, 175, 136, -1, 123, 133, 135, 175, + 136, -1, 125, 133, 135, 175, 136, -1, 126, 133, + 135, 175, 136, -1, 176, -1, 176, 175, -1, 123, + 133, 186, 128, -1, 124, 133, 129, 148, 130, -1, + 123, 133, 129, 148, 130, -1, 107, 131, 123, 127, + 125, 127, 125, 132, -1, 123, -1, 107, 131, 124, + 127, 125, 127, 125, 132, -1, 124, -1, 178, -1, + 125, -1, 126, -1, 60, -1, 61, -1, 131, 186, + 132, -1, 138, 179, -1, 123, 131, 132, -1, 123, + 131, 152, 132, -1, 179, 139, 180, -1, 179, -1, + 181, 140, 180, -1, 181, 141, 180, -1, 181, 142, + 180, -1, 181, 117, 180, -1, 181, 118, 180, -1, + 180, -1, 100, 131, 123, 132, -1, 19, 131, 123, + 127, 124, 132, -1, 20, 131, 123, 127, 124, 132, + -1, 21, 131, 123, 127, 125, 132, -1, 21, 131, + 123, 127, 125, 127, 125, 132, -1, 21, 131, 123, + 132, -1, 182, 143, 181, -1, 182, 138, 181, -1, + 181, -1, 183, 116, 182, -1, 183, 111, 182, -1, + 183, 115, 182, -1, 183, 113, 182, -1, 183, 114, + 182, -1, 183, 112, 182, -1, 178, 122, 178, -1, + 121, 183, -1, 182, -1, 184, 119, 183, -1, 183, + -1, 185, 120, 184, -1, 184, -1, 185, -1, 190, + -1, 191, -1, 123, 133, 186, 128, -1, 88, 128, + -1, 188, -1, 188, 189, -1, 188, -1, 4, 131, + 186, 132, 135, 189, 136, -1, 187, -1, 187, 192, + -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const grib_yytype_uint16 grib_yyrline[] = { - 0, 237, 237, 239, 240, 241, 242, 244, 248, 251, - 252, 253, 254, 257, 258, 261, 262, 263, 264, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 279, 280, - 283, 284, 287, 288, 291, 295, 298, 301, 304, 307, - 310, 313, 316, 319, 322, 325, 329, 332, 335, 338, - 341, 344, 347, 350, 353, 356, 360, 363, 366, 369, - 372, 375, 378, 381, 384, 387, 390, 393, 396, 399, - 402, 405, 408, 411, 414, 417, 420, 423, 426, 429, - 432, 435, 438, 441, 444, 447, 450, 453, 455, 457, - 460, 463, 466, 470, 474, 477, 480, 492, 504, 516, - 519, 522, 524, 527, 530, 531, 532, 534, 537, 538, - 539, 540, 541, 542, 543, 544, 546, 547, 548, 549, - 550, 554, 555, 556, 557, 561, 562, 563, 566, 567, - 570, 571, 575, 576, 579, 580, 583, 584, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, - 599, 600, 601, 602, 603, 606, 609, 612, 615, 616, - 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 635, 636, 639, 640, 643, - 644, 647, 648, 651, 655, 656, 657, 660, 662, 664, - 666, 670, 671, 674, 678, 680, 684, 685, 686, 687, - 690, 691, 692, 694, 695, 696, 697, 698, 699, 703, - 704, 707, 708, 709, 710, 711, 712, 713, 714, 715, - 716, 717, 718, 721, 722, 723, 726, 728, 729, 730, - 731, 732, 733, 738, 739, 742, 743, 746, 747, 750, - 756, 757, 760, 761, 764, 765, 768, 772, 775, 776 + 0, 258, 258, 260, 261, 262, 263, 265, 269, 272, + 273, 274, 275, 278, 279, 282, 283, 284, 285, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 300, 301, + 304, 305, 308, 309, 312, 316, 319, 322, 325, 328, + 331, 334, 337, 340, 343, 346, 350, 353, 356, 359, + 362, 365, 368, 371, 374, 377, 381, 384, 387, 390, + 393, 396, 399, 402, 405, 408, 411, 414, 418, 421, + 424, 427, 430, 433, 436, 439, 442, 445, 448, 451, + 454, 457, 460, 464, 467, 470, 473, 476, 479, 482, + 485, 488, 491, 494, 497, 500, 503, 506, 509, 512, + 515, 518, 521, 523, 525, 528, 531, 534, 538, 542, + 545, 548, 560, 572, 584, 587, 590, 592, 595, 598, + 599, 600, 602, 605, 606, 607, 608, 609, 610, 611, + 612, 614, 615, 616, 617, 618, 622, 623, 624, 625, + 629, 630, 631, 634, 635, 638, 639, 643, 644, 647, + 648, 651, 652, 655, 656, 657, 658, 659, 660, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 674, 677, 680, 683, 684, 685, 686, 687, 688, 689, + 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, + 703, 704, 707, 708, 711, 712, 715, 716, 719, 723, + 724, 725, 728, 730, 732, 734, 738, 739, 742, 746, + 748, 752, 753, 754, 755, 758, 759, 760, 762, 763, + 764, 765, 766, 767, 771, 772, 775, 776, 777, 778, + 779, 780, 781, 782, 783, 784, 785, 786, 789, 790, + 791, 794, 796, 797, 798, 799, 800, 801, 806, 807, + 810, 811, 814, 815, 818, 824, 825, 828, 829, 832, + 833, 836, 840, 843, 844 }; #endif @@ -869,32 +913,35 @@ static const char *const grib_yytname[] = "ELSE", "END", "CLOSE", "UNSIGNED", "TEMPLATE", "TEMPLATE_NOFAIL", "TRIGGER", "ASCII", "GROUP", "NON_ALPHA", "KSEC1EXPVER", "LABEL", "LIST", "IS_IN_LIST", "IS_IN_DICT", "IS_INTEGER", "TO_INTEGER", "TO_STRING", - "SEX2DEC", "WHILE", "IBMFLOAT", "SIGNED", "BYTE", "CODETABLE", - "SMART_TABLE", "DICTIONARY", "COMPLEX_CODETABLE", "LOOKUP", "ALIAS", - "UNALIAS", "META", "POS", "INTCONST", "TRANS", "FLAGBIT", "CONCEPT", - "GETENV", "HASH_ARRAY", "CONCEPT_NOFAIL", "NIL", "DUMMY", "MODIFY", - "READ_ONLY", "STRING_TYPE", "LONG_TYPE", "DOUBLE_TYPE", "NO_COPY", - "DUMP", "JSON", "XML", "NO_FAIL", "EDITION_SPECIFIC", "OVERRIDE", - "HIDDEN", "CAN_BE_MISSING", "MISSING", "CONSTRAINT", "COPY_OK", "WHEN", - "SET", "SET_NOFAIL", "WRITE", "APPEND", "PRINT", "EXPORT", "REMOVE", - "RENAME", "SKIP", "PAD", "SECTION_PADDING", "MESSAGE", "MESSAGE_COPY", - "PADTO", "PADTOEVEN", "PADTOMULTIPLE", "G1_HALF_BYTE", - "G1_MESSAGE_LENGTH", "G1_SECTION4_LENGTH", "SECTION_LENGTH", "LENGTH", - "FLAG", "ITERATOR", "NEAREST", "BOX", "KSEC", "ASSERT", "SUBSTR", "CASE", - "SWITCH", "DEFAULT", "EQ", "NE", "GE", "LE", "LT", "GT", "BIT", "BITOFF", - "AND", "OR", "NOT", "IS", "IDENT", "STRING", "INTEGER", "FLOAT", "','", - "';'", "'['", "']'", "'('", "')'", "'='", "'.'", "'{'", "'}'", "':'", - "'-'", "'^'", "'*'", "'/'", "'%'", "'+'", "$accept", "all", "empty", - "dvalues", "integer_array", "instructions", "instruction", "semi", - "argument_list", "arguments", "argument", "simple", "if_block", - "when_block", "set", "set_list", "default", "flags", "flag_list", "flag", - "list_block", "while_block", "trigger_block", "concept_block", - "concept_list", "hash_array_list", "hash_array_block", "case_list", - "case_value", "switch_block", "concept_value", "concept_conditions", - "concept_condition", "hash_array_value", "string_or_ident", "atom", - "power", "factor", "term", "condition", "conjonction", "disjonction", - "expression", "rule", "rule_entry", "rule_entries", "fact", - "conditional_rule", "rules", 0 + "SEX2DEC", "WHILE", "IBMFLOAT", "SIGNED", "UINT8", "INT8", "UINT16", + "INT16", "UINT16_LITTLE_ENDIAN", "INT16_LITTLE_ENDIAN", "UINT32", + "INT32", "UINT32_LITTLE_ENDIAN", "INT32_LITTLE_ENDIAN", "UINT64", + "INT64", "UINT64_LITTLE_ENDIAN", "INT64_LITTLE_ENDIAN", "BLOB", "BYTE", + "CODETABLE", "SMART_TABLE", "DICTIONARY", "COMPLEX_CODETABLE", "LOOKUP", + "ALIAS", "UNALIAS", "META", "POS", "INTCONST", "TRANS", "FLAGBIT", + "CONCEPT", "GETENV", "HASH_ARRAY", "CONCEPT_NOFAIL", "NIL", "DUMMY", + "MODIFY", "READ_ONLY", "STRING_TYPE", "LONG_TYPE", "DOUBLE_TYPE", + "NO_COPY", "DUMP", "JSON", "XML", "NO_FAIL", "EDITION_SPECIFIC", + "OVERRIDE", "HIDDEN", "CAN_BE_MISSING", "MISSING", "CONSTRAINT", + "COPY_OK", "WHEN", "SET", "SET_NOFAIL", "WRITE", "APPEND", "PRINT", + "EXPORT", "REMOVE", "RENAME", "SKIP", "PAD", "SECTION_PADDING", + "MESSAGE", "MESSAGE_COPY", "PADTO", "PADTOEVEN", "PADTOMULTIPLE", + "G1_HALF_BYTE", "G1_MESSAGE_LENGTH", "G1_SECTION4_LENGTH", + "SECTION_LENGTH", "LENGTH", "FLAG", "ITERATOR", "NEAREST", "BOX", "KSEC", + "ASSERT", "SUBSTR", "CASE", "SWITCH", "DEFAULT", "EQ", "NE", "GE", "LE", + "LT", "GT", "BIT", "BITOFF", "AND", "OR", "NOT", "IS", "IDENT", "STRING", + "INTEGER", "FLOAT", "','", "';'", "'['", "']'", "'('", "')'", "'='", + "'.'", "'{'", "'}'", "':'", "'-'", "'^'", "'*'", "'/'", "'%'", "'+'", + "$accept", "all", "empty", "dvalues", "integer_array", "instructions", + "instruction", "semi", "argument_list", "arguments", "argument", + "simple", "if_block", "when_block", "set", "set_list", "default", + "flags", "flag_list", "flag", "list_block", "while_block", + "trigger_block", "concept_block", "concept_list", "hash_array_list", + "hash_array_block", "case_list", "case_value", "switch_block", + "concept_value", "concept_conditions", "concept_condition", + "hash_array_value", "string_or_ident", "atom", "power", "factor", "term", + "condition", "conjonction", "disjonction", "expression", "rule", + "rule_entry", "rule_entries", "fact", "conditional_rule", "rules", 0 }; #endif @@ -914,39 +961,43 @@ static const grib_yytype_uint16 grib_yytoknum[] = 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 44, 59, 91, 93, 40, 41, 61, 46, - 123, 125, 58, 45, 94, 42, 47, 37, 43 + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 44, 59, 91, + 93, 40, 41, 61, 46, 123, 125, 58, 45, 94, + 42, 47, 37, 43 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const grib_yytype_uint8 grib_yyr1[] = { - 0, 129, 130, 130, 130, 130, 130, 130, 131, 132, - 132, 132, 132, 133, 133, 134, 134, 134, 134, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 136, 136, - 137, 137, 138, 138, 139, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 141, 141, 141, 141, 142, 142, 142, 143, 143, - 144, 144, 145, 145, 146, 146, 147, 147, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 149, 150, 151, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 153, 153, 154, 154, 155, - 155, 156, 156, 157, 158, 158, 158, 159, 159, 159, - 159, 160, 160, 161, 162, 162, 163, 163, 163, 163, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 165, - 165, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 167, 167, 167, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 169, 169, 170, 170, 171, - 172, 172, 173, 173, 174, 174, 175, 176, 177, 177 + 0, 144, 145, 145, 145, 145, 145, 145, 146, 147, + 147, 147, 147, 148, 148, 149, 149, 149, 149, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 151, 151, + 152, 152, 153, 153, 154, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 156, 156, 156, 156, + 157, 157, 157, 158, 158, 159, 159, 160, 160, 161, + 161, 162, 162, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 164, 165, 166, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 168, 168, 169, 169, 170, 170, 171, 171, 172, 173, + 173, 173, 174, 174, 174, 174, 175, 175, 176, 177, + 177, 178, 178, 178, 178, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 180, 180, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 182, 182, + 182, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 184, 184, 185, 185, 186, 187, 187, 188, 188, 189, + 189, 190, 191, 192, 192 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -958,225 +1009,239 @@ static const grib_yytype_uint8 grib_yyr2[] = 1, 1, 1, 3, 1, 7, 10, 7, 10, 7, 4, 7, 7, 7, 7, 4, 7, 7, 10, 7, 7, 10, 7, 10, 8, 12, 10, 7, 8, 8, - 8, 10, 8, 9, 7, 2, 2, 4, 6, 7, - 2, 5, 5, 4, 6, 7, 2, 5, 8, 8, - 3, 5, 5, 5, 5, 6, 3, 3, 3, 3, - 5, 2, 7, 4, 8, 10, 5, 5, 5, 5, - 2, 6, 4, 3, 4, 4, 6, 4, 2, 1, - 5, 4, 2, 1, 5, 4, 4, 2, 5, 5, - 1, 7, 11, 7, 11, 6, 7, 11, 4, 4, - 2, 3, 1, 2, 1, 2, 1, 3, 1, 1, + 8, 10, 8, 9, 7, 2, 2, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 7, 6, 7, 2, 5, 5, 4, 6, + 7, 2, 5, 8, 8, 3, 5, 5, 5, 5, + 6, 3, 3, 3, 3, 5, 2, 7, 4, 8, + 10, 5, 5, 5, 5, 2, 6, 4, 3, 4, + 4, 6, 4, 2, 1, 5, 4, 2, 1, 5, + 4, 4, 2, 5, 5, 1, 7, 11, 7, 11, + 6, 7, 11, 4, 4, 2, 3, 1, 2, 1, + 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 8, 7, 7, 6, 9, - 12, 14, 10, 14, 12, 8, 11, 6, 9, 12, - 10, 14, 12, 8, 11, 1, 2, 1, 2, 6, - 12, 1, 2, 4, 10, 9, 7, 5, 5, 5, - 5, 1, 2, 4, 5, 5, 8, 1, 8, 1, - 1, 1, 1, 1, 1, 3, 2, 3, 4, 3, - 1, 3, 3, 3, 3, 3, 1, 4, 6, 6, - 6, 8, 4, 3, 3, 1, 3, 3, 3, 3, - 3, 3, 3, 2, 1, 3, 1, 3, 1, 1, - 1, 1, 4, 2, 1, 2, 1, 7, 1, 2 + 8, 7, 7, 6, 9, 12, 14, 10, 14, 12, + 8, 11, 6, 9, 12, 10, 14, 12, 8, 11, + 1, 2, 1, 2, 6, 12, 1, 2, 4, 10, + 9, 7, 5, 5, 5, 5, 1, 2, 4, 5, + 5, 8, 1, 8, 1, 1, 1, 1, 1, 1, + 3, 2, 3, 4, 3, 1, 3, 3, 3, 3, + 3, 1, 4, 6, 6, 6, 8, 4, 3, 3, + 1, 3, 3, 3, 3, 3, 3, 3, 2, 1, + 3, 1, 3, 1, 1, 1, 1, 4, 2, 1, + 2, 1, 7, 1, 2 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ -static const grib_yytype_uint8 grib_yydefact[] = +static const grib_yytype_uint16 grib_yydefact[] = { 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 109, 113, 120, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2, 5, 15, 0, - 20, 26, 21, 22, 23, 24, 3, 4, 25, 27, - 175, 177, 248, 246, 240, 241, 6, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 8, 8, 0, 65, - 66, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 91, 0, 70, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 108, 0, 112, 0, 117, 0, - 0, 0, 0, 0, 203, 204, 0, 0, 0, 197, - 199, 201, 202, 0, 0, 30, 100, 31, 32, 200, - 210, 216, 225, 234, 236, 238, 239, 34, 0, 243, - 0, 8, 0, 8, 0, 0, 0, 76, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 124, 128, 135, 0, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 5, 15, 0, 20, 26, 21, 22, 23, + 24, 3, 4, 25, 27, 190, 192, 263, 261, 255, + 256, 6, 0, 0, 0, 0, 0, 0, 0, 8, + 0, 8, 8, 0, 65, 66, 0, 8, 0, 0, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, + 0, 106, 0, 85, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 123, 0, 127, 0, 132, 0, + 0, 0, 0, 0, 218, 219, 0, 0, 0, 212, + 214, 216, 217, 0, 0, 30, 115, 31, 32, 215, + 225, 231, 240, 249, 251, 253, 254, 34, 0, 258, + 0, 8, 0, 8, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 8, 0, 1, 0, 0, 0, 18, 16, - 19, 0, 0, 0, 176, 0, 0, 178, 0, 0, - 249, 0, 0, 0, 0, 0, 88, 89, 0, 0, - 8, 8, 132, 8, 8, 0, 0, 0, 0, 8, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 134, 103, 0, 0, 0, 0, - 0, 0, 0, 8, 0, 0, 0, 0, 0, 233, - 0, 0, 200, 206, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 191, 0, 0, 193, 0, 0, + 264, 0, 0, 0, 0, 0, 103, 104, 0, 0, + 8, 8, 147, 8, 8, 0, 0, 0, 0, 8, + 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 0, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, + 118, 0, 0, 0, 0, 0, 0, 0, 8, 0, + 0, 0, 0, 0, 248, 0, 0, 215, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, 87, 0, 86, 8, 8, 8, - 0, 0, 0, 0, 8, 8, 8, 80, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, - 0, 0, 0, 133, 40, 45, 0, 0, 0, 8, - 67, 0, 0, 0, 0, 0, 0, 0, 8, 0, - 93, 8, 0, 8, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 139, 151, 138, 152, 153, 154, - 143, 140, 141, 142, 144, 146, 149, 145, 147, 148, - 150, 135, 136, 0, 104, 0, 105, 107, 111, 115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, - 0, 205, 33, 197, 232, 209, 214, 215, 211, 212, - 213, 224, 223, 227, 231, 229, 230, 228, 226, 235, - 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 102, 0, 0, 8, 8, 8, - 8, 8, 13, 0, 0, 0, 191, 242, 0, 0, - 0, 0, 8, 73, 0, 0, 0, 0, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 102, + 0, 101, 8, 8, 8, 0, 0, 0, 0, 8, + 8, 8, 95, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, + 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 0, 0, 0, 0, 0, 148, 40, + 45, 0, 0, 0, 8, 67, 0, 0, 69, 68, + 71, 70, 73, 72, 75, 74, 77, 76, 79, 78, + 81, 80, 0, 0, 0, 0, 0, 0, 8, 0, + 108, 8, 0, 8, 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 154, 166, 153, 167, 168, 169, + 158, 155, 156, 157, 159, 161, 164, 160, 162, 163, + 165, 150, 151, 0, 119, 0, 120, 122, 126, 130, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, + 0, 220, 33, 212, 247, 224, 229, 230, 226, 227, + 228, 239, 238, 242, 246, 244, 245, 243, 241, 250, + 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 117, 0, 0, 8, 8, 8, + 8, 8, 13, 0, 0, 0, 206, 257, 0, 0, + 0, 0, 8, 88, 0, 0, 0, 0, 0, 8, 8, 0, 8, 8, 8, 8, 0, 8, 8, 8, - 8, 8, 0, 8, 0, 0, 90, 0, 0, 0, - 71, 72, 8, 0, 0, 0, 0, 8, 0, 8, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 11, 9, 0, 110, 114, 119, 118, 99, 0, 0, - 0, 222, 217, 0, 0, 208, 0, 81, 8, 82, - 83, 84, 0, 0, 77, 0, 96, 97, 98, 0, - 0, 0, 0, 0, 0, 0, 0, 195, 0, 188, - 192, 194, 187, 189, 8, 8, 190, 0, 0, 0, - 0, 244, 0, 0, 8, 8, 8, 8, 0, 8, - 8, 8, 8, 0, 8, 68, 8, 8, 8, 8, + 8, 8, 8, 0, 8, 0, 0, 105, 0, 0, + 0, 86, 87, 8, 0, 0, 0, 0, 8, 0, + 8, 0, 0, 0, 0, 8, 0, 0, 0, 0, + 0, 11, 9, 0, 125, 129, 134, 133, 114, 0, + 0, 0, 237, 232, 0, 0, 223, 0, 96, 8, + 97, 98, 99, 0, 0, 92, 0, 111, 112, 113, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, + 203, 207, 209, 202, 204, 8, 8, 205, 0, 0, + 0, 0, 259, 0, 0, 8, 8, 8, 8, 0, + 8, 8, 8, 8, 0, 8, 83, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 0, 0, 0, 0, 158, 0, 179, 0, - 0, 0, 0, 167, 137, 0, 0, 0, 0, 28, - 125, 0, 106, 0, 0, 0, 0, 0, 101, 85, - 8, 8, 8, 0, 0, 181, 0, 8, 8, 8, - 8, 8, 14, 0, 8, 74, 0, 0, 0, 121, - 245, 247, 123, 0, 35, 0, 37, 157, 39, 46, - 41, 49, 156, 69, 0, 50, 0, 52, 0, 47, - 0, 34, 8, 57, 0, 8, 0, 92, 8, 0, - 64, 0, 0, 0, 0, 8, 0, 0, 0, 0, - 0, 8, 0, 0, 130, 126, 0, 29, 12, 10, - 218, 219, 0, 220, 0, 0, 0, 0, 8, 0, - 0, 186, 182, 0, 42, 44, 43, 8, 8, 193, - 75, 0, 0, 8, 8, 8, 8, 8, 8, 0, - 54, 8, 60, 8, 94, 8, 0, 8, 0, 0, - 165, 0, 0, 8, 0, 0, 173, 128, 129, 0, - 131, 0, 0, 0, 78, 79, 62, 0, 0, 155, - 58, 59, 0, 0, 8, 8, 8, 8, 8, 8, - 0, 8, 63, 8, 0, 8, 159, 0, 0, 0, - 0, 8, 168, 0, 0, 0, 221, 196, 198, 183, - 185, 0, 0, 0, 36, 38, 51, 53, 48, 56, - 0, 61, 95, 0, 162, 0, 8, 0, 0, 170, - 0, 8, 0, 184, 122, 124, 8, 0, 8, 0, - 8, 166, 8, 8, 0, 8, 174, 127, 55, 0, - 160, 0, 164, 180, 169, 0, 172, 8, 8, 8, - 161, 163, 171 + 8, 8, 8, 8, 0, 0, 0, 0, 173, 0, + 194, 0, 0, 0, 0, 182, 152, 0, 0, 0, + 0, 28, 140, 0, 121, 0, 0, 0, 0, 0, + 116, 100, 8, 8, 8, 0, 0, 196, 0, 8, + 8, 8, 8, 8, 14, 0, 8, 89, 0, 0, + 0, 136, 260, 262, 138, 0, 35, 0, 37, 172, + 39, 46, 41, 49, 171, 84, 0, 50, 0, 52, + 82, 0, 47, 0, 34, 8, 57, 0, 8, 0, + 107, 8, 0, 64, 0, 0, 0, 0, 8, 0, + 0, 0, 0, 0, 8, 0, 0, 145, 141, 0, + 29, 12, 10, 233, 234, 0, 235, 0, 0, 0, + 0, 8, 0, 0, 201, 197, 0, 42, 44, 43, + 8, 8, 208, 90, 0, 0, 8, 8, 8, 8, + 8, 8, 0, 54, 8, 60, 8, 109, 8, 0, + 8, 0, 0, 180, 0, 0, 8, 0, 0, 188, + 143, 144, 0, 146, 0, 0, 0, 93, 94, 62, + 0, 0, 170, 58, 59, 0, 0, 8, 8, 8, + 8, 8, 8, 0, 8, 63, 8, 0, 8, 174, + 0, 0, 0, 0, 8, 183, 0, 0, 0, 236, + 211, 213, 198, 200, 0, 0, 0, 36, 38, 51, + 53, 48, 56, 0, 61, 110, 0, 177, 0, 8, + 0, 0, 185, 0, 8, 0, 199, 137, 139, 8, + 0, 8, 0, 8, 181, 8, 8, 0, 8, 189, + 142, 55, 0, 175, 0, 179, 195, 184, 0, 187, + 8, 8, 8, 176, 178, 186 }; /* YYDEFGOTO[NTERM-NUM]. */ static const grib_yytype_int16 grib_yydefgoto[] = { - -1, 65, 244, 502, 443, 550, 68, 600, 146, 147, - 148, 69, 70, 71, 597, 598, 213, 245, 381, 382, - 72, 73, 74, 75, 76, 77, 78, 614, 615, 79, - 80, 445, 446, 81, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 82, 551, 552, 84, 85, 86 + -1, 80, 289, 563, 503, 611, 83, 662, 176, 177, + 178, 84, 85, 86, 659, 660, 243, 290, 441, 442, + 87, 88, 89, 90, 91, 92, 93, 676, 677, 94, + 95, 505, 506, 96, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 97, 612, 613, 99, 100, 101 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -588 +#define YYPACT_NINF -650 static const grib_yytype_int16 grib_yypact[] = { - 1033, -588, -101, -61, -49, 99, -65, 4, 19, 100, - 14, 33, 123, 17, 44, 79, 151, 138, 158, 193, - 167, 198, 212, 227, 229, 233, 235, 242, 250, 260, - 261, 262, 272, 269, 279, 283, -30, -16, -2, 285, - 730, 278, -28, 287, 292, 294, 301, 304, 305, 306, - 307, 302, 310, 316, 317, 311, 312, 313, 324, 318, - 319, -9, 281, 315, -71, 436, -588, -588, 1121, 326, - -588, -588, -588, -588, -588, -588, 252, 41, -588, -588, - -588, -588, 3, -588, -588, -588, -588, 730, 730, 329, - 330, 331, 333, 334, 730, 340, 162, 335, 342, -588, - -588, 730, -79, 344, 345, 349, 354, 328, 355, 364, - 102, 357, -25, -588, 362, 366, 373, 154, 27, 173, - 360, 730, 376, 378, -588, 381, -588, 389, -588, 191, - 386, 387, 388, 390, -588, -588, 391, 392, 730, 393, - -588, -588, -588, 730, 146, -588, -588, -588, 398, 404, - 394, -588, -29, -20, 56, 401, 408, -588, 406, -588, - 399, 360, 407, 360, 400, 405, 409, -588, 410, 412, - 413, 414, 411, 416, 417, 730, 730, 730, 418, 7, - -51, 421, 10, 423, -588, 420, 1, 422, 1319, -588, - -588, 419, 427, 428, -588, 430, 431, -588, 434, 433, - -588, 438, 440, 442, 446, 449, -588, -588, 450, 454, - 730, 730, -588, 360, 360, 455, 456, 730, 464, 360, - 460, 462, 467, 471, 730, 478, 479, 469, 488, 492, - 485, 494, 730, 730, 730, 495, 496, 252, 497, 41, - 498, 499, 252, 818, -588, -588, 491, 377, 730, 493, - 500, 514, 515, 730, 501, 503, 504, 505, 237, 56, - 117, 516, -588, -588, 730, -48, 146, 146, 146, 146, - 146, 146, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, - 730, 730, 502, 730, -588, 522, -588, 730, 730, 730, - 523, 524, 525, 526, 730, 730, 730, -588, 527, 528, - 730, 530, 531, 533, 534, 535, 532, 507, 415, 532, - 507, 507, 730, 544, 360, 507, 730, 35, -588, 536, - 537, 529, 539, 730, 730, 541, 546, -588, 547, 551, - 548, 240, 552, -588, -588, -588, 563, 553, 560, 335, - -588, 568, 570, 571, 572, 565, 575, 578, 360, 569, - -588, 730, 580, 360, 360, 573, 28, 77, 23, 542, - -67, 47, 178, 73, -588, -588, -588, -588, -588, -588, - -588, -588, -588, -588, -588, -588, -588, -588, -588, -588, - -588, 577, -588, -33, -588, 149, -588, -588, 583, 584, - 585, 586, 579, 587, 588, 83, 581, 589, 590, -588, - 601, -588, -588, -588, -588, -588, -588, -588, -588, -588, - -588, -29, -29, -20, -20, -20, -20, -20, -20, 56, - 401, 595, 607, 596, 608, 609, 612, 622, 625, 626, - 627, 619, 623, 624, -588, 628, 629, 730, 730, 730, - 730, 730, -588, 46, 621, 576, 507, -588, 74, 631, - 632, 630, 335, -588, 633, 639, 640, 1231, 1319, -23, - 129, 1319, 335, 335, 335, 335, 1319, 335, 360, 135, - 201, 224, 1395, 335, 1404, 643, -588, 636, 645, 644, - -588, -588, 335, 638, 646, 655, 252, 360, 656, 360, - 658, 649, 662, 252, 360, 818, 664, 665, 291, 651, - -588, -588, -31, -588, -588, -588, -588, -588, 668, 670, - 671, -588, -588, 672, 673, -588, 663, -588, 360, -588, - -588, -588, 669, 674, -588, 730, -588, -588, -588, 691, - 666, 676, 681, 682, 687, 688, 677, -588, 730, -588, - -588, -588, -588, -588, 335, 360, -588, 683, 690, 2, - 667, -62, 685, 692, 730, 360, 730, 360, 693, 360, - 360, 360, 360, 696, 360, -588, 730, 360, 730, 360, - 730, 360, 730, 335, 360, 730, 335, 730, 360, 335, - 730, 360, 695, 252, 84, 96, -588, 699, -588, 700, - 252, 91, 197, -588, -588, 701, 705, 651, -43, -588, - 711, 199, -588, 708, 710, 112, 706, 716, -588, -588, - 730, 730, 335, 730, -59, -588, 1319, 360, 360, 360, - 335, 335, -588, 717, 360, -588, 1319, -62, 686, 520, - -588, -588, 783, 714, -588, 718, -588, -588, -588, -588, - -588, -588, -588, -588, 719, -588, 720, -588, 722, -588, - 715, 516, -47, -588, 725, 360, 726, -588, 360, 727, - -588, 723, 215, 736, 735, 360, 751, 752, 219, 753, - 741, 360, 730, 730, 711, 802, 651, -588, -588, -588, - -588, -588, 755, -588, 769, 772, 746, 766, 360, 762, - 763, -588, -588, 765, -588, -588, -588, 360, 360, -588, - -588, 767, 768, 335, 335, 335, 335, 335, 335, 774, - -588, 335, -588, 360, -588, 335, 118, 360, 779, 252, - -588, 780, 119, 360, 781, 252, -588, -588, -588, 775, - 711, 785, 787, 790, -588, -588, -588, 1319, 919, -588, - -588, -588, 1319, 1319, 360, 360, 360, 360, 360, 360, - 788, 360, -588, 360, 789, 360, -588, 792, 223, 801, - 803, 360, -588, 804, 244, 291, -588, -588, -588, -588, - -588, 777, 793, 794, -588, -588, -588, -588, -588, -588, - 796, -588, -588, 127, -588, 133, 360, 799, 800, -588, - 134, 360, -41, -588, -588, -588, 360, 810, 360, 811, - 360, -588, 360, 360, 817, 360, -588, -588, -588, 809, - -588, 820, -588, -588, -588, 821, -588, 360, 360, 360, - -588, -588, -588 + 1303, -650, -114, -96, -69, 164, -39, -26, -10, -15, + 3, 31, 69, 41, 106, 108, 234, 121, 128, 139, + 207, 214, 220, 245, 258, 260, 275, 277, 285, 287, + 288, 289, 248, 286, 294, 291, 292, 295, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 183, 309, + 310, -109, -18, -16, 314, 493, 311, 329, 315, 316, + 312, 335, 337, 338, 339, 340, 336, 344, 346, 351, + 341, 345, 359, 360, 353, 354, -6, 355, 356, -83, + 436, -650, -650, 1406, 358, -650, -650, -650, -650, -650, + -650, 247, 100, -650, -650, -650, -650, 19, -650, -650, + -650, -650, 493, 493, 364, 366, 367, 369, 370, 493, + 371, 233, 362, 372, -650, -650, 493, 16, 373, 374, + 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, + 362, 362, 362, 362, 382, 375, 376, 384, 377, 378, + 57, 383, -68, -650, 386, 389, 385, 32, 86, 185, + 387, 493, 390, 392, -650, 404, -650, 409, -650, 161, + 405, 410, 412, 413, -650, -650, 414, 415, 493, 416, + -650, -650, -650, 493, -22, -650, -650, -650, 422, 433, + 417, -650, 6, -90, 240, 438, 439, -650, 435, -650, + 432, 387, 440, 387, 437, 441, 442, -650, 444, 445, + 446, 450, 447, 448, 449, 493, 493, 493, 453, 278, + -17, 429, 27, 431, -650, 456, 10, 454, 1634, -650, + -650, 434, 443, 457, -650, 458, 459, -650, 463, 462, + -650, 464, 465, 466, 473, 474, -650, -650, 475, 478, + 493, 493, -650, 387, 387, 479, 480, 493, 487, 387, + 481, 483, 387, 387, 387, 387, 387, 387, 387, 387, + 387, 387, 387, 387, 387, 387, 493, 490, 492, 493, + 496, 497, 505, 510, 513, 507, 521, 493, 493, 493, + 528, 530, 247, 531, 100, 532, 533, 247, 629, -650, + -650, 527, 132, 493, 529, 536, 537, 538, 493, 534, + 540, 548, 551, 210, 240, 541, 543, -650, -650, 493, + -82, -22, -22, -22, -22, -22, -22, 866, 866, 866, + 866, 866, 866, 866, 866, 493, 493, 549, 493, -650, + 547, -650, 493, 493, 493, 556, 557, 558, 559, 493, + 493, 493, -650, 573, 576, 493, 578, 579, 580, 581, + 589, 535, 599, 461, 535, 599, 599, 493, 600, 387, + 599, 493, -3, -650, 591, 592, 595, 601, 493, 493, + 593, 594, -650, 608, 610, 602, 252, 603, -650, -650, + -650, 611, 605, 606, 362, -650, 615, 619, -650, -650, + -650, -650, -650, -650, -650, -650, -650, -650, -650, -650, + -650, -650, 613, 621, 622, 617, 624, 627, 387, 618, + -650, 493, 630, 387, 387, 620, -71, 129, -79, 628, + -25, 82, 140, -31, -650, -650, -650, -650, -650, -650, + -650, -650, -650, -650, -650, -650, -650, -650, -650, -650, + -650, 631, -650, -44, -650, 254, -650, -650, 632, 633, + 635, 636, 637, 634, 640, 111, 639, 641, 645, -650, + 648, -650, -650, -650, -650, -650, -650, -650, -650, -650, + -650, 6, 6, -90, -90, -90, -90, -90, -90, 240, + 438, 650, 649, 660, 652, 653, 655, 665, 666, 667, + 669, 661, 663, 664, -650, 668, 670, 493, 493, 493, + 493, 493, -650, 83, 675, 626, 599, -650, 178, 662, + 674, 685, 362, -650, 681, 686, 688, 1531, 1634, 182, + 192, 1634, 362, 362, 362, 362, 1634, 362, 387, 193, + 194, 362, 199, 822, 362, 855, 694, -650, 676, 696, + 695, -650, -650, 362, 705, 697, 710, 247, 387, 711, + 387, 712, 702, 715, 247, 387, 629, 716, 717, 313, + 718, -650, -650, -40, -650, -650, -650, -650, -650, 720, + 721, 638, -650, -650, 722, 723, -650, 719, -650, 387, + -650, -650, -650, 724, 725, -650, 493, -650, -650, -650, + 656, 714, 728, 729, 730, 731, 735, 727, -650, 493, + -650, -650, -650, -650, -650, 362, 387, -650, 733, 734, + 11, 737, -74, 742, 743, 493, 387, 493, 387, 744, + 387, 387, 387, 387, 745, 387, -650, 493, 387, 493, + 387, 387, 493, 387, 493, 362, 387, 493, 362, 493, + 387, 362, 493, 387, 757, 247, 118, 71, -650, 761, + -650, 762, 247, 120, 76, -650, -650, 758, 759, 718, + -54, -650, 726, 270, -650, 763, 764, 127, 766, 767, + -650, -650, 493, 493, 362, 493, -76, -650, 1634, 387, + 387, 387, 362, 362, -650, 769, 387, -650, 1634, -74, + 165, 844, -650, -650, 884, 768, -650, 770, -650, -650, + -650, -650, -650, -650, -650, -650, 771, -650, 772, -650, + -650, 773, -650, 775, 543, -56, -650, 776, 387, 778, + -650, 387, 779, -650, 781, 80, 789, 782, 387, 791, + 795, 104, 796, 786, 387, 493, 493, 726, 893, 718, + -650, -650, -650, -650, -650, 780, -650, 798, 799, 800, + 801, 387, 793, 794, -650, -650, 792, -650, -650, -650, + 387, 387, -650, -650, 802, 803, 362, 362, 362, 362, + 362, 362, 804, -650, 362, -650, 387, -650, 362, 134, + 387, 807, 247, -650, 812, 141, 387, 813, 247, -650, + -650, -650, 806, 726, 817, 818, 824, -650, -650, -650, + 1634, 1174, -650, -650, -650, 1634, 1634, 387, 387, 387, + 387, 387, 387, 821, 387, -650, 387, 831, 387, -650, + 834, 110, 835, 836, 387, -650, 838, 156, 313, -650, + -650, -650, -650, -650, 827, 828, 829, -650, -650, -650, + -650, -650, -650, 837, -650, -650, 151, -650, 177, 387, + 840, 842, -650, 180, 387, -50, -650, -650, -650, 387, + 845, 387, 847, 387, -650, 387, 387, 852, 387, -650, + -650, -650, 850, -650, 851, -650, -650, -650, 853, -650, + 387, 387, 387, -650, -650, -650 }; /* YYPGOTO[NTERM-NUM]. */ static const grib_yytype_int16 grib_yypgoto[] = { - -588, -588, 8, -588, 220, 0, -588, -587, -12, -262, - -161, -588, -588, -588, -382, 145, -81, 103, -588, 444, - -588, -588, -588, -588, -172, 702, -588, -588, 336, -588, - -73, -298, -588, -72, -99, 798, 106, 94, 128, -134, - 659, -588, -37, -588, 6, 424, -588, -588, 861 + -650, -650, 8, -650, 642, 0, -650, -649, 525, -306, + -189, -650, -650, -650, -441, 159, -53, 191, -650, 428, + -650, -650, -650, -650, -278, 704, -650, -650, 318, -650, + -73, -349, -650, -91, -141, 832, 46, 88, 67, -163, + 682, -650, -51, -650, 13, 398, -650, -650, 898 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1186,318 +1251,364 @@ static const grib_yytype_int16 grib_yypgoto[] = #define YYTABLE_NINF -9 static const grib_yytype_int16 grib_yytable[] = { - 67, 499, 402, 194, 259, 197, 83, 198, 66, 178, - 674, 42, 449, 450, 297, 87, 214, 454, 709, 178, - 178, 219, 496, 497, 496, 497, 131, 132, 133, 301, - 302, 303, 496, 497, 613, 217, 690, 182, 304, 211, - 218, 195, 196, 92, 137, 262, 199, 183, 145, 305, - 201, 202, 134, 135, 489, 88, 338, 301, 302, 303, - 403, 140, 691, 309, 216, 358, 304, 89, 189, 310, - 363, 353, 354, 267, 268, 243, 42, 305, 675, 124, - 807, 601, 208, 230, 246, 159, 125, 498, 83, 730, - 602, 554, 136, 126, 231, 211, 269, 270, 271, 137, - 127, 314, 145, 272, 212, 212, 261, 128, 273, 179, - 212, 199, 93, 138, 129, 139, 140, 141, 142, 317, - 628, 306, 96, 143, 312, 99, 100, 307, 211, 313, - 144, 191, 192, 63, 193, 94, 131, 132, 133, 298, - 483, 97, 308, 238, 487, 484, 419, 239, 540, 195, - 196, 451, 274, 275, 276, 277, 278, 279, 536, 490, - 101, 537, 134, 135, 491, 299, 404, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 191, 192, 63, 193, 145, 536, 102, 318, 541, - 212, 134, 135, 485, 494, 510, 663, 486, 332, 333, - 511, 664, 136, 669, 191, 192, 63, 193, 670, 137, - 386, 387, 345, 90, 95, 91, 676, 665, 145, 145, - 227, 228, 355, 138, 682, 139, 140, 141, 142, 683, - 754, 760, 145, 143, 399, 755, 761, 98, 137, 797, - 144, 392, 145, 556, 798, 799, 804, 211, 400, 566, - 800, 805, 105, 211, 139, 140, 141, 142, 468, 500, - 501, 145, 143, 436, 284, 103, 286, 104, 145, 144, - 235, 422, 106, 236, 237, 424, 425, 426, 210, 455, - 211, 108, 431, 432, 433, 194, 456, 308, 197, 240, - 194, 145, 241, 242, 492, 145, 145, 145, 493, 251, - 252, 107, 145, 145, 145, 191, 192, 63, 193, 678, - 679, 573, 109, 576, 585, 568, 334, 335, 671, 211, - 110, 592, 340, 191, 192, 63, 193, 191, 192, 63, - 193, 191, 192, 63, 193, 111, 717, 112, 570, 478, - 723, 113, 211, 114, 786, 397, 398, 212, 462, 463, - 115, 689, 191, 192, 63, 193, 496, 497, 116, 145, - 191, 192, 63, 193, 612, 791, 411, 412, 117, 118, - 119, 545, 405, 406, 407, 408, 409, 410, 555, 557, - 120, 559, 560, 561, 562, 121, 564, 122, 567, 569, - 571, 123, 574, 130, 158, 160, 131, 132, 133, 180, - 161, 581, 413, 414, 415, 416, 417, 418, 162, 163, - 676, 662, 164, 165, 166, 167, 168, 453, 668, 172, - 173, 174, 134, 135, 169, 531, 532, 533, 534, 535, - 170, 171, 175, 181, 176, 177, 184, 203, 384, 190, - 204, 205, 206, 207, 224, 145, 145, 145, 145, 145, - 209, 476, 215, 211, 220, 221, 480, 481, 553, 222, - 212, 558, 136, 624, 223, 225, 563, 212, 212, 137, - 212, 212, 212, 212, 226, 212, 229, 212, 212, 212, - 232, 212, 243, 138, 233, 139, 140, 141, 142, 234, - 212, 249, 652, 143, 247, 655, 248, 385, 658, 250, - 144, 623, 253, 254, 255, 280, 256, 257, 258, 260, - 264, 265, 194, 281, 282, 283, 287, 285, 266, 194, - 290, 288, 291, 292, 293, 289, 701, 294, 447, 448, - 182, 688, 295, 296, 300, 651, 316, 319, 651, 697, - 698, 311, 633, 315, 635, 320, 183, 758, 321, 322, - 323, 324, 212, 764, 644, 325, 646, 326, 648, 327, - 650, 328, 145, 654, 145, 656, 329, 330, 659, 331, - 336, 565, 339, 337, 145, 341, 145, 348, 145, 342, - 145, 212, 343, 145, 212, 145, 344, 212, 145, 194, - 586, 308, 588, 346, 347, 194, 349, 593, 686, 687, - 350, 351, 352, 356, 357, 359, 361, 362, 383, 393, - 388, 394, 395, 396, 421, 444, 693, 389, 145, 145, - 212, 609, 744, 745, 746, 747, 748, 749, 212, 212, - 751, 390, 391, 401, 753, 727, 728, 423, 427, 428, - 429, 430, 442, 306, 434, 435, 437, 438, 625, 439, - 440, 441, 452, 309, 488, 459, 307, 310, 634, 460, - 636, 457, 638, 639, 640, 641, 458, 643, 461, 464, - 645, 465, 647, 466, 649, 467, 469, 653, 470, 471, - 472, 657, 473, 474, 660, 194, 475, 477, 479, 495, - 482, 194, 503, 504, 505, 506, 507, 539, 512, 508, - 509, 513, 514, 516, 518, 131, 132, 133, 301, 302, - 303, 212, 212, 212, 212, 212, 212, 304, 515, 212, - 694, 695, 696, 212, 517, 519, 520, 700, 305, 521, - 522, 134, 135, 523, 524, 525, 526, 769, 771, 538, - 527, 528, 772, 773, 578, 544, 530, 582, 529, 131, - 132, 133, 542, 543, 546, 710, 547, 548, 712, 577, - 580, 714, 579, 584, 599, 587, 583, 589, 720, 590, - 591, 136, 595, 596, 726, 134, 135, 603, 137, 604, - 608, 605, 606, 607, 613, 610, 616, 622, 629, 702, - 611, 736, 138, 617, 139, 140, 141, 142, 618, 619, - 740, 741, 143, 626, 620, 621, 631, 661, 729, 144, - 627, 666, 667, 632, 637, 136, 752, 642, 684, 672, - 756, 364, 137, 673, 677, 680, 762, 681, 685, 703, - 699, 716, 708, 704, 705, 706, 138, 707, 139, 140, - 141, 142, 711, 713, 715, 718, 143, 774, 775, 776, - 777, 778, 779, 144, 781, 719, 782, 365, 784, 721, - 722, 725, 724, 734, 789, 731, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 732, - 379, 380, 733, 735, 737, 738, 739, 742, 743, 801, - 750, 757, 759, 763, 806, 765, 780, 783, 793, 808, - 785, 810, 766, 812, 767, 813, 814, 768, 816, 787, - 792, 788, 790, 796, 794, 795, 802, 803, 809, 811, - 820, 821, 822, 185, 3, 815, 817, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 818, 819, 594, - 420, 360, 263, 200, 14, 15, 16, 17, 18, 19, - 692, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 0, 30, 31, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, - 0, 0, 0, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 0, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 0, 54, 55, 56, 57, 58, - 59, 0, 0, 60, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, - 187, 0, 0, -8, 1, 0, 0, 2, 3, 0, - 770, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 0, 0, 0, 0, 0, 0, 0, 14, 15, - 16, 17, 18, 19, 0, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 0, 30, 31, 0, 0, - 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 0, 54, - 55, 56, 57, 58, 59, 185, 3, 60, 0, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, - 0, 61, 62, 63, 64, 0, 14, 15, 16, 17, - 18, 19, 0, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 0, 30, 31, 0, 0, 32, 0, + 82, 227, 560, 462, 418, 304, 509, 510, 81, 423, + 737, 514, 208, 98, 57, 154, 342, 102, 224, 346, + 347, 348, 155, 228, 772, 167, 557, 558, 208, 208, + 557, 558, 675, 307, 753, 103, 557, 558, 164, 165, + 212, 463, 170, 349, 221, 222, 78, 223, 317, 229, + 213, 231, 232, 318, 350, 275, 544, 548, 383, 244, + 754, 545, 104, 175, 249, 246, 276, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 288, 738, 219, 107, 167, 870, 663, 413, 414, + 793, 559, 221, 222, 78, 223, 664, 108, 225, 226, + 291, 169, 170, 171, 172, 555, 156, 57, 158, 173, + 98, 550, 354, 157, 110, 159, 174, 175, 355, 242, + 242, 109, 306, 312, 313, 242, 111, 209, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 229, 362, 690, 247, 314, 315, 316, 241, + 248, 161, 162, 163, 112, 343, 357, 601, 353, 359, + 241, 358, 479, 280, 114, 115, 281, 282, 511, 464, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 161, 162, 163, 346, 347, 348, + 272, 273, 164, 165, 221, 222, 78, 223, 113, 221, + 222, 78, 223, 221, 222, 78, 223, 728, 444, 551, + 597, 349, 734, 598, 552, 175, 780, 283, 363, 739, + 242, 284, 350, 225, 226, 164, 165, 221, 222, 78, + 223, 117, 166, 221, 222, 78, 223, 116, 571, 167, + 786, 446, 447, 572, 120, 726, 849, 732, 175, 175, + 727, 121, 733, 168, 745, 169, 170, 171, 172, 746, + 546, 817, 122, 173, 547, 166, 818, 445, 823, 647, + 174, 553, 167, 824, 175, 554, 654, 175, 860, 221, + 222, 78, 223, 861, 296, 297, 168, 175, 169, 170, + 171, 172, 854, 105, 496, 106, 173, 161, 162, 163, + 346, 347, 348, 174, 862, 597, 175, 867, 602, 863, + 515, 615, 868, 175, 151, 241, 285, 516, 353, 286, + 287, 617, 627, 629, 349, 241, 241, 241, 632, 227, + 123, 528, 241, 457, 458, 350, 175, 124, 164, 165, + 175, 175, 175, 125, 635, 224, 638, 175, 175, 175, + 224, 319, 320, 321, 322, 323, 324, 465, 466, 467, + 468, 469, 470, 118, 240, 119, 241, 725, 126, 752, + 221, 222, 78, 223, 731, 522, 523, 135, 166, 561, + 562, 127, 329, 128, 331, 167, 473, 474, 475, 476, + 477, 478, 242, 557, 558, 741, 742, 674, 129, 168, + 130, 169, 170, 171, 172, 471, 472, 351, 131, 173, + 132, 133, 134, 352, 739, 136, 174, 137, 140, 175, + 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 152, 153, 379, 380, 214, 160, 190, 191, + 385, 192, 188, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 189, 193, 606, + 194, 195, 196, 197, 202, 198, 616, 618, 203, 620, + 621, 622, 623, 199, 625, 200, 628, 630, 631, 633, + 201, 636, 204, 205, 206, 207, 220, 233, 210, 211, + 643, 234, 235, 236, 237, 241, 239, 245, 250, 251, + 267, 268, 270, 271, 821, 175, 175, 175, 175, 175, + 827, 266, 161, 162, 163, 269, 279, 274, 614, 277, + 242, 619, 278, 292, 288, 293, 624, 242, 242, 294, + 242, 242, 242, 242, 295, 242, 298, 242, 242, 242, + 242, 299, 242, 300, 301, 302, 303, 305, 685, 309, + 513, 242, 686, 164, 165, 310, 311, 325, 327, 326, + 161, 162, 163, 328, 356, 330, 360, 364, 332, 335, + 336, 337, 333, 334, 224, 338, 365, 212, 339, 340, + 341, 224, 715, 714, 345, 718, 714, 361, 721, 507, + 213, 366, 367, 166, 368, 369, 370, 371, 372, 537, + 167, 164, 165, 373, 541, 542, 374, 375, 376, 381, + 384, 386, 382, 242, 168, 387, 169, 170, 171, 172, + 403, 751, 404, 175, 173, 175, 406, 407, 408, 760, + 761, 174, 424, 409, 238, 175, 410, 175, 411, 353, + 175, 166, 175, 242, 412, 175, 242, 175, 167, 242, + 175, 416, 224, 417, 419, 421, 422, 453, 224, 443, + 502, 448, 168, 454, 169, 170, 171, 172, 449, 450, + 451, 455, 173, 459, 456, 461, 481, 483, 756, 174, + 175, 175, 242, 425, 790, 791, 487, 488, 489, 490, + 242, 242, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 494, 439, 440, 495, 497, + 498, 499, 500, 807, 808, 809, 810, 811, 812, 626, + 501, 814, 504, 512, 351, 816, 352, 355, 517, 518, + 354, 519, 344, 520, 525, 524, 527, 521, 529, 648, + 526, 650, 530, 531, 532, 533, 655, 535, 224, 534, + 536, 538, 543, 540, 224, 549, 564, 565, 556, 566, + 567, 569, 600, 667, 675, 377, 378, 570, 574, 568, + 671, 573, 575, 577, 242, 242, 242, 242, 242, 242, + 576, 578, 242, 579, 580, 581, 242, 582, 583, 584, + 585, 402, 586, 587, 405, 588, 589, 687, 603, 640, + 832, 834, 591, 590, 415, 835, 836, 696, 599, 698, + 604, 700, 701, 702, 703, 605, 705, 607, 608, 707, + 609, 709, 710, 452, 712, 639, 642, 716, 641, 644, + 460, 720, 645, 646, 723, 649, 651, 652, 653, 657, + 658, 161, 162, 163, 665, 666, 661, 668, 669, 678, + 764, 670, 684, 482, 740, 672, 673, 484, 485, 486, + 679, 680, 681, 682, 491, 492, 493, 683, 688, 689, + 757, 758, 759, 691, 161, 162, 163, 763, 693, 694, + 699, 704, 164, 165, 724, 161, 162, 163, 729, 730, + 765, 735, 736, 747, 748, 743, 744, 762, 766, 792, + 767, 768, 769, 770, 779, 794, 773, 771, 774, 775, + 776, 778, 777, 781, 784, 164, 165, 782, 785, 783, + 787, 788, 166, 795, 796, 789, 164, 165, 802, 167, + 800, 801, 797, 798, 820, 813, 539, 805, 806, 822, + 826, 828, 799, 168, 843, 169, 170, 171, 172, 829, + 830, 803, 804, 634, 846, 166, 831, 848, 850, 851, + 174, 853, 167, 856, 857, 858, 166, 815, 872, 859, + 874, 819, 865, 167, 866, 878, 168, 825, 169, 170, + 171, 172, 880, 881, 656, 882, 637, 855, 420, 169, + 170, 171, 172, 174, 755, 230, 508, 173, 837, 838, + 839, 840, 841, 842, 174, 844, 308, 845, 480, 847, + 692, 0, 0, 0, 0, 852, 0, 0, 0, 0, + 0, 0, 592, 593, 594, 595, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 0, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 0, 54, 55, 56, - 57, 58, 59, 0, 0, 60, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, - 0, 0, 187, 0, 188, 185, 3, 0, 0, 4, + 864, 0, 0, 0, 0, 869, 0, 0, 0, 0, + 871, 0, 873, 0, 875, 0, 876, 877, 0, 879, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 883, 884, 885, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 695, 0, 697, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 706, 0, 708, 0, 0, 711, 0, 713, + 0, 0, 717, 0, 719, 0, 0, 722, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 215, 3, + 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 0, 0, 0, 0, 0, 749, 750, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 0, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 0, 45, 46, 0, 0, 47, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 0, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 0, 69, 70, 71, 72, 73, + 74, 0, 0, 75, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 216, 0, 0, + 217, 0, 0, -8, 1, 0, 0, 2, 3, 0, + 833, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 0, 0, 0, 0, 0, 0, 0, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 0, 45, 46, 0, 0, 47, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 0, 69, 70, 71, 72, 73, 74, + 215, 3, 75, 0, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 0, 0, 76, 77, 78, 79, + 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 0, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 0, 45, 46, 0, 0, 47, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 0, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 0, 69, 70, 71, + 72, 73, 74, 0, 0, 75, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, + 0, 0, 217, 0, 218, 215, 3, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, - 18, 19, 0, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 0, 30, 31, 0, 0, 32, 0, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 0, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 0, 45, + 46, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 0, 54, 55, 56, - 57, 58, 59, 185, 3, 60, 0, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 0, 0, 549, - 0, 0, 187, 0, 14, 15, 16, 17, 18, 19, - 0, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 0, 30, 31, 0, 0, 32, 0, 0, 0, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 0, 69, 70, 71, 72, 73, 74, 215, 3, + 75, 0, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 0, 0, 610, 0, 0, 217, 0, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 0, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 0, 45, 46, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 0, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 0, 54, 55, 56, 57, 58, - 59, 0, 0, 60, 131, 132, 133, 0, 0, 0, - 0, 0, 0, 131, 132, 133, 0, 186, 0, 0, - 187, 0, 0, 0, 131, 132, 133, 0, 0, 0, - 134, 135, 0, 0, 0, 0, 0, 0, 0, 134, - 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 134, 135, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 136, 0, 0, 0, 0, 0, 0, 137, 0, 136, - 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, - 136, 138, 0, 139, 140, 141, 142, 137, 0, 0, - 138, 572, 139, 140, 141, 142, 0, 0, 144, 0, - 575, 0, 0, 139, 140, 141, 142, 144, 0, 0, - 0, 143, 0, 0, 0, 0, 0, 0, 144 + 0, 0, 0, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 0, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 0, 69, 70, 71, 72, 73, + 74, 0, 0, 75, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 216, 0, 0, + 217 }; static const grib_yytype_int16 grib_yycheck[] = { - 0, 383, 264, 76, 138, 77, 0, 4, 0, 18, - 597, 73, 310, 311, 175, 116, 97, 315, 65, 18, - 18, 102, 65, 66, 65, 66, 19, 20, 21, 22, - 23, 24, 65, 66, 93, 114, 95, 108, 31, 118, - 119, 108, 109, 108, 92, 144, 108, 118, 40, 42, - 87, 88, 45, 46, 121, 116, 217, 22, 23, 24, - 108, 109, 121, 114, 101, 237, 31, 116, 68, 120, - 242, 232, 233, 102, 103, 122, 73, 42, 121, 109, - 121, 112, 94, 108, 121, 113, 116, 120, 82, 676, - 121, 114, 85, 109, 119, 118, 125, 126, 127, 92, - 116, 182, 94, 123, 96, 97, 143, 109, 128, 118, - 102, 108, 108, 106, 116, 108, 109, 110, 111, 118, - 118, 114, 108, 116, 114, 108, 109, 120, 118, 119, - 123, 108, 109, 110, 111, 116, 19, 20, 21, 176, - 112, 108, 179, 116, 121, 117, 280, 120, 446, 108, - 109, 312, 96, 97, 98, 99, 100, 101, 112, 112, - 116, 115, 45, 46, 117, 177, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 108, 109, 110, 111, 177, 112, 108, 188, 115, - 182, 45, 46, 116, 121, 112, 112, 120, 210, 211, - 117, 117, 85, 112, 108, 109, 110, 111, 117, 92, - 247, 248, 224, 114, 114, 116, 598, 121, 210, 211, - 118, 119, 234, 106, 112, 108, 109, 110, 111, 117, - 112, 112, 224, 116, 117, 117, 117, 114, 92, 112, - 123, 253, 234, 114, 117, 112, 112, 118, 260, 114, - 117, 117, 114, 118, 108, 109, 110, 111, 339, 110, - 111, 253, 116, 300, 161, 114, 163, 116, 260, 123, - 116, 283, 114, 119, 120, 287, 288, 289, 116, 316, - 118, 114, 294, 295, 296, 358, 323, 324, 360, 116, - 363, 283, 119, 120, 116, 287, 288, 289, 120, 108, - 109, 108, 294, 295, 296, 108, 109, 110, 111, 110, - 111, 472, 114, 474, 486, 114, 213, 214, 121, 118, - 108, 493, 219, 108, 109, 110, 111, 108, 109, 110, - 111, 108, 109, 110, 111, 108, 121, 108, 114, 351, - 121, 108, 118, 108, 121, 108, 109, 339, 108, 109, - 108, 613, 108, 109, 110, 111, 65, 66, 108, 351, - 108, 109, 110, 111, 525, 121, 272, 273, 108, 108, - 108, 452, 266, 267, 268, 269, 270, 271, 459, 460, - 108, 462, 463, 464, 465, 116, 467, 108, 469, 470, - 471, 108, 473, 108, 116, 108, 19, 20, 21, 118, - 108, 482, 274, 275, 276, 277, 278, 279, 114, 108, - 792, 583, 108, 108, 108, 108, 114, 314, 590, 108, - 108, 108, 45, 46, 114, 437, 438, 439, 440, 441, - 114, 114, 108, 118, 116, 116, 0, 108, 61, 113, - 110, 110, 109, 109, 116, 437, 438, 439, 440, 441, - 110, 348, 110, 118, 110, 110, 353, 354, 458, 110, - 452, 461, 85, 544, 110, 110, 466, 459, 460, 92, - 462, 463, 464, 465, 110, 467, 119, 469, 470, 471, - 118, 473, 122, 106, 118, 108, 109, 110, 111, 116, - 482, 110, 573, 116, 118, 576, 118, 120, 579, 110, - 123, 538, 116, 116, 116, 104, 116, 116, 116, 116, - 112, 107, 585, 105, 108, 116, 116, 110, 124, 592, - 110, 116, 110, 110, 110, 116, 6, 116, 113, 309, - 108, 612, 116, 116, 116, 572, 116, 118, 575, 620, - 621, 120, 554, 120, 556, 118, 118, 719, 118, 118, - 116, 118, 544, 725, 566, 117, 568, 117, 570, 117, - 572, 115, 554, 575, 556, 577, 117, 117, 580, 115, - 115, 468, 108, 117, 566, 115, 568, 108, 570, 117, - 572, 573, 115, 575, 576, 577, 115, 579, 580, 662, - 487, 628, 489, 115, 115, 668, 108, 494, 610, 611, - 108, 116, 108, 108, 108, 108, 108, 108, 117, 108, - 117, 108, 108, 108, 112, 108, 616, 117, 610, 611, - 612, 518, 703, 704, 705, 706, 707, 708, 620, 621, - 711, 117, 117, 117, 715, 672, 673, 115, 115, 115, - 115, 115, 110, 114, 117, 117, 116, 116, 545, 116, - 116, 116, 108, 114, 112, 108, 120, 120, 555, 108, - 557, 120, 559, 560, 561, 562, 120, 564, 120, 117, - 567, 108, 569, 120, 571, 115, 108, 574, 108, 108, - 108, 578, 117, 108, 581, 758, 108, 118, 108, 112, - 117, 764, 109, 109, 109, 109, 117, 121, 117, 112, - 112, 112, 112, 108, 108, 19, 20, 21, 22, 23, - 24, 703, 704, 705, 706, 707, 708, 31, 117, 711, - 617, 618, 619, 715, 117, 117, 117, 624, 42, 117, - 108, 45, 46, 108, 108, 108, 117, 737, 738, 118, - 117, 117, 742, 743, 108, 115, 117, 109, 120, 19, - 20, 21, 121, 121, 121, 652, 117, 117, 655, 116, - 116, 658, 117, 108, 113, 109, 120, 109, 665, 120, - 108, 85, 108, 108, 671, 45, 46, 109, 92, 109, - 117, 110, 110, 110, 93, 116, 120, 110, 121, 6, - 116, 688, 106, 117, 108, 109, 110, 111, 117, 117, - 697, 698, 116, 120, 117, 117, 121, 112, 6, 123, - 120, 112, 112, 121, 121, 85, 713, 121, 112, 118, - 717, 3, 92, 118, 113, 117, 723, 117, 112, 115, - 113, 108, 117, 115, 115, 115, 106, 115, 108, 109, - 110, 111, 117, 117, 117, 109, 116, 744, 745, 746, - 747, 748, 749, 123, 751, 120, 753, 39, 755, 108, - 108, 120, 109, 117, 761, 110, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 110, - 62, 63, 110, 117, 122, 122, 121, 120, 120, 786, - 116, 112, 112, 112, 791, 120, 108, 108, 121, 796, - 108, 798, 117, 800, 117, 802, 803, 117, 805, 108, - 765, 108, 108, 117, 121, 121, 117, 117, 108, 108, - 817, 818, 819, 4, 5, 108, 117, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 117, 117, 495, - 281, 239, 144, 82, 25, 26, 27, 28, 29, 30, - 614, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, -1, 43, 44, -1, -1, 47, -1, -1, -1, - -1, -1, -1, -1, -1, 551, -1, -1, -1, -1, - -1, -1, -1, 64, 65, 66, 67, 68, 69, 70, - 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, -1, 86, 87, 88, 89, 90, - 91, -1, -1, 94, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, - 111, -1, -1, 0, 1, -1, -1, 4, 5, -1, - 121, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, -1, -1, -1, -1, -1, -1, -1, 25, 26, - 27, 28, 29, 30, -1, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, -1, 43, 44, -1, -1, - 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, -1, 86, - 87, 88, 89, 90, 91, 4, 5, 94, -1, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, -1, - -1, 108, 109, 110, 111, -1, 25, 26, 27, 28, - 29, 30, -1, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, -1, 43, 44, -1, -1, 47, -1, + 0, 92, 443, 309, 282, 168, 355, 356, 0, 287, + 659, 360, 18, 0, 88, 124, 205, 131, 91, 22, + 23, 24, 131, 4, 80, 107, 80, 81, 18, 18, + 80, 81, 108, 174, 110, 131, 80, 81, 60, 61, + 123, 123, 124, 46, 123, 124, 125, 126, 138, 123, + 133, 102, 103, 143, 57, 123, 127, 136, 247, 112, + 136, 132, 131, 55, 117, 116, 134, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 137, 136, 83, 123, 107, 136, 127, 277, 278, + 739, 135, 123, 124, 125, 126, 136, 123, 123, 124, + 151, 123, 124, 125, 126, 136, 124, 88, 124, 131, + 97, 136, 129, 131, 129, 131, 138, 109, 135, 111, + 112, 131, 173, 117, 118, 117, 123, 133, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 123, 133, 133, 129, 140, 141, 142, 133, + 134, 19, 20, 21, 123, 206, 129, 506, 209, 212, + 133, 134, 325, 131, 123, 124, 134, 135, 357, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 19, 20, 21, 22, 23, 24, + 133, 134, 60, 61, 123, 124, 125, 126, 129, 123, + 124, 125, 126, 123, 124, 125, 126, 136, 76, 127, + 127, 46, 136, 130, 132, 207, 136, 131, 218, 660, + 212, 135, 57, 123, 124, 60, 61, 123, 124, 125, + 126, 123, 100, 123, 124, 125, 126, 131, 127, 107, + 136, 292, 293, 132, 123, 127, 136, 127, 240, 241, + 132, 123, 132, 121, 127, 123, 124, 125, 126, 132, + 131, 127, 123, 131, 135, 100, 132, 135, 127, 547, + 138, 131, 107, 132, 266, 135, 554, 269, 127, 123, + 124, 125, 126, 132, 123, 124, 121, 279, 123, 124, + 125, 126, 136, 129, 345, 131, 131, 19, 20, 21, + 22, 23, 24, 138, 127, 127, 298, 127, 130, 132, + 361, 129, 132, 305, 131, 133, 131, 368, 369, 134, + 135, 129, 129, 129, 46, 133, 133, 133, 129, 420, + 123, 384, 133, 123, 124, 57, 328, 123, 60, 61, + 332, 333, 334, 123, 533, 418, 535, 339, 340, 341, + 423, 111, 112, 113, 114, 115, 116, 311, 312, 313, + 314, 315, 316, 129, 131, 131, 133, 645, 123, 675, + 123, 124, 125, 126, 652, 123, 124, 129, 100, 125, + 126, 123, 191, 123, 193, 107, 319, 320, 321, 322, + 323, 324, 384, 80, 81, 125, 126, 586, 123, 121, + 123, 123, 124, 125, 126, 317, 318, 129, 123, 131, + 123, 123, 123, 135, 855, 129, 138, 123, 123, 411, + 129, 129, 123, 123, 123, 123, 123, 123, 123, 123, + 123, 123, 123, 123, 243, 244, 0, 123, 123, 123, + 249, 129, 131, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 128, 123, 512, + 123, 123, 123, 123, 123, 129, 519, 520, 123, 522, + 523, 524, 525, 129, 527, 129, 529, 530, 531, 532, + 129, 534, 123, 123, 131, 131, 128, 123, 133, 133, + 543, 125, 125, 124, 124, 133, 125, 125, 125, 125, + 125, 125, 125, 125, 782, 497, 498, 499, 500, 501, + 788, 129, 19, 20, 21, 131, 131, 134, 518, 133, + 512, 521, 133, 133, 137, 133, 526, 519, 520, 125, + 522, 523, 524, 525, 125, 527, 131, 529, 530, 531, + 532, 131, 534, 131, 131, 131, 131, 131, 599, 127, + 359, 543, 605, 60, 61, 122, 139, 119, 123, 120, + 19, 20, 21, 131, 135, 125, 135, 133, 131, 125, + 125, 125, 131, 131, 647, 125, 133, 123, 131, 131, + 131, 654, 635, 634, 131, 638, 637, 131, 641, 128, + 133, 133, 133, 100, 131, 133, 132, 132, 132, 408, + 107, 60, 61, 130, 413, 414, 132, 132, 130, 130, + 123, 130, 132, 605, 121, 132, 123, 124, 125, 126, + 130, 674, 130, 615, 131, 617, 130, 130, 123, 682, + 683, 138, 3, 123, 109, 627, 123, 629, 131, 690, + 632, 100, 634, 635, 123, 637, 638, 639, 107, 641, + 642, 123, 725, 123, 123, 123, 123, 123, 731, 132, + 125, 132, 121, 123, 123, 124, 125, 126, 132, 132, + 132, 123, 131, 132, 123, 132, 127, 130, 678, 138, + 672, 673, 674, 54, 735, 736, 130, 130, 130, 130, + 682, 683, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 132, 77, 78, 132, 131, + 131, 131, 131, 766, 767, 768, 769, 770, 771, 528, + 131, 774, 123, 123, 129, 778, 135, 135, 135, 135, + 129, 123, 207, 123, 123, 132, 130, 135, 123, 548, + 135, 550, 123, 130, 123, 123, 555, 123, 821, 132, + 123, 133, 132, 123, 827, 127, 124, 124, 127, 124, + 124, 127, 136, 125, 108, 240, 241, 127, 127, 132, + 579, 132, 127, 123, 766, 767, 768, 769, 770, 771, + 132, 132, 774, 123, 132, 132, 778, 132, 123, 123, + 123, 266, 123, 132, 269, 132, 132, 606, 136, 123, + 800, 801, 132, 135, 279, 805, 806, 616, 133, 618, + 136, 620, 621, 622, 623, 130, 625, 136, 132, 628, + 132, 630, 631, 298, 633, 131, 131, 636, 132, 124, + 305, 640, 135, 123, 643, 124, 124, 135, 123, 123, + 123, 19, 20, 21, 124, 124, 128, 125, 125, 135, + 6, 132, 125, 328, 128, 131, 131, 332, 333, 334, + 132, 132, 132, 132, 339, 340, 341, 132, 135, 135, + 679, 680, 681, 136, 19, 20, 21, 686, 136, 136, + 136, 136, 60, 61, 127, 19, 20, 21, 127, 127, + 6, 133, 133, 127, 127, 132, 132, 128, 130, 6, + 130, 130, 130, 130, 123, 125, 715, 132, 132, 718, + 132, 132, 721, 124, 123, 60, 61, 135, 123, 728, + 124, 135, 100, 125, 125, 734, 60, 61, 136, 107, + 137, 137, 132, 132, 127, 131, 411, 135, 135, 127, + 127, 135, 751, 121, 123, 123, 124, 125, 126, 132, + 132, 760, 761, 131, 123, 100, 132, 123, 123, 123, + 138, 123, 107, 136, 136, 136, 100, 776, 123, 132, + 123, 780, 132, 107, 132, 123, 121, 786, 123, 124, + 125, 126, 132, 132, 556, 132, 131, 828, 284, 123, + 124, 125, 126, 138, 676, 97, 354, 131, 807, 808, + 809, 810, 811, 812, 138, 814, 174, 816, 326, 818, + 612, -1, -1, -1, -1, 824, -1, -1, -1, -1, + -1, -1, 497, 498, 499, 500, 501, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 64, 65, 66, 67, 68, - 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, -1, 86, 87, 88, - 89, 90, 91, -1, -1, 94, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 108, - -1, -1, 111, -1, 113, 4, 5, -1, -1, 8, + 849, -1, -1, -1, -1, 854, -1, -1, -1, -1, + 859, -1, 861, -1, 863, -1, 865, 866, -1, 868, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 880, 881, 882, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 615, -1, 617, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 627, -1, 629, -1, -1, 632, -1, 634, + -1, -1, 637, -1, 639, -1, -1, 642, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4, 5, + -1, -1, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, -1, -1, -1, -1, -1, 672, 673, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, -1, 58, 59, -1, -1, 62, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, -1, 101, 102, 103, 104, 105, + 106, -1, -1, 109, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 123, -1, -1, + 126, -1, -1, 0, 1, -1, -1, 4, 5, -1, + 136, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, -1, -1, -1, -1, -1, -1, -1, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, -1, -1, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, -1, 101, 102, 103, 104, 105, 106, + 4, 5, 109, -1, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, -1, -1, 123, 124, 125, 126, + -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, -1, 58, 59, -1, -1, 62, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, -1, 101, 102, 103, + 104, 105, 106, -1, -1, 109, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, + -1, -1, 126, -1, 128, 4, 5, -1, -1, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, -1, -1, -1, -1, -1, -1, -1, 25, 26, 27, 28, - 29, 30, -1, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, -1, 43, 44, -1, -1, 47, -1, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, -1, 86, 87, 88, - 89, 90, 91, 4, 5, 94, -1, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, -1, -1, 108, - -1, -1, 111, -1, 25, 26, 27, 28, 29, 30, - -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, -1, 43, 44, -1, -1, 47, -1, -1, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, -1, 101, 102, 103, 104, 105, 106, 4, 5, + 109, -1, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, -1, -1, 123, -1, -1, 126, -1, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, -1, 58, 59, -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 64, 65, 66, 67, 68, 69, 70, - 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, -1, 86, 87, 88, 89, 90, - 91, -1, -1, 94, 19, 20, 21, -1, -1, -1, - -1, -1, -1, 19, 20, 21, -1, 108, -1, -1, - 111, -1, -1, -1, 19, 20, 21, -1, -1, -1, - 45, 46, -1, -1, -1, -1, -1, -1, -1, 45, - 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 85, -1, -1, -1, -1, -1, -1, 92, -1, 85, - -1, -1, -1, -1, -1, -1, 92, -1, -1, -1, - 85, 106, -1, 108, 109, 110, 111, 92, -1, -1, - 106, 116, 108, 109, 110, 111, -1, -1, 123, -1, - 116, -1, -1, 108, 109, 110, 111, 123, -1, -1, - -1, 116, -1, -1, -1, -1, -1, -1, 123 + -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, -1, 101, 102, 103, 104, 105, + 106, -1, -1, 109, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 123, -1, -1, + 126 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1506,87 +1617,93 @@ static const grib_yytype_uint8 grib_yystos[] = { 0, 1, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 25, 26, 27, 28, 29, 30, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 43, 44, 47, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, - 94, 108, 109, 110, 111, 130, 131, 134, 135, 140, - 141, 142, 149, 150, 151, 152, 153, 154, 155, 158, - 159, 162, 172, 173, 175, 176, 177, 116, 116, 116, - 114, 116, 108, 108, 116, 114, 108, 108, 114, 108, - 109, 116, 108, 114, 116, 114, 114, 108, 114, 114, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 116, 108, 108, 109, 116, 109, 116, 109, 116, - 108, 19, 20, 21, 45, 46, 85, 92, 106, 108, - 109, 110, 111, 116, 123, 131, 137, 138, 139, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 116, 113, - 108, 108, 114, 108, 108, 108, 108, 108, 114, 114, - 114, 114, 108, 108, 108, 108, 116, 116, 18, 118, - 118, 118, 108, 118, 0, 4, 108, 111, 113, 134, - 113, 108, 109, 111, 159, 108, 109, 162, 4, 108, - 177, 171, 171, 108, 110, 110, 109, 109, 137, 110, - 116, 118, 131, 145, 145, 110, 171, 114, 119, 145, - 110, 110, 110, 110, 116, 110, 110, 118, 119, 119, - 108, 119, 118, 118, 116, 116, 119, 120, 116, 120, - 116, 119, 120, 122, 131, 146, 171, 118, 118, 110, - 110, 108, 109, 116, 116, 116, 116, 116, 116, 168, - 116, 171, 163, 164, 112, 107, 124, 102, 103, 125, - 126, 127, 123, 128, 96, 97, 98, 99, 100, 101, - 104, 105, 108, 116, 146, 110, 146, 116, 116, 116, - 110, 110, 110, 110, 116, 116, 116, 139, 171, 137, - 116, 22, 23, 24, 31, 42, 114, 120, 171, 114, - 120, 120, 114, 119, 145, 120, 116, 118, 134, 118, - 118, 118, 118, 116, 118, 117, 117, 117, 115, 117, - 117, 115, 137, 137, 146, 146, 115, 117, 139, 108, - 146, 115, 117, 115, 115, 137, 115, 115, 108, 108, - 108, 116, 108, 139, 139, 137, 108, 108, 153, 108, - 154, 108, 108, 153, 3, 39, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, - 63, 147, 148, 117, 61, 120, 171, 171, 117, 117, - 117, 117, 137, 108, 108, 108, 108, 108, 109, 117, - 137, 117, 138, 108, 163, 165, 165, 165, 165, 165, - 165, 166, 166, 167, 167, 167, 167, 167, 167, 168, - 169, 112, 137, 115, 137, 137, 137, 115, 115, 115, - 115, 137, 137, 137, 117, 117, 171, 116, 116, 116, - 116, 116, 110, 133, 108, 160, 161, 113, 133, 160, - 160, 139, 108, 146, 160, 171, 171, 120, 120, 108, - 108, 120, 108, 109, 117, 108, 120, 115, 145, 108, - 108, 108, 108, 117, 108, 108, 146, 118, 137, 108, - 146, 146, 117, 112, 117, 116, 120, 121, 112, 121, - 112, 117, 116, 120, 121, 112, 65, 66, 120, 143, - 110, 111, 132, 109, 109, 109, 109, 117, 112, 112, - 112, 117, 117, 112, 112, 117, 108, 117, 108, 117, - 117, 117, 108, 108, 108, 108, 117, 117, 117, 120, - 117, 137, 137, 137, 137, 137, 112, 115, 118, 121, - 160, 115, 121, 121, 115, 145, 121, 117, 117, 108, - 134, 173, 174, 134, 114, 145, 114, 145, 134, 145, - 145, 145, 145, 134, 145, 146, 114, 145, 114, 145, - 114, 145, 116, 139, 145, 116, 139, 116, 108, 117, - 116, 145, 109, 120, 108, 153, 146, 109, 146, 109, - 120, 108, 153, 146, 148, 108, 108, 143, 144, 113, - 136, 112, 121, 109, 109, 110, 110, 110, 117, 146, - 116, 116, 139, 93, 156, 157, 120, 117, 117, 117, - 117, 117, 110, 171, 145, 146, 120, 120, 118, 121, - 174, 121, 121, 137, 146, 137, 146, 121, 146, 146, - 146, 146, 121, 146, 137, 146, 137, 146, 137, 146, - 137, 171, 145, 146, 137, 145, 137, 146, 145, 137, - 146, 112, 153, 112, 117, 121, 112, 112, 153, 112, - 117, 121, 118, 118, 136, 121, 143, 113, 110, 111, - 117, 117, 112, 117, 112, 112, 137, 137, 145, 138, - 95, 121, 157, 134, 146, 146, 146, 145, 145, 113, - 146, 6, 6, 115, 115, 115, 115, 115, 117, 65, - 146, 117, 146, 117, 146, 117, 108, 121, 109, 120, - 146, 108, 108, 121, 109, 120, 146, 171, 171, 6, - 136, 110, 110, 110, 117, 117, 146, 122, 122, 121, - 146, 146, 120, 120, 145, 145, 145, 145, 145, 145, - 116, 145, 146, 145, 112, 117, 146, 112, 153, 112, - 112, 117, 146, 112, 153, 120, 117, 117, 117, 134, - 121, 134, 134, 134, 146, 146, 146, 146, 146, 146, - 108, 146, 146, 108, 146, 108, 121, 108, 108, 146, - 108, 121, 144, 121, 121, 121, 117, 112, 117, 112, - 117, 146, 117, 117, 112, 117, 146, 121, 146, 108, - 146, 108, 146, 146, 146, 108, 146, 117, 117, 117, - 146, 146, 146 + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 58, 59, 62, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, + 102, 103, 104, 105, 106, 109, 123, 124, 125, 126, + 145, 146, 149, 150, 155, 156, 157, 164, 165, 166, + 167, 168, 169, 170, 173, 174, 177, 187, 188, 190, + 191, 192, 131, 131, 131, 129, 131, 123, 123, 131, + 129, 123, 123, 129, 123, 124, 131, 123, 129, 131, + 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 123, 123, 123, 123, 123, 129, 129, 123, 129, 129, + 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 123, 131, 123, 123, 124, 131, 124, 131, 124, 131, + 123, 19, 20, 21, 60, 61, 100, 107, 121, 123, + 124, 125, 126, 131, 138, 146, 152, 153, 154, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 131, 128, + 123, 123, 129, 123, 123, 123, 123, 123, 129, 129, + 129, 129, 123, 123, 123, 123, 131, 131, 18, 133, + 133, 133, 123, 133, 0, 4, 123, 126, 128, 149, + 128, 123, 124, 126, 174, 123, 124, 177, 4, 123, + 192, 186, 186, 123, 125, 125, 124, 124, 152, 125, + 131, 133, 146, 160, 160, 125, 186, 129, 134, 160, + 125, 125, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 129, 125, 125, 131, + 125, 125, 133, 134, 134, 123, 134, 133, 133, 131, + 131, 134, 135, 131, 135, 131, 134, 135, 137, 146, + 161, 186, 133, 133, 125, 125, 123, 124, 131, 131, + 131, 131, 131, 131, 183, 131, 186, 178, 179, 127, + 122, 139, 117, 118, 140, 141, 142, 138, 143, 111, + 112, 113, 114, 115, 116, 119, 120, 123, 131, 161, + 125, 161, 131, 131, 131, 125, 125, 125, 125, 131, + 131, 131, 154, 186, 152, 131, 22, 23, 24, 46, + 57, 129, 135, 186, 129, 135, 135, 129, 134, 160, + 135, 131, 133, 149, 133, 133, 133, 133, 131, 133, + 132, 132, 132, 130, 132, 132, 130, 152, 152, 161, + 161, 130, 132, 154, 123, 161, 130, 132, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 152, 130, 130, 152, 130, 130, 123, 123, + 123, 131, 123, 154, 154, 152, 123, 123, 168, 123, + 169, 123, 123, 168, 3, 54, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, + 78, 162, 163, 132, 76, 135, 186, 186, 132, 132, + 132, 132, 152, 123, 123, 123, 123, 123, 124, 132, + 152, 132, 153, 123, 178, 180, 180, 180, 180, 180, + 180, 181, 181, 182, 182, 182, 182, 182, 182, 183, + 184, 127, 152, 130, 152, 152, 152, 130, 130, 130, + 130, 152, 152, 152, 132, 132, 186, 131, 131, 131, + 131, 131, 125, 148, 123, 175, 176, 128, 148, 175, + 175, 154, 123, 161, 175, 186, 186, 135, 135, 123, + 123, 135, 123, 124, 132, 123, 135, 130, 160, 123, + 123, 130, 123, 123, 132, 123, 123, 161, 133, 152, + 123, 161, 161, 132, 127, 132, 131, 135, 136, 127, + 136, 127, 132, 131, 135, 136, 127, 80, 81, 135, + 158, 125, 126, 147, 124, 124, 124, 124, 132, 127, + 127, 127, 132, 132, 127, 127, 132, 123, 132, 123, + 132, 132, 132, 123, 123, 123, 123, 132, 132, 132, + 135, 132, 152, 152, 152, 152, 152, 127, 130, 133, + 136, 175, 130, 136, 136, 130, 160, 136, 132, 132, + 123, 149, 188, 189, 149, 129, 160, 129, 160, 149, + 160, 160, 160, 160, 149, 160, 161, 129, 160, 129, + 160, 160, 129, 160, 131, 154, 160, 131, 154, 131, + 123, 132, 131, 160, 124, 135, 123, 168, 161, 124, + 161, 124, 135, 123, 168, 161, 163, 123, 123, 158, + 159, 128, 151, 127, 136, 124, 124, 125, 125, 125, + 132, 161, 131, 131, 154, 108, 171, 172, 135, 132, + 132, 132, 132, 132, 125, 186, 160, 161, 135, 135, + 133, 136, 189, 136, 136, 152, 161, 152, 161, 136, + 161, 161, 161, 161, 136, 161, 152, 161, 152, 161, + 161, 152, 161, 152, 186, 160, 161, 152, 160, 152, + 161, 160, 152, 161, 127, 168, 127, 132, 136, 127, + 127, 168, 127, 132, 136, 133, 133, 151, 136, 158, + 128, 125, 126, 132, 132, 127, 132, 127, 127, 152, + 152, 160, 153, 110, 136, 172, 149, 161, 161, 161, + 160, 160, 128, 161, 6, 6, 130, 130, 130, 130, + 130, 132, 80, 161, 132, 161, 132, 161, 132, 123, + 136, 124, 135, 161, 123, 123, 136, 124, 135, 161, + 186, 186, 6, 151, 125, 125, 125, 132, 132, 161, + 137, 137, 136, 161, 161, 135, 135, 160, 160, 160, + 160, 160, 160, 131, 160, 161, 160, 127, 132, 161, + 127, 168, 127, 127, 132, 161, 127, 168, 135, 132, + 132, 132, 149, 136, 149, 149, 149, 161, 161, 161, + 161, 161, 161, 123, 161, 161, 123, 161, 123, 136, + 123, 123, 161, 123, 136, 159, 136, 136, 136, 132, + 127, 132, 127, 132, 161, 132, 132, 127, 132, 161, + 136, 161, 123, 161, 123, 161, 161, 161, 123, 161, + 132, 132, 132, 161, 161, 161 }; #define grib_yyerrok (grib_yyerrstatus = 0) @@ -2400,7 +2517,7 @@ grib_yyreduce: case 2: /* Line 1455 of yacc.c */ -#line 237 "griby.y" +#line 258 "griby.y" { grib_parser_all_actions = 0;grib_parser_concept=0; grib_parser_hash_array=0;grib_parser_rules=0; } break; @@ -2408,35 +2525,35 @@ grib_yyreduce: case 3: /* Line 1455 of yacc.c */ -#line 239 "griby.y" +#line 260 "griby.y" { grib_parser_concept = reverse_concept((grib_yyvsp[(1) - (1)].concept_value)); } break; case 4: /* Line 1455 of yacc.c */ -#line 240 "griby.y" +#line 261 "griby.y" { grib_parser_hash_array = reverse_hash_array((grib_yyvsp[(1) - (1)].hash_array_value)); } break; case 5: /* Line 1455 of yacc.c */ -#line 241 "griby.y" +#line 262 "griby.y" { grib_parser_all_actions = (grib_yyvsp[(1) - (1)].act); } break; case 6: /* Line 1455 of yacc.c */ -#line 242 "griby.y" +#line 263 "griby.y" { grib_parser_rules = (grib_yyvsp[(1) - (1)].rules); } break; case 7: /* Line 1455 of yacc.c */ -#line 244 "griby.y" +#line 265 "griby.y" { grib_parser_all_actions = 0; grib_parser_concept=0; grib_parser_hash_array=0; grib_parser_rules=0; } break; @@ -2444,231 +2561,231 @@ grib_yyreduce: case 9: /* Line 1455 of yacc.c */ -#line 251 "griby.y" +#line 272 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(0,0,(grib_yyvsp[(1) - (1)].dval));} break; case 10: /* Line 1455 of yacc.c */ -#line 252 "griby.y" +#line 273 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(0,(grib_yyvsp[(1) - (3)].dvalue),(grib_yyvsp[(3) - (3)].dval));} break; case 11: /* Line 1455 of yacc.c */ -#line 253 "griby.y" +#line 274 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(0,0,(grib_yyvsp[(1) - (1)].lval));} break; case 12: /* Line 1455 of yacc.c */ -#line 254 "griby.y" +#line 275 "griby.y" { (grib_yyval.dvalue)=grib_darray_push(0,(grib_yyvsp[(1) - (3)].dvalue),(grib_yyvsp[(3) - (3)].lval));} break; case 13: /* Line 1455 of yacc.c */ -#line 257 "griby.y" +#line 278 "griby.y" { (grib_yyval.ivalue)=grib_iarray_push(0,(grib_yyvsp[(1) - (1)].lval));} break; case 14: /* Line 1455 of yacc.c */ -#line 258 "griby.y" +#line 279 "griby.y" { (grib_yyval.ivalue)=grib_iarray_push((grib_yyvsp[(1) - (3)].ivalue),(grib_yyvsp[(3) - (3)].lval));} break; case 16: /* Line 1455 of yacc.c */ -#line 262 "griby.y" +#line 283 "griby.y" { (grib_yyvsp[(1) - (2)].act)->next = (grib_yyvsp[(2) - (2)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (2)].act); } break; case 17: /* Line 1455 of yacc.c */ -#line 263 "griby.y" +#line 284 "griby.y" { (grib_yyvsp[(1) - (3)].act)->next = (grib_yyvsp[(3) - (3)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (3)].act); } break; case 18: /* Line 1455 of yacc.c */ -#line 264 "griby.y" +#line 285 "griby.y" { (grib_yyval.act) = (grib_yyvsp[(1) - (2)].act);} break; case 30: /* Line 1455 of yacc.c */ -#line 283 "griby.y" +#line 304 "griby.y" { (grib_yyval.explist) = 0; } break; case 33: /* Line 1455 of yacc.c */ -#line 288 "griby.y" +#line 309 "griby.y" { (grib_yyvsp[(1) - (3)].explist)->next = (grib_yyvsp[(3) - (3)].explist); (grib_yyval.explist) = (grib_yyvsp[(1) - (3)].explist); } break; case 34: /* Line 1455 of yacc.c */ -#line 291 "griby.y" +#line 312 "griby.y" { (grib_yyval.explist) = grib_arguments_new(grib_parser_context,(grib_yyvsp[(1) - (1)].exp),NULL); } break; case 35: /* Line 1455 of yacc.c */ -#line 296 "griby.y" +#line 317 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"unsigned",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 36: /* Line 1455 of yacc.c */ -#line 299 "griby.y" +#line 320 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"unsigned",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 37: /* Line 1455 of yacc.c */ -#line 302 "griby.y" +#line 323 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"unsigned_bits",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 38: /* Line 1455 of yacc.c */ -#line 305 "griby.y" +#line 326 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"unsigned_bits",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 39: /* Line 1455 of yacc.c */ -#line 308 "griby.y" +#line 329 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"ascii",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 40: /* Line 1455 of yacc.c */ -#line 311 "griby.y" +#line 332 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"group",0,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL); free((grib_yyvsp[(2) - (4)].str)); } break; case 41: /* Line 1455 of yacc.c */ -#line 314 "griby.y" +#line 335 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"group",0,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(2) - (7)].str)); } break; case 42: /* Line 1455 of yacc.c */ -#line 317 "griby.y" +#line 338 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (7)].str),"to_integer",0,(grib_yyvsp[(5) - (7)].explist),0,(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(1) - (7)].str)); } break; case 43: /* Line 1455 of yacc.c */ -#line 320 "griby.y" +#line 341 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (7)].str),"sexagesimal2decimal",0,(grib_yyvsp[(5) - (7)].explist),0,(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(1) - (7)].str)); } break; case 44: /* Line 1455 of yacc.c */ -#line 323 "griby.y" +#line 344 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (7)].str),"to_string",0,(grib_yyvsp[(5) - (7)].explist),0,(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(1) - (7)].str)); } break; case 45: /* Line 1455 of yacc.c */ -#line 326 "griby.y" +#line 347 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"non_alpha",0,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL); free((grib_yyvsp[(2) - (4)].str)); } break; case 46: /* Line 1455 of yacc.c */ -#line 330 "griby.y" +#line 351 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"ascii",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 47: /* Line 1455 of yacc.c */ -#line 333 "griby.y" +#line 354 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"bytes",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 48: /* Line 1455 of yacc.c */ -#line 336 "griby.y" +#line 357 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"bytes",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 49: /* Line 1455 of yacc.c */ -#line 339 "griby.y" +#line 360 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"ksec1expver",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 50: /* Line 1455 of yacc.c */ -#line 342 "griby.y" +#line 363 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"signed",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 51: /* Line 1455 of yacc.c */ -#line 345 "griby.y" +#line 366 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"signed",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 52: /* Line 1455 of yacc.c */ -#line 348 "griby.y" +#line 369 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (7)].str),"signed_bits",(grib_yyvsp[(3) - (7)].lval),NULL,(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(5) - (7)].str)); } break; case 53: /* Line 1455 of yacc.c */ -#line 351 "griby.y" +#line 372 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"signed_bits",(grib_yyvsp[(3) - (10)].lval),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 54: /* Line 1455 of yacc.c */ -#line 354 "griby.y" +#line 375 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"codetable",(grib_yyvsp[(3) - (8)].lval), (grib_yyvsp[(6) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL); free((grib_yyvsp[(5) - (8)].str)); } break; case 55: /* Line 1455 of yacc.c */ -#line 357 "griby.y" +#line 378 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (12)].str),"codetable",(grib_yyvsp[(3) - (12)].lval), (grib_yyvsp[(6) - (12)].explist),(grib_yyvsp[(7) - (12)].explist),(grib_yyvsp[(12) - (12)].lval),NULL,(grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(5) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); } break; @@ -2676,291 +2793,396 @@ grib_yyreduce: case 56: /* Line 1455 of yacc.c */ -#line 361 "griby.y" +#line 382 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"codetable",(grib_yyvsp[(3) - (10)].lval), (grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 57: /* Line 1455 of yacc.c */ -#line 364 "griby.y" +#line 385 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"smart_table",0,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(2) - (7)].str)); } break; case 58: /* Line 1455 of yacc.c */ -#line 367 "griby.y" +#line 388 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (8)].str),"dictionary",0,(grib_yyvsp[(5) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL); free((grib_yyvsp[(1) - (8)].str)); } break; case 59: /* Line 1455 of yacc.c */ -#line 370 "griby.y" +#line 391 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(1) - (8)].str),"getenv",0,(grib_yyvsp[(5) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL); free((grib_yyvsp[(1) - (8)].str)); } break; case 60: /* Line 1455 of yacc.c */ -#line 373 "griby.y" +#line 394 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"complex_codetable",(grib_yyvsp[(3) - (8)].lval), (grib_yyvsp[(6) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL); free((grib_yyvsp[(5) - (8)].str)); } break; case 61: /* Line 1455 of yacc.c */ -#line 376 "griby.y" +#line 397 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (10)].str),"complex_codetable",(grib_yyvsp[(3) - (10)].lval), (grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),NULL,NULL); free((grib_yyvsp[(5) - (10)].str)); } break; case 62: /* Line 1455 of yacc.c */ -#line 379 "griby.y" +#line 400 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"codeflag",(grib_yyvsp[(3) - (8)].lval), (grib_yyvsp[(6) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL,NULL); free((grib_yyvsp[(5) - (8)].str)); } break; case 63: /* Line 1455 of yacc.c */ -#line 382 "griby.y" +#line 403 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (9)].str),"lookup",(grib_yyvsp[(3) - (9)].lval),(grib_yyvsp[(7) - (9)].explist),NULL,(grib_yyvsp[(9) - (9)].lval),NULL,NULL); free((grib_yyvsp[(5) - (9)].str)); } break; case 64: /* Line 1455 of yacc.c */ -#line 385 "griby.y" +#line 406 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"bit",0,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(2) - (7)].str)); } break; case 65: /* Line 1455 of yacc.c */ -#line 388 "griby.y" +#line 409 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"label",0,NULL,NULL,0,NULL,NULL); free((grib_yyvsp[(2) - (2)].str)); } break; case 66: /* Line 1455 of yacc.c */ -#line 391 "griby.y" +#line 412 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"label",0,NULL,NULL,0,NULL,NULL); free((grib_yyvsp[(2) - (2)].str)); } break; case 67: /* Line 1455 of yacc.c */ -#line 394 "griby.y" +#line 415 "griby.y" { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"ibmfloat",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 68: /* Line 1455 of yacc.c */ -#line 397 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(4) - (6)].str),"ibmfloat",4,NULL,(grib_yyvsp[(5) - (6)].explist),(grib_yyvsp[(6) - (6)].lval),(grib_yyvsp[(2) - (6)].str),NULL);free((grib_yyvsp[(4) - (6)].str)); free((grib_yyvsp[(2) - (6)].str)); } +#line 419 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int8",1,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 69: /* Line 1455 of yacc.c */ -#line 400 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"ibmfloat",4,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);free((grib_yyvsp[(2) - (7)].str)); } +#line 422 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint8",1,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 70: /* Line 1455 of yacc.c */ -#line 403 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"position",0,NULL,NULL,0,NULL,NULL); free((grib_yyvsp[(2) - (2)].str)); } +#line 425 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int16",2,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 71: /* Line 1455 of yacc.c */ -#line 406 "griby.y" - { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"constant",0,(grib_yyvsp[(4) - (5)].explist),NULL,(grib_yyvsp[(5) - (5)].lval),NULL);free((grib_yyvsp[(2) - (5)].str)); } +#line 428 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint16",2,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 72: /* Line 1455 of yacc.c */ -#line 409 "griby.y" - { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"transient",0,(grib_yyvsp[(4) - (5)].explist),(grib_yyvsp[(4) - (5)].explist),(grib_yyvsp[(5) - (5)].lval),NULL); free((grib_yyvsp[(2) - (5)].str)); } +#line 431 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int16_little_endian",2,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 73: /* Line 1455 of yacc.c */ -#line 412 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"ieeefloat",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL); free((grib_yyvsp[(2) - (4)].str)); } +#line 434 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint16_little_endian",2,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 74: /* Line 1455 of yacc.c */ -#line 415 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(4) - (6)].str),"ieeefloat",4,NULL,(grib_yyvsp[(5) - (6)].explist),(grib_yyvsp[(6) - (6)].lval),(grib_yyvsp[(2) - (6)].str),NULL); free((grib_yyvsp[(4) - (6)].str));free((grib_yyvsp[(2) - (6)].str));} +#line 437 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int32",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 75: /* Line 1455 of yacc.c */ -#line 418 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"ieeefloat",4,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);free((grib_yyvsp[(2) - (7)].str)); } +#line 440 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint32",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 76: /* Line 1455 of yacc.c */ -#line 421 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"g1_half_byte_codeflag",0,NULL,NULL,0,NULL,NULL);free((grib_yyvsp[(2) - (2)].str)); } +#line 443 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int32_little_endian",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 77: /* Line 1455 of yacc.c */ -#line 424 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (5)].str),"section_length",(grib_yyvsp[(3) - (5)].lval),NULL,NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (5)].str)); } +#line 446 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint32_little_endian",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 78: /* Line 1455 of yacc.c */ -#line 427 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_message_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str)); } +#line 449 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int64",8,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 79: /* Line 1455 of yacc.c */ -#line 430 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_section4_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str)); } +#line 452 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint64",8,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 80: /* Line 1455 of yacc.c */ -#line 433 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"ksec",0,(grib_yyvsp[(3) - (3)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(2) - (3)].str)); } +#line 455 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"int64_little_endian",8,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 81: /* Line 1455 of yacc.c */ -#line 436 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"pad",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL); free((grib_yyvsp[(2) - (5)].str)); } +#line 458 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"uint64_little_endian",8,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL);free((grib_yyvsp[(2) - (4)].str)); } break; case 82: /* Line 1455 of yacc.c */ -#line 439 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padto",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL); free((grib_yyvsp[(2) - (5)].str)); } +#line 461 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"blob",0,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL); free((grib_yyvsp[(2) - (7)].str)); } break; case 83: /* Line 1455 of yacc.c */ -#line 442 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtoeven",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL); free((grib_yyvsp[(2) - (5)].str)); } +#line 465 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(4) - (6)].str),"ibmfloat",4,NULL,(grib_yyvsp[(5) - (6)].explist),(grib_yyvsp[(6) - (6)].lval),(grib_yyvsp[(2) - (6)].str),NULL);free((grib_yyvsp[(4) - (6)].str)); free((grib_yyvsp[(2) - (6)].str)); } break; case 84: /* Line 1455 of yacc.c */ -#line 445 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtomultiple",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL); free((grib_yyvsp[(2) - (5)].str)); } +#line 468 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"ibmfloat",4,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);free((grib_yyvsp[(2) - (7)].str)); } break; case 85: /* Line 1455 of yacc.c */ -#line 448 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (6)].str),"message",(grib_yyvsp[(3) - (6)].lval),0,0,(grib_yyvsp[(6) - (6)].lval),NULL,NULL); free((grib_yyvsp[(5) - (6)].str)); } +#line 471 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"position",0,NULL,NULL,0,NULL,NULL); free((grib_yyvsp[(2) - (2)].str)); } break; case 86: /* Line 1455 of yacc.c */ -#line 451 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"message_copy",0,0,0,(grib_yyvsp[(3) - (3)].lval),NULL,NULL); free((grib_yyvsp[(2) - (3)].str)); } +#line 474 "griby.y" + { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"constant",0,(grib_yyvsp[(4) - (5)].explist),NULL,(grib_yyvsp[(5) - (5)].lval),NULL);free((grib_yyvsp[(2) - (5)].str)); } break; case 87: /* Line 1455 of yacc.c */ -#line 454 "griby.y" - { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"section_padding",0,0,0,(grib_yyvsp[(3) - (3)].lval),NULL,NULL); free((grib_yyvsp[(2) - (3)].str)); } +#line 477 "griby.y" + { (grib_yyval.act) = grib_action_create_variable(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"transient",0,(grib_yyvsp[(4) - (5)].explist),(grib_yyvsp[(4) - (5)].explist),(grib_yyvsp[(5) - (5)].lval),NULL); free((grib_yyvsp[(2) - (5)].str)); } break; case 88: /* Line 1455 of yacc.c */ -#line 456 "griby.y" - { (grib_yyval.act) = grib_action_create_template(grib_parser_context,0,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));} +#line 480 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (4)].str),"ieeefloat",4,NULL,(grib_yyvsp[(3) - (4)].explist),(grib_yyvsp[(4) - (4)].lval),NULL,NULL); free((grib_yyvsp[(2) - (4)].str)); } break; case 89: /* Line 1455 of yacc.c */ -#line 458 "griby.y" - { (grib_yyval.act) = grib_action_create_template(grib_parser_context,1,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));} +#line 483 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(4) - (6)].str),"ieeefloat",4,NULL,(grib_yyvsp[(5) - (6)].explist),(grib_yyvsp[(6) - (6)].lval),(grib_yyvsp[(2) - (6)].str),NULL); free((grib_yyvsp[(4) - (6)].str));free((grib_yyvsp[(2) - (6)].str));} break; case 90: /* Line 1455 of yacc.c */ -#line 461 "griby.y" - { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (5)].str),(grib_yyvsp[(4) - (5)].str),NULL,(grib_yyvsp[(5) - (5)].lval)); free((grib_yyvsp[(2) - (5)].str)); free((grib_yyvsp[(4) - (5)].str)); } +#line 486 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (7)].str),"ieeefloat",4,(grib_yyvsp[(4) - (7)].explist),(grib_yyvsp[(6) - (7)].explist),(grib_yyvsp[(7) - (7)].lval),NULL,NULL);free((grib_yyvsp[(2) - (7)].str)); } break; case 91: /* Line 1455 of yacc.c */ -#line 464 "griby.y" - { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (2)].str),NULL,NULL,0); free((grib_yyvsp[(2) - (2)].str)); } +#line 489 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (2)].str),"g1_half_byte_codeflag",0,NULL,NULL,0,NULL,NULL);free((grib_yyvsp[(2) - (2)].str)); } break; case 92: /* Line 1455 of yacc.c */ -#line 467 "griby.y" - { - (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(4) - (7)].str),(grib_yyvsp[(6) - (7)].str),(grib_yyvsp[(2) - (7)].str),(grib_yyvsp[(7) - (7)].lval)); free((grib_yyvsp[(2) - (7)].str)); free((grib_yyvsp[(4) - (7)].str)); free((grib_yyvsp[(6) - (7)].str)); - } +#line 492 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (5)].str),"section_length",(grib_yyvsp[(3) - (5)].lval),NULL,NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (5)].str)); } break; case 93: /* Line 1455 of yacc.c */ -#line 471 "griby.y" - { - (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(4) - (4)].str),NULL,(grib_yyvsp[(2) - (4)].str),0); free((grib_yyvsp[(2) - (4)].str)); free((grib_yyvsp[(4) - (4)].str)); - } +#line 495 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_message_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str)); } break; case 94: /* Line 1455 of yacc.c */ -#line 475 "griby.y" - { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[(2) - (8)].str),(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL); free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(3) - (8)].str));} +#line 498 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_section4_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str)); } break; case 95: /* Line 1455 of yacc.c */ -#line 478 "griby.y" - { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(5) - (10)].str),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),(grib_yyvsp[(2) - (10)].str)); free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(5) - (10)].str));free((grib_yyvsp[(2) - (10)].str));} +#line 501 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"ksec",0,(grib_yyvsp[(3) - (3)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(2) - (3)].str)); } break; case 96: /* Line 1455 of yacc.c */ -#line 481 "griby.y" +#line 504 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"pad",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL); free((grib_yyvsp[(2) - (5)].str)); } + break; + + case 97: + +/* Line 1455 of yacc.c */ +#line 507 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padto",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL); free((grib_yyvsp[(2) - (5)].str)); } + break; + + case 98: + +/* Line 1455 of yacc.c */ +#line 510 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtoeven",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL); free((grib_yyvsp[(2) - (5)].str)); } + break; + + case 99: + +/* Line 1455 of yacc.c */ +#line 513 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtomultiple",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL); free((grib_yyvsp[(2) - (5)].str)); } + break; + + case 100: + +/* Line 1455 of yacc.c */ +#line 516 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (6)].str),"message",(grib_yyvsp[(3) - (6)].lval),0,0,(grib_yyvsp[(6) - (6)].lval),NULL,NULL); free((grib_yyvsp[(5) - (6)].str)); } + break; + + case 101: + +/* Line 1455 of yacc.c */ +#line 519 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"message_copy",0,0,0,(grib_yyvsp[(3) - (3)].lval),NULL,NULL); free((grib_yyvsp[(2) - (3)].str)); } + break; + + case 102: + +/* Line 1455 of yacc.c */ +#line 522 "griby.y" + { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"section_padding",0,0,0,(grib_yyvsp[(3) - (3)].lval),NULL,NULL); free((grib_yyvsp[(2) - (3)].str)); } + break; + + case 103: + +/* Line 1455 of yacc.c */ +#line 524 "griby.y" + { (grib_yyval.act) = grib_action_create_template(grib_parser_context,0,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));} + break; + + case 104: + +/* Line 1455 of yacc.c */ +#line 526 "griby.y" + { (grib_yyval.act) = grib_action_create_template(grib_parser_context,1,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));} + break; + + case 105: + +/* Line 1455 of yacc.c */ +#line 529 "griby.y" + { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (5)].str),(grib_yyvsp[(4) - (5)].str),NULL,(grib_yyvsp[(5) - (5)].lval)); free((grib_yyvsp[(2) - (5)].str)); free((grib_yyvsp[(4) - (5)].str)); } + break; + + case 106: + +/* Line 1455 of yacc.c */ +#line 532 "griby.y" + { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (2)].str),NULL,NULL,0); free((grib_yyvsp[(2) - (2)].str)); } + break; + + case 107: + +/* Line 1455 of yacc.c */ +#line 535 "griby.y" + { + (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(4) - (7)].str),(grib_yyvsp[(6) - (7)].str),(grib_yyvsp[(2) - (7)].str),(grib_yyvsp[(7) - (7)].lval)); free((grib_yyvsp[(2) - (7)].str)); free((grib_yyvsp[(4) - (7)].str)); free((grib_yyvsp[(6) - (7)].str)); + } + break; + + case 108: + +/* Line 1455 of yacc.c */ +#line 539 "griby.y" + { + (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(4) - (4)].str),NULL,(grib_yyvsp[(2) - (4)].str),0); free((grib_yyvsp[(2) - (4)].str)); free((grib_yyvsp[(4) - (4)].str)); + } + break; + + case 109: + +/* Line 1455 of yacc.c */ +#line 543 "griby.y" + { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[(2) - (8)].str),(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL); free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(3) - (8)].str));} + break; + + case 110: + +/* Line 1455 of yacc.c */ +#line 546 "griby.y" + { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(5) - (10)].str),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),(grib_yyvsp[(2) - (10)].str)); free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(5) - (10)].str));free((grib_yyvsp[(2) - (10)].str));} + break; + + case 111: + +/* Line 1455 of yacc.c */ +#line 549 "griby.y" { grib_arguments* a = grib_arguments_new( grib_parser_context, @@ -2974,10 +3196,10 @@ grib_yyreduce: } break; - case 97: + case 112: /* Line 1455 of yacc.c */ -#line 493 "griby.y" +#line 561 "griby.y" { grib_arguments* a = grib_arguments_new( grib_parser_context, @@ -2991,10 +3213,10 @@ grib_yyreduce: } break; - case 98: + case 113: /* Line 1455 of yacc.c */ -#line 505 "griby.y" +#line 573 "griby.y" { grib_arguments* a = grib_arguments_new( grib_parser_context, @@ -3008,947 +3230,947 @@ grib_yyreduce: } break; - case 99: - -/* Line 1455 of yacc.c */ -#line 517 "griby.y" - { (grib_yyval.act) = grib_action_create_put(grib_parser_context,(grib_yyvsp[(2) - (5)].str),(grib_yyvsp[(4) - (5)].explist));free((grib_yyvsp[(2) - (5)].str));} - break; - - case 100: - -/* Line 1455 of yacc.c */ -#line 520 "griby.y" - { (grib_yyval.act) = grib_action_create_remove(grib_parser_context,(grib_yyvsp[(2) - (2)].explist));} - break; - - case 101: - -/* Line 1455 of yacc.c */ -#line 522 "griby.y" - { (grib_yyval.act) = grib_action_create_rename(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].str));free((grib_yyvsp[(3) - (6)].str));free((grib_yyvsp[(5) - (6)].str));} - break; - - case 102: - -/* Line 1455 of yacc.c */ -#line 525 "griby.y" - { (grib_yyval.act) = grib_action_create_assert(grib_parser_context,(grib_yyvsp[(3) - (4)].exp));} - break; - - case 103: - -/* Line 1455 of yacc.c */ -#line 528 "griby.y" - { (grib_yyval.act) = grib_action_create_modify(grib_parser_context,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].lval)); free((grib_yyvsp[(2) - (3)].str));} - break; - - case 104: - -/* Line 1455 of yacc.c */ -#line 530 "griby.y" - { (grib_yyval.act) = grib_action_create_set_missing(grib_parser_context,(grib_yyvsp[(2) - (4)].str)); free((grib_yyvsp[(2) - (4)].str)); } - break; - - case 105: - -/* Line 1455 of yacc.c */ -#line 531 "griby.y" - { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),0); free((grib_yyvsp[(2) - (4)].str)); } - break; - - case 106: - -/* Line 1455 of yacc.c */ -#line 532 "griby.y" - { (grib_yyval.act) = grib_action_create_set_darray(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(5) - (6)].dvalue)); free((grib_yyvsp[(2) - (6)].str)); } - break; - - case 107: - -/* Line 1455 of yacc.c */ -#line 534 "griby.y" - { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),1); free((grib_yyvsp[(2) - (4)].str)); } - break; - - case 108: - -/* Line 1455 of yacc.c */ -#line 537 "griby.y" - { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(2) - (2)].str),0,0); free((grib_yyvsp[(2) - (2)].str));} - break; - - case 109: - -/* Line 1455 of yacc.c */ -#line 538 "griby.y" - { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,0); } - break; - - case 110: - -/* Line 1455 of yacc.c */ -#line 539 "griby.y" - { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(5) - (5)].str),0,(grib_yyvsp[(3) - (5)].lval)); free((grib_yyvsp[(5) - (5)].str));} - break; - - case 111: - -/* Line 1455 of yacc.c */ -#line 540 "griby.y" - { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,(grib_yyvsp[(3) - (4)].lval)); } - break; - - case 112: - -/* Line 1455 of yacc.c */ -#line 541 "griby.y" - { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(2) - (2)].str),1,0); free((grib_yyvsp[(2) - (2)].str));} - break; - - case 113: - -/* Line 1455 of yacc.c */ -#line 542 "griby.y" - { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,0); } - break; - case 114: /* Line 1455 of yacc.c */ -#line 543 "griby.y" - { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(5) - (5)].str),1,(grib_yyvsp[(3) - (5)].lval)); free((grib_yyvsp[(5) - (5)].str));} +#line 585 "griby.y" + { (grib_yyval.act) = grib_action_create_put(grib_parser_context,(grib_yyvsp[(2) - (5)].str),(grib_yyvsp[(4) - (5)].explist));free((grib_yyvsp[(2) - (5)].str));} break; case 115: /* Line 1455 of yacc.c */ -#line 544 "griby.y" - { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,(grib_yyvsp[(3) - (4)].lval)); } +#line 588 "griby.y" + { (grib_yyval.act) = grib_action_create_remove(grib_parser_context,(grib_yyvsp[(2) - (2)].explist));} break; case 116: /* Line 1455 of yacc.c */ -#line 546 "griby.y" - { (grib_yyval.act) = grib_action_create_close(grib_parser_context,(grib_yyvsp[(3) - (4)].str)); free((grib_yyvsp[(3) - (4)].str));} +#line 590 "griby.y" + { (grib_yyval.act) = grib_action_create_rename(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].str));free((grib_yyvsp[(3) - (6)].str));free((grib_yyvsp[(5) - (6)].str));} break; case 117: /* Line 1455 of yacc.c */ -#line 547 "griby.y" - { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(2) - (2)].str),0); free((grib_yyvsp[(2) - (2)].str)); } +#line 593 "griby.y" + { (grib_yyval.act) = grib_action_create_assert(grib_parser_context,(grib_yyvsp[(3) - (4)].exp));} break; case 118: /* Line 1455 of yacc.c */ -#line 548 "griby.y" - { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(5) - (5)].str),(grib_yyvsp[(3) - (5)].str)); free((grib_yyvsp[(5) - (5)].str)); free((grib_yyvsp[(3) - (5)].str));} +#line 596 "griby.y" + { (grib_yyval.act) = grib_action_create_modify(grib_parser_context,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].lval)); free((grib_yyvsp[(2) - (3)].str));} break; case 119: /* Line 1455 of yacc.c */ -#line 549 "griby.y" - { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(5) - (5)].str),(grib_yyvsp[(3) - (5)].str)); free((grib_yyvsp[(5) - (5)].str)); free((grib_yyvsp[(3) - (5)].str));} +#line 598 "griby.y" + { (grib_yyval.act) = grib_action_create_set_missing(grib_parser_context,(grib_yyvsp[(2) - (4)].str)); free((grib_yyvsp[(2) - (4)].str)); } break; case 120: /* Line 1455 of yacc.c */ -#line 550 "griby.y" - { (grib_yyval.act) = grib_action_create_print(grib_parser_context,"",0); } +#line 599 "griby.y" + { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),0); free((grib_yyvsp[(2) - (4)].str)); } break; case 121: /* Line 1455 of yacc.c */ -#line 554 "griby.y" - { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),0,0); } +#line 600 "griby.y" + { (grib_yyval.act) = grib_action_create_set_darray(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(5) - (6)].dvalue)); free((grib_yyvsp[(2) - (6)].str)); } break; case 122: /* Line 1455 of yacc.c */ -#line 555 "griby.y" - { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act),0); } +#line 602 "griby.y" + { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),1); free((grib_yyvsp[(2) - (4)].str)); } break; case 123: /* Line 1455 of yacc.c */ -#line 556 "griby.y" - { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),0,1); } +#line 605 "griby.y" + { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(2) - (2)].str),0,0); free((grib_yyvsp[(2) - (2)].str));} break; case 124: /* Line 1455 of yacc.c */ -#line 557 "griby.y" - { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act),1); } +#line 606 "griby.y" + { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,0); } break; case 125: /* Line 1455 of yacc.c */ -#line 561 "griby.y" - { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (6)].exp),(grib_yyvsp[(5) - (6)].act),NULL); } +#line 607 "griby.y" + { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(5) - (5)].str),0,(grib_yyvsp[(3) - (5)].lval)); free((grib_yyvsp[(5) - (5)].str));} break; case 126: /* Line 1455 of yacc.c */ -#line 562 "griby.y" - { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),NULL); } +#line 608 "griby.y" + { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,(grib_yyvsp[(3) - (4)].lval)); } break; case 127: /* Line 1455 of yacc.c */ -#line 563 "griby.y" - { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act)); } +#line 609 "griby.y" + { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(2) - (2)].str),1,0); free((grib_yyvsp[(2) - (2)].str));} break; case 128: /* Line 1455 of yacc.c */ -#line 566 "griby.y" - { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),0); free((grib_yyvsp[(2) - (4)].str)); } +#line 610 "griby.y" + { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,0); } break; case 129: /* Line 1455 of yacc.c */ -#line 567 "griby.y" - { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),1); free((grib_yyvsp[(2) - (4)].str)); } +#line 611 "griby.y" + { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(5) - (5)].str),1,(grib_yyvsp[(3) - (5)].lval)); free((grib_yyvsp[(5) - (5)].str));} + break; + + case 130: + +/* Line 1455 of yacc.c */ +#line 612 "griby.y" + { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,(grib_yyvsp[(3) - (4)].lval)); } break; case 131: /* Line 1455 of yacc.c */ -#line 571 "griby.y" - { (grib_yyvsp[(1) - (3)].act)->next = (grib_yyvsp[(2) - (3)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (3)].act); } +#line 614 "griby.y" + { (grib_yyval.act) = grib_action_create_close(grib_parser_context,(grib_yyvsp[(3) - (4)].str)); free((grib_yyvsp[(3) - (4)].str));} break; case 132: /* Line 1455 of yacc.c */ -#line 575 "griby.y" - { (grib_yyval.explist) = NULL ;} +#line 615 "griby.y" + { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(2) - (2)].str),0); free((grib_yyvsp[(2) - (2)].str)); } break; case 133: /* Line 1455 of yacc.c */ -#line 576 "griby.y" - { (grib_yyval.explist) = (grib_yyvsp[(2) - (2)].explist) ;} +#line 616 "griby.y" + { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(5) - (5)].str),(grib_yyvsp[(3) - (5)].str)); free((grib_yyvsp[(5) - (5)].str)); free((grib_yyvsp[(3) - (5)].str));} break; case 134: /* Line 1455 of yacc.c */ -#line 579 "griby.y" - { (grib_yyval.lval) = 0 ; } +#line 617 "griby.y" + { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(5) - (5)].str),(grib_yyvsp[(3) - (5)].str)); free((grib_yyvsp[(5) - (5)].str)); free((grib_yyvsp[(3) - (5)].str));} break; case 135: /* Line 1455 of yacc.c */ -#line 580 "griby.y" - { (grib_yyval.lval) = (grib_yyvsp[(2) - (2)].lval); } +#line 618 "griby.y" + { (grib_yyval.act) = grib_action_create_print(grib_parser_context,"",0); } + break; + + case 136: + +/* Line 1455 of yacc.c */ +#line 622 "griby.y" + { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),0,0); } break; case 137: /* Line 1455 of yacc.c */ -#line 584 "griby.y" - { (grib_yyval.lval) = (grib_yyvsp[(1) - (3)].lval) | (grib_yyvsp[(3) - (3)].lval); } +#line 623 "griby.y" + { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act),0); } break; case 138: /* Line 1455 of yacc.c */ -#line 587 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_READ_ONLY; } +#line 624 "griby.y" + { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),0,1); } break; case 139: /* Line 1455 of yacc.c */ -#line 588 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LOWERCASE; } +#line 625 "griby.y" + { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act),1); } break; case 140: /* Line 1455 of yacc.c */ -#line 589 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DUMP; } +#line 629 "griby.y" + { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (6)].exp),(grib_yyvsp[(5) - (6)].act),NULL); } break; case 141: /* Line 1455 of yacc.c */ -#line 590 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_JSON; } +#line 630 "griby.y" + { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),NULL); } break; case 142: /* Line 1455 of yacc.c */ -#line 591 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_XML; } +#line 631 "griby.y" + { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act)); } break; case 143: /* Line 1455 of yacc.c */ -#line 592 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_COPY; } +#line 634 "griby.y" + { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),0); free((grib_yyvsp[(2) - (4)].str)); } break; case 144: /* Line 1455 of yacc.c */ -#line 593 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_FAIL; } - break; - - case 145: - -/* Line 1455 of yacc.c */ -#line 594 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_HIDDEN; } +#line 635 "griby.y" + { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),1); free((grib_yyvsp[(2) - (4)].str)); } break; case 146: /* Line 1455 of yacc.c */ -#line 595 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; } +#line 639 "griby.y" + { (grib_yyvsp[(1) - (3)].act)->next = (grib_yyvsp[(2) - (3)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (3)].act); } break; case 147: /* Line 1455 of yacc.c */ -#line 596 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CAN_BE_MISSING; } +#line 643 "griby.y" + { (grib_yyval.explist) = NULL ;} break; case 148: /* Line 1455 of yacc.c */ -#line 597 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CONSTRAINT; } +#line 644 "griby.y" + { (grib_yyval.explist) = (grib_yyvsp[(2) - (2)].explist) ;} break; case 149: /* Line 1455 of yacc.c */ -#line 598 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_OVERRIDE; } +#line 647 "griby.y" + { (grib_yyval.lval) = 0 ; } break; case 150: /* Line 1455 of yacc.c */ -#line 599 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_COPY_OK; } - break; - - case 151: - -/* Line 1455 of yacc.c */ -#line 600 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_TRANSIENT; } +#line 648 "griby.y" + { (grib_yyval.lval) = (grib_yyvsp[(2) - (2)].lval); } break; case 152: /* Line 1455 of yacc.c */ -#line 601 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_STRING_TYPE; } +#line 652 "griby.y" + { (grib_yyval.lval) = (grib_yyvsp[(1) - (3)].lval) | (grib_yyvsp[(3) - (3)].lval); } break; case 153: /* Line 1455 of yacc.c */ -#line 602 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LONG_TYPE; } +#line 655 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_READ_ONLY; } break; case 154: /* Line 1455 of yacc.c */ -#line 603 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DOUBLE_TYPE; } +#line 656 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LOWERCASE; } break; case 155: /* Line 1455 of yacc.c */ -#line 606 "griby.y" - { (grib_yyval.act) = grib_action_create_list(grib_parser_context,(grib_yyvsp[(1) - (8)].str),(grib_yyvsp[(4) - (8)].exp),(grib_yyvsp[(7) - (8)].act)); free((grib_yyvsp[(1) - (8)].str)); } +#line 657 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DUMP; } break; case 156: /* Line 1455 of yacc.c */ -#line 609 "griby.y" - { (grib_yyval.act) = grib_action_create_while(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act)); } +#line 658 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_JSON; } break; case 157: /* Line 1455 of yacc.c */ -#line 612 "griby.y" - { (grib_yyval.act) = grib_action_create_trigger(grib_parser_context,(grib_yyvsp[(3) - (7)].explist),(grib_yyvsp[(6) - (7)].act)); } +#line 659 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_XML; } break; case 158: /* Line 1455 of yacc.c */ -#line 615 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].concept_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),0); free((grib_yyvsp[(2) - (6)].str)); } +#line 660 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_COPY; } break; case 159: /* Line 1455 of yacc.c */ -#line 616 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (9)].str),(grib_yyvsp[(7) - (9)].concept_value),0,0,(grib_yyvsp[(4) - (9)].str),0,0,0,(grib_yyvsp[(9) - (9)].lval),0); free((grib_yyvsp[(2) - (9)].str));free((grib_yyvsp[(4) - (9)].str)); } +#line 661 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_FAIL; } break; case 160: /* Line 1455 of yacc.c */ -#line 617 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),0); free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); } +#line 662 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_HIDDEN; } break; case 161: /* Line 1455 of yacc.c */ -#line 618 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (14)].str),0,(grib_yyvsp[(6) - (14)].str),0,(grib_yyvsp[(4) - (14)].str),(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),(grib_yyvsp[(14) - (14)].lval),0); free((grib_yyvsp[(2) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(10) - (14)].str));free((grib_yyvsp[(12) - (14)].str)); } +#line 663 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; } break; case 162: /* Line 1455 of yacc.c */ -#line 619 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (10)].str),0,(grib_yyvsp[(6) - (10)].str),0,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(8) - (10)].str),0,0,(grib_yyvsp[(10) - (10)].lval),0); free((grib_yyvsp[(2) - (10)].str));free((grib_yyvsp[(6) - (10)].str));free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(8) - (10)].str)); } +#line 664 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CAN_BE_MISSING; } break; case 163: /* Line 1455 of yacc.c */ -#line 620 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (14)].str),0,(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(2) - (14)].str),(grib_yyvsp[(6) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),0,(grib_yyvsp[(14) - (14)].lval),0); free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(10) - (14)].str)); free((grib_yyvsp[(12) - (14)].str)); free((grib_yyvsp[(2) - (14)].str));} +#line 665 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CONSTRAINT; } break; case 164: /* Line 1455 of yacc.c */ -#line 621 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (12)].str),0,(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(2) - (12)].str),(grib_yyvsp[(6) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,0,(grib_yyvsp[(12) - (12)].lval),0); free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(2) - (12)].str));} +#line 666 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_OVERRIDE; } break; case 165: /* Line 1455 of yacc.c */ -#line 622 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (8)].str),(grib_yyvsp[(6) - (8)].concept_value),0,(grib_yyvsp[(2) - (8)].str),0,0,0,0,(grib_yyvsp[(8) - (8)].lval),0); free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(4) - (8)].str)); } +#line 667 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_COPY_OK; } break; case 166: /* Line 1455 of yacc.c */ -#line 623 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (11)].str),(grib_yyvsp[(9) - (11)].concept_value),0,(grib_yyvsp[(2) - (11)].str),(grib_yyvsp[(6) - (11)].str),0,0,0,(grib_yyvsp[(11) - (11)].lval),0); free((grib_yyvsp[(2) - (11)].str));free((grib_yyvsp[(4) - (11)].str));free((grib_yyvsp[(6) - (11)].str)); } +#line 668 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_TRANSIENT; } break; case 167: /* Line 1455 of yacc.c */ -#line 624 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].concept_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),1); free((grib_yyvsp[(2) - (6)].str)); } +#line 669 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_STRING_TYPE; } break; case 168: /* Line 1455 of yacc.c */ -#line 625 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (9)].str),(grib_yyvsp[(7) - (9)].concept_value),0,0,(grib_yyvsp[(4) - (9)].str),0,0,0,(grib_yyvsp[(9) - (9)].lval),1); free((grib_yyvsp[(2) - (9)].str));free((grib_yyvsp[(4) - (9)].str)); } +#line 670 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LONG_TYPE; } break; case 169: /* Line 1455 of yacc.c */ -#line 626 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),1); free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); } +#line 671 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DOUBLE_TYPE; } break; case 170: /* Line 1455 of yacc.c */ -#line 627 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (10)].str),0,(grib_yyvsp[(6) - (10)].str),0,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(8) - (10)].str),0,0,(grib_yyvsp[(10) - (10)].lval),1); free((grib_yyvsp[(2) - (10)].str));free((grib_yyvsp[(6) - (10)].str));free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(8) - (10)].str)); } +#line 674 "griby.y" + { (grib_yyval.act) = grib_action_create_list(grib_parser_context,(grib_yyvsp[(1) - (8)].str),(grib_yyvsp[(4) - (8)].exp),(grib_yyvsp[(7) - (8)].act)); free((grib_yyvsp[(1) - (8)].str)); } break; case 171: /* Line 1455 of yacc.c */ -#line 628 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (14)].str),0,(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(2) - (14)].str),(grib_yyvsp[(6) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),0,(grib_yyvsp[(14) - (14)].lval),1); free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(10) - (14)].str));free((grib_yyvsp[(12) - (14)].str)); free((grib_yyvsp[(2) - (14)].str));} +#line 677 "griby.y" + { (grib_yyval.act) = grib_action_create_while(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act)); } break; case 172: /* Line 1455 of yacc.c */ -#line 629 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (12)].str),0,(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(2) - (12)].str),(grib_yyvsp[(6) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,0,(grib_yyvsp[(12) - (12)].lval),1); free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(2) - (12)].str));} +#line 680 "griby.y" + { (grib_yyval.act) = grib_action_create_trigger(grib_parser_context,(grib_yyvsp[(3) - (7)].explist),(grib_yyvsp[(6) - (7)].act)); } break; case 173: /* Line 1455 of yacc.c */ -#line 630 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (8)].str),(grib_yyvsp[(6) - (8)].concept_value),0,(grib_yyvsp[(2) - (8)].str),0,0,0,0,(grib_yyvsp[(8) - (8)].lval),1); free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(4) - (8)].str)); } +#line 683 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].concept_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),0); free((grib_yyvsp[(2) - (6)].str)); } break; case 174: /* Line 1455 of yacc.c */ -#line 631 "griby.y" - { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (11)].str),(grib_yyvsp[(9) - (11)].concept_value),0,(grib_yyvsp[(2) - (11)].str),(grib_yyvsp[(6) - (11)].str),0,0,0,(grib_yyvsp[(11) - (11)].lval),1); free((grib_yyvsp[(2) - (11)].str));free((grib_yyvsp[(4) - (11)].str));free((grib_yyvsp[(6) - (11)].str)); } +#line 684 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (9)].str),(grib_yyvsp[(7) - (9)].concept_value),0,0,(grib_yyvsp[(4) - (9)].str),0,0,0,(grib_yyvsp[(9) - (9)].lval),0); free((grib_yyvsp[(2) - (9)].str));free((grib_yyvsp[(4) - (9)].str)); } + break; + + case 175: + +/* Line 1455 of yacc.c */ +#line 685 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),0); free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); } break; case 176: /* Line 1455 of yacc.c */ -#line 636 "griby.y" - { (grib_yyval.concept_value) = (grib_yyvsp[(2) - (2)].concept_value); (grib_yyvsp[(2) - (2)].concept_value)->next = (grib_yyvsp[(1) - (2)].concept_value); } +#line 686 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (14)].str),0,(grib_yyvsp[(6) - (14)].str),0,(grib_yyvsp[(4) - (14)].str),(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),(grib_yyvsp[(14) - (14)].lval),0); free((grib_yyvsp[(2) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(10) - (14)].str));free((grib_yyvsp[(12) - (14)].str)); } + break; + + case 177: + +/* Line 1455 of yacc.c */ +#line 687 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (10)].str),0,(grib_yyvsp[(6) - (10)].str),0,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(8) - (10)].str),0,0,(grib_yyvsp[(10) - (10)].lval),0); free((grib_yyvsp[(2) - (10)].str));free((grib_yyvsp[(6) - (10)].str));free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(8) - (10)].str)); } break; case 178: /* Line 1455 of yacc.c */ -#line 640 "griby.y" - { (grib_yyval.hash_array_value) = (grib_yyvsp[(2) - (2)].hash_array_value); (grib_yyvsp[(2) - (2)].hash_array_value)->next = (grib_yyvsp[(1) - (2)].hash_array_value); } +#line 688 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (14)].str),0,(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(2) - (14)].str),(grib_yyvsp[(6) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),0,(grib_yyvsp[(14) - (14)].lval),0); free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(10) - (14)].str)); free((grib_yyvsp[(12) - (14)].str)); free((grib_yyvsp[(2) - (14)].str));} break; case 179: /* Line 1455 of yacc.c */ -#line 643 "griby.y" - { (grib_yyval.act) = grib_action_create_hash_array(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].hash_array_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),0); free((grib_yyvsp[(2) - (6)].str)); } +#line 689 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (12)].str),0,(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(2) - (12)].str),(grib_yyvsp[(6) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,0,(grib_yyvsp[(12) - (12)].lval),0); free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(2) - (12)].str));} break; case 180: /* Line 1455 of yacc.c */ -#line 644 "griby.y" - { (grib_yyval.act) = grib_action_create_hash_array(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),0); free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); } +#line 690 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (8)].str),(grib_yyvsp[(6) - (8)].concept_value),0,(grib_yyvsp[(2) - (8)].str),0,0,0,0,(grib_yyvsp[(8) - (8)].lval),0); free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(4) - (8)].str)); } + break; + + case 181: + +/* Line 1455 of yacc.c */ +#line 691 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (11)].str),(grib_yyvsp[(9) - (11)].concept_value),0,(grib_yyvsp[(2) - (11)].str),(grib_yyvsp[(6) - (11)].str),0,0,0,(grib_yyvsp[(11) - (11)].lval),0); free((grib_yyvsp[(2) - (11)].str));free((grib_yyvsp[(4) - (11)].str));free((grib_yyvsp[(6) - (11)].str)); } break; case 182: /* Line 1455 of yacc.c */ -#line 648 "griby.y" - { (grib_yyval.case_value) = (grib_yyvsp[(2) - (2)].case_value); (grib_yyvsp[(2) - (2)].case_value)->next = (grib_yyvsp[(1) - (2)].case_value); } +#line 692 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].concept_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),1); free((grib_yyvsp[(2) - (6)].str)); } break; case 183: /* Line 1455 of yacc.c */ -#line 651 "griby.y" - { (grib_yyval.case_value) = grib_case_new(grib_parser_context,(grib_yyvsp[(2) - (4)].explist),(grib_yyvsp[(4) - (4)].act)); } +#line 693 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (9)].str),(grib_yyvsp[(7) - (9)].concept_value),0,0,(grib_yyvsp[(4) - (9)].str),0,0,0,(grib_yyvsp[(9) - (9)].lval),1); free((grib_yyvsp[(2) - (9)].str));free((grib_yyvsp[(4) - (9)].str)); } break; case 184: /* Line 1455 of yacc.c */ -#line 655 "griby.y" - { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (10)].explist),(grib_yyvsp[(6) - (10)].case_value),(grib_yyvsp[(9) - (10)].act)); } +#line 694 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),1); free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); } break; case 185: /* Line 1455 of yacc.c */ -#line 656 "griby.y" - { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (9)].explist),(grib_yyvsp[(6) - (9)].case_value),grib_action_create_noop(grib_parser_context,"continue")); } +#line 695 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (10)].str),0,(grib_yyvsp[(6) - (10)].str),0,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(8) - (10)].str),0,0,(grib_yyvsp[(10) - (10)].lval),1); free((grib_yyvsp[(2) - (10)].str));free((grib_yyvsp[(6) - (10)].str));free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(8) - (10)].str)); } break; case 186: /* Line 1455 of yacc.c */ -#line 657 "griby.y" - { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (7)].explist),(grib_yyvsp[(6) - (7)].case_value),0); } +#line 696 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (14)].str),0,(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(2) - (14)].str),(grib_yyvsp[(6) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),0,(grib_yyvsp[(14) - (14)].lval),1); free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(10) - (14)].str));free((grib_yyvsp[(12) - (14)].str)); free((grib_yyvsp[(2) - (14)].str));} break; case 187: /* Line 1455 of yacc.c */ -#line 660 "griby.y" - { - (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].concept_condition)); free((grib_yyvsp[(1) - (5)].str));} +#line 697 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (12)].str),0,(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(2) - (12)].str),(grib_yyvsp[(6) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,0,(grib_yyvsp[(12) - (12)].lval),1); free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(2) - (12)].str));} break; case 188: /* Line 1455 of yacc.c */ -#line 662 "griby.y" - { - (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].concept_condition)); free((grib_yyvsp[(1) - (5)].str));} +#line 698 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (8)].str),(grib_yyvsp[(6) - (8)].concept_value),0,(grib_yyvsp[(2) - (8)].str),0,0,0,0,(grib_yyvsp[(8) - (8)].lval),1); free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(4) - (8)].str)); } break; case 189: /* Line 1455 of yacc.c */ -#line 664 "griby.y" - { - char buf[80]; sprintf(buf,"%ld",(long)(grib_yyvsp[(1) - (5)].lval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[(4) - (5)].concept_condition));} +#line 699 "griby.y" + { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (11)].str),(grib_yyvsp[(9) - (11)].concept_value),0,(grib_yyvsp[(2) - (11)].str),(grib_yyvsp[(6) - (11)].str),0,0,0,(grib_yyvsp[(11) - (11)].lval),1); free((grib_yyvsp[(2) - (11)].str));free((grib_yyvsp[(4) - (11)].str));free((grib_yyvsp[(6) - (11)].str)); } break; - case 190: + case 191: /* Line 1455 of yacc.c */ -#line 666 "griby.y" - { - char buf[80]; sprintf(buf,"%g",(double)(grib_yyvsp[(1) - (5)].dval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[(4) - (5)].concept_condition));} - break; - - case 192: - -/* Line 1455 of yacc.c */ -#line 671 "griby.y" - { (grib_yyvsp[(1) - (2)].concept_condition)->next = (grib_yyvsp[(2) - (2)].concept_condition); (grib_yyval.concept_condition) = (grib_yyvsp[(1) - (2)].concept_condition); } +#line 704 "griby.y" + { (grib_yyval.concept_value) = (grib_yyvsp[(2) - (2)].concept_value); (grib_yyvsp[(2) - (2)].concept_value)->next = (grib_yyvsp[(1) - (2)].concept_value); } break; case 193: /* Line 1455 of yacc.c */ -#line 674 "griby.y" - { (grib_yyval.concept_condition) = grib_concept_condition_new(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].exp)); free((grib_yyvsp[(1) - (4)].str)); } +#line 708 "griby.y" + { (grib_yyval.hash_array_value) = (grib_yyvsp[(2) - (2)].hash_array_value); (grib_yyvsp[(2) - (2)].hash_array_value)->next = (grib_yyvsp[(1) - (2)].hash_array_value); } break; case 194: /* Line 1455 of yacc.c */ -#line 678 "griby.y" - { - (grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].ivalue)); free((grib_yyvsp[(1) - (5)].str));} +#line 711 "griby.y" + { (grib_yyval.act) = grib_action_create_hash_array(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].hash_array_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),0); free((grib_yyvsp[(2) - (6)].str)); } break; case 195: /* Line 1455 of yacc.c */ -#line 680 "griby.y" - { - (grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].ivalue)); free((grib_yyvsp[(1) - (5)].str));} - break; - - case 196: - -/* Line 1455 of yacc.c */ -#line 684 "griby.y" - { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].lval),(grib_yyvsp[(7) - (8)].lval)); free((grib_yyvsp[(3) - (8)].str)); } +#line 712 "griby.y" + { (grib_yyval.act) = grib_action_create_hash_array(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),0); free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); } break; case 197: /* Line 1455 of yacc.c */ -#line 685 "griby.y" - { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].str),0,0); free((grib_yyvsp[(1) - (1)].str)); } +#line 716 "griby.y" + { (grib_yyval.case_value) = (grib_yyvsp[(2) - (2)].case_value); (grib_yyvsp[(2) - (2)].case_value)->next = (grib_yyvsp[(1) - (2)].case_value); } break; case 198: /* Line 1455 of yacc.c */ -#line 686 "griby.y" - { (grib_yyval.exp) = new_sub_string_expression(grib_parser_context,(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].lval),(grib_yyvsp[(7) - (8)].lval)); free((grib_yyvsp[(3) - (8)].str)); } +#line 719 "griby.y" + { (grib_yyval.case_value) = grib_case_new(grib_parser_context,(grib_yyvsp[(2) - (4)].explist),(grib_yyvsp[(4) - (4)].act)); } break; case 199: /* Line 1455 of yacc.c */ -#line 687 "griby.y" - { (grib_yyval.exp) = new_string_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].str)); free((grib_yyvsp[(1) - (1)].str)); } +#line 723 "griby.y" + { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (10)].explist),(grib_yyvsp[(6) - (10)].case_value),(grib_yyvsp[(9) - (10)].act)); } + break; + + case 200: + +/* Line 1455 of yacc.c */ +#line 724 "griby.y" + { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (9)].explist),(grib_yyvsp[(6) - (9)].case_value),grib_action_create_noop(grib_parser_context,"continue")); } break; case 201: /* Line 1455 of yacc.c */ -#line 691 "griby.y" - { (grib_yyval.exp) = new_long_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].lval)); } +#line 725 "griby.y" + { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (7)].explist),(grib_yyvsp[(6) - (7)].case_value),0); } break; case 202: /* Line 1455 of yacc.c */ -#line 692 "griby.y" - { (grib_yyval.exp) = new_double_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].dval)); /* TODO: change to new_float_expression*/} +#line 728 "griby.y" + { + (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].concept_condition)); free((grib_yyvsp[(1) - (5)].str));} break; case 203: /* Line 1455 of yacc.c */ -#line 694 "griby.y" - { (grib_yyval.exp) = NULL; } +#line 730 "griby.y" + { + (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].concept_condition)); free((grib_yyvsp[(1) - (5)].str));} break; case 204: /* Line 1455 of yacc.c */ -#line 695 "griby.y" - { (grib_yyval.exp) = new_true_expression(grib_parser_context); } +#line 732 "griby.y" + { + char buf[80]; sprintf(buf,"%ld",(long)(grib_yyvsp[(1) - (5)].lval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[(4) - (5)].concept_condition));} break; case 205: /* Line 1455 of yacc.c */ -#line 696 "griby.y" - { (grib_yyval.exp) = (grib_yyvsp[(2) - (3)].exp); } - break; - - case 206: - -/* Line 1455 of yacc.c */ -#line 697 "griby.y" - { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_neg,&grib_op_neg_d,(grib_yyvsp[(2) - (2)].exp)); } +#line 734 "griby.y" + { + char buf[80]; sprintf(buf,"%g",(double)(grib_yyvsp[(1) - (5)].dval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[(4) - (5)].concept_condition));} break; case 207: /* Line 1455 of yacc.c */ -#line 698 "griby.y" - { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[(1) - (3)].str),NULL); free((grib_yyvsp[(1) - (3)].str));} +#line 739 "griby.y" + { (grib_yyvsp[(1) - (2)].concept_condition)->next = (grib_yyvsp[(2) - (2)].concept_condition); (grib_yyval.concept_condition) = (grib_yyvsp[(1) - (2)].concept_condition); } break; case 208: /* Line 1455 of yacc.c */ -#line 699 "griby.y" - { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].explist)); free((grib_yyvsp[(1) - (4)].str));} +#line 742 "griby.y" + { (grib_yyval.concept_condition) = grib_concept_condition_new(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].exp)); free((grib_yyvsp[(1) - (4)].str)); } break; case 209: /* Line 1455 of yacc.c */ -#line 703 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_pow,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 746 "griby.y" + { + (grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].ivalue)); free((grib_yyvsp[(1) - (5)].str));} + break; + + case 210: + +/* Line 1455 of yacc.c */ +#line 748 "griby.y" + { + (grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].ivalue)); free((grib_yyvsp[(1) - (5)].str));} break; case 211: /* Line 1455 of yacc.c */ -#line 707 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_mul,&grib_op_mul_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 752 "griby.y" + { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].lval),(grib_yyvsp[(7) - (8)].lval)); free((grib_yyvsp[(3) - (8)].str)); } break; case 212: /* Line 1455 of yacc.c */ -#line 708 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_div,&grib_op_div_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 753 "griby.y" + { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].str),0,0); free((grib_yyvsp[(1) - (1)].str)); } break; case 213: /* Line 1455 of yacc.c */ -#line 709 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_modulo,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 754 "griby.y" + { (grib_yyval.exp) = new_sub_string_expression(grib_parser_context,(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].lval),(grib_yyvsp[(7) - (8)].lval)); free((grib_yyvsp[(3) - (8)].str)); } break; case 214: /* Line 1455 of yacc.c */ -#line 710 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bit,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 755 "griby.y" + { (grib_yyval.exp) = new_string_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].str)); free((grib_yyvsp[(1) - (1)].str)); } break; - case 215: + case 216: /* Line 1455 of yacc.c */ -#line 711 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bitoff,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 759 "griby.y" + { (grib_yyval.exp) = new_long_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].lval)); } break; case 217: /* Line 1455 of yacc.c */ -#line 713 "griby.y" - { (grib_yyval.exp) = new_length_expression(grib_parser_context,(grib_yyvsp[(3) - (4)].str)); free((grib_yyvsp[(3) - (4)].str));} +#line 760 "griby.y" + { (grib_yyval.exp) = new_double_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].dval)); /* TODO: change to new_float_expression*/} break; case 218: /* Line 1455 of yacc.c */ -#line 714 "griby.y" - { (grib_yyval.exp) = new_is_in_list_expression(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].str)); free((grib_yyvsp[(3) - (6)].str));free((grib_yyvsp[(5) - (6)].str));} +#line 762 "griby.y" + { (grib_yyval.exp) = NULL; } break; case 219: /* Line 1455 of yacc.c */ -#line 715 "griby.y" - { (grib_yyval.exp) = new_is_in_dict_expression(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].str)); free((grib_yyvsp[(3) - (6)].str));free((grib_yyvsp[(5) - (6)].str));} +#line 763 "griby.y" + { (grib_yyval.exp) = new_true_expression(grib_parser_context); } break; case 220: /* Line 1455 of yacc.c */ -#line 716 "griby.y" - { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].lval),0); free((grib_yyvsp[(3) - (6)].str));} +#line 764 "griby.y" + { (grib_yyval.exp) = (grib_yyvsp[(2) - (3)].exp); } break; case 221: /* Line 1455 of yacc.c */ -#line 717 "griby.y" - { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].lval),(grib_yyvsp[(7) - (8)].lval)); free((grib_yyvsp[(3) - (8)].str));} +#line 765 "griby.y" + { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_neg,&grib_op_neg_d,(grib_yyvsp[(2) - (2)].exp)); } break; case 222: /* Line 1455 of yacc.c */ -#line 718 "griby.y" - { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[(3) - (4)].str),0,0); free((grib_yyvsp[(3) - (4)].str));} +#line 766 "griby.y" + { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[(1) - (3)].str),NULL); free((grib_yyvsp[(1) - (3)].str));} break; case 223: /* Line 1455 of yacc.c */ -#line 721 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_add,&grib_op_add_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 767 "griby.y" + { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].explist)); free((grib_yyvsp[(1) - (4)].str));} break; case 224: /* Line 1455 of yacc.c */ -#line 722 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_sub,&grib_op_sub_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 771 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_pow,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 226: /* Line 1455 of yacc.c */ -#line 726 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_gt,&grib_op_gt_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 775 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_mul,&grib_op_mul_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 227: /* Line 1455 of yacc.c */ -#line 728 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_eq,&grib_op_eq_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 776 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_div,&grib_op_div_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 228: /* Line 1455 of yacc.c */ -#line 729 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_lt,&grib_op_lt_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 777 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_modulo,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 229: /* Line 1455 of yacc.c */ -#line 730 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ge,&grib_op_ge_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 778 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bit,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 230: /* Line 1455 of yacc.c */ -#line 731 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_le,&grib_op_le_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } - break; - - case 231: - -/* Line 1455 of yacc.c */ -#line 732 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ne,&grib_op_ne_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 779 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bitoff,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 232: /* Line 1455 of yacc.c */ -#line 733 "griby.y" - { (grib_yyval.exp) = new_string_compare_expression(grib_parser_context,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 781 "griby.y" + { (grib_yyval.exp) = new_length_expression(grib_parser_context,(grib_yyvsp[(3) - (4)].str)); free((grib_yyvsp[(3) - (4)].str));} break; case 233: /* Line 1455 of yacc.c */ -#line 738 "griby.y" - { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_not,NULL,(grib_yyvsp[(2) - (2)].exp)); } +#line 782 "griby.y" + { (grib_yyval.exp) = new_is_in_list_expression(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].str)); free((grib_yyvsp[(3) - (6)].str));free((grib_yyvsp[(5) - (6)].str));} + break; + + case 234: + +/* Line 1455 of yacc.c */ +#line 783 "griby.y" + { (grib_yyval.exp) = new_is_in_dict_expression(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].str)); free((grib_yyvsp[(3) - (6)].str));free((grib_yyvsp[(5) - (6)].str));} break; case 235: /* Line 1455 of yacc.c */ -#line 742 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_and,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 784 "griby.y" + { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].lval),0); free((grib_yyvsp[(3) - (6)].str));} + break; + + case 236: + +/* Line 1455 of yacc.c */ +#line 785 "griby.y" + { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].lval),(grib_yyvsp[(7) - (8)].lval)); free((grib_yyvsp[(3) - (8)].str));} break; case 237: /* Line 1455 of yacc.c */ -#line 746 "griby.y" - { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_or,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp));} +#line 786 "griby.y" + { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[(3) - (4)].str),0,0); free((grib_yyvsp[(3) - (4)].str));} + break; + + case 238: + +/* Line 1455 of yacc.c */ +#line 789 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_add,&grib_op_add_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } + break; + + case 239: + +/* Line 1455 of yacc.c */ +#line 790 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_sub,&grib_op_sub_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } + break; + + case 241: + +/* Line 1455 of yacc.c */ +#line 794 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_gt,&grib_op_gt_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 242: /* Line 1455 of yacc.c */ -#line 760 "griby.y" - { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].exp)); free((grib_yyvsp[(1) - (4)].str)); } +#line 796 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_eq,&grib_op_eq_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 243: /* Line 1455 of yacc.c */ -#line 761 "griby.y" - { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,"skip",0);} +#line 797 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_lt,&grib_op_lt_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } + break; + + case 244: + +/* Line 1455 of yacc.c */ +#line 798 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ge,&grib_op_ge_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 245: /* Line 1455 of yacc.c */ -#line 765 "griby.y" - { (grib_yyvsp[(1) - (2)].rule_entry)->next = (grib_yyvsp[(2) - (2)].rule_entry); (grib_yyval.rule_entry) = (grib_yyvsp[(1) - (2)].rule_entry); } +#line 799 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_le,&grib_op_le_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 246: /* Line 1455 of yacc.c */ -#line 768 "griby.y" - { (grib_yyval.rules) = grib_new_rule(grib_parser_context,NULL,(grib_yyvsp[(1) - (1)].rule_entry)); } +#line 800 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ne,&grib_op_ne_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } break; case 247: /* Line 1455 of yacc.c */ -#line 772 "griby.y" +#line 801 "griby.y" + { (grib_yyval.exp) = new_string_compare_expression(grib_parser_context,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } + break; + + case 248: + +/* Line 1455 of yacc.c */ +#line 806 "griby.y" + { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_not,NULL,(grib_yyvsp[(2) - (2)].exp)); } + break; + + case 250: + +/* Line 1455 of yacc.c */ +#line 810 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_and,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } + break; + + case 252: + +/* Line 1455 of yacc.c */ +#line 814 "griby.y" + { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_or,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp));} + break; + + case 257: + +/* Line 1455 of yacc.c */ +#line 828 "griby.y" + { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].exp)); free((grib_yyvsp[(1) - (4)].str)); } + break; + + case 258: + +/* Line 1455 of yacc.c */ +#line 829 "griby.y" + { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,"skip",0);} + break; + + case 260: + +/* Line 1455 of yacc.c */ +#line 833 "griby.y" + { (grib_yyvsp[(1) - (2)].rule_entry)->next = (grib_yyvsp[(2) - (2)].rule_entry); (grib_yyval.rule_entry) = (grib_yyvsp[(1) - (2)].rule_entry); } + break; + + case 261: + +/* Line 1455 of yacc.c */ +#line 836 "griby.y" + { (grib_yyval.rules) = grib_new_rule(grib_parser_context,NULL,(grib_yyvsp[(1) - (1)].rule_entry)); } + break; + + case 262: + +/* Line 1455 of yacc.c */ +#line 840 "griby.y" { (grib_yyval.rules) = grib_new_rule(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].rule_entry)); } break; - case 249: + case 264: /* Line 1455 of yacc.c */ -#line 776 "griby.y" +#line 844 "griby.y" { (grib_yyvsp[(1) - (2)].rules)->next = (grib_yyvsp[(2) - (2)].rules); (grib_yyval.rules) = (grib_yyvsp[(1) - (2)].rules); } break; /* Line 1455 of yacc.c */ -#line 3952 "y.tab.c" +#line 4174 "y.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", grib_yyr1[grib_yyn], &grib_yyval, &grib_yyloc); @@ -4160,7 +4382,7 @@ grib_yyreturn: /* Line 1675 of yacc.c */ -#line 780 "griby.y" +#line 848 "griby.y" static grib_concept_value *_reverse_concept(grib_concept_value *r,grib_concept_value *s) diff --git a/src/grib_yacc.h b/src/grib_yacc.h index e9e22b5fa..38c57b613 100644 --- a/src/grib_yacc.h +++ b/src/grib_yacc.h @@ -64,90 +64,105 @@ WHILE = 280, IBMFLOAT = 281, SIGNED = 282, - BYTE = 283, - CODETABLE = 284, - SMART_TABLE = 285, - DICTIONARY = 286, - COMPLEX_CODETABLE = 287, - LOOKUP = 288, - ALIAS = 289, - UNALIAS = 290, - META = 291, - POS = 292, - INTCONST = 293, - TRANS = 294, - FLAGBIT = 295, - CONCEPT = 296, - GETENV = 297, - HASH_ARRAY = 298, - CONCEPT_NOFAIL = 299, - NIL = 300, - DUMMY = 301, - MODIFY = 302, - READ_ONLY = 303, - STRING_TYPE = 304, - LONG_TYPE = 305, - DOUBLE_TYPE = 306, - NO_COPY = 307, - DUMP = 308, - JSON = 309, - XML = 310, - NO_FAIL = 311, - EDITION_SPECIFIC = 312, - OVERRIDE = 313, - HIDDEN = 314, - CAN_BE_MISSING = 315, - MISSING = 316, - CONSTRAINT = 317, - COPY_OK = 318, - WHEN = 319, - SET = 320, - SET_NOFAIL = 321, - WRITE = 322, - APPEND = 323, - PRINT = 324, - EXPORT = 325, - REMOVE = 326, - RENAME = 327, - SKIP = 328, - PAD = 329, - SECTION_PADDING = 330, - MESSAGE = 331, - MESSAGE_COPY = 332, - PADTO = 333, - PADTOEVEN = 334, - PADTOMULTIPLE = 335, - G1_HALF_BYTE = 336, - G1_MESSAGE_LENGTH = 337, - G1_SECTION4_LENGTH = 338, - SECTION_LENGTH = 339, - LENGTH = 340, - FLAG = 341, - ITERATOR = 342, - NEAREST = 343, - BOX = 344, - KSEC = 345, - ASSERT = 346, - SUBSTR = 347, - CASE = 348, - SWITCH = 349, - DEFAULT = 350, - EQ = 351, - NE = 352, - GE = 353, - LE = 354, - LT = 355, - GT = 356, - BIT = 357, - BITOFF = 358, - AND = 359, - OR = 360, - NOT = 361, - IS = 362, - IDENT = 363, - STRING = 364, - INTEGER = 365, - FLOAT = 366 + UINT8 = 283, + INT8 = 284, + UINT16 = 285, + INT16 = 286, + UINT16_LITTLE_ENDIAN = 287, + INT16_LITTLE_ENDIAN = 288, + UINT32 = 289, + INT32 = 290, + UINT32_LITTLE_ENDIAN = 291, + INT32_LITTLE_ENDIAN = 292, + UINT64 = 293, + INT64 = 294, + UINT64_LITTLE_ENDIAN = 295, + INT64_LITTLE_ENDIAN = 296, + BLOB = 297, + BYTE = 298, + CODETABLE = 299, + SMART_TABLE = 300, + DICTIONARY = 301, + COMPLEX_CODETABLE = 302, + LOOKUP = 303, + ALIAS = 304, + UNALIAS = 305, + META = 306, + POS = 307, + INTCONST = 308, + TRANS = 309, + FLAGBIT = 310, + CONCEPT = 311, + GETENV = 312, + HASH_ARRAY = 313, + CONCEPT_NOFAIL = 314, + NIL = 315, + DUMMY = 316, + MODIFY = 317, + READ_ONLY = 318, + STRING_TYPE = 319, + LONG_TYPE = 320, + DOUBLE_TYPE = 321, + NO_COPY = 322, + DUMP = 323, + JSON = 324, + XML = 325, + NO_FAIL = 326, + EDITION_SPECIFIC = 327, + OVERRIDE = 328, + HIDDEN = 329, + CAN_BE_MISSING = 330, + MISSING = 331, + CONSTRAINT = 332, + COPY_OK = 333, + WHEN = 334, + SET = 335, + SET_NOFAIL = 336, + WRITE = 337, + APPEND = 338, + PRINT = 339, + EXPORT = 340, + REMOVE = 341, + RENAME = 342, + SKIP = 343, + PAD = 344, + SECTION_PADDING = 345, + MESSAGE = 346, + MESSAGE_COPY = 347, + PADTO = 348, + PADTOEVEN = 349, + PADTOMULTIPLE = 350, + G1_HALF_BYTE = 351, + G1_MESSAGE_LENGTH = 352, + G1_SECTION4_LENGTH = 353, + SECTION_LENGTH = 354, + LENGTH = 355, + FLAG = 356, + ITERATOR = 357, + NEAREST = 358, + BOX = 359, + KSEC = 360, + ASSERT = 361, + SUBSTR = 362, + CASE = 363, + SWITCH = 364, + DEFAULT = 365, + EQ = 366, + NE = 367, + GE = 368, + LE = 369, + LT = 370, + GT = 371, + BIT = 372, + BITOFF = 373, + AND = 374, + OR = 375, + NOT = 376, + IS = 377, + IDENT = 378, + STRING = 379, + INTEGER = 380, + FLOAT = 381 }; #endif /* Tokens. */ @@ -176,90 +191,105 @@ #define WHILE 280 #define IBMFLOAT 281 #define SIGNED 282 -#define BYTE 283 -#define CODETABLE 284 -#define SMART_TABLE 285 -#define DICTIONARY 286 -#define COMPLEX_CODETABLE 287 -#define LOOKUP 288 -#define ALIAS 289 -#define UNALIAS 290 -#define META 291 -#define POS 292 -#define INTCONST 293 -#define TRANS 294 -#define FLAGBIT 295 -#define CONCEPT 296 -#define GETENV 297 -#define HASH_ARRAY 298 -#define CONCEPT_NOFAIL 299 -#define NIL 300 -#define DUMMY 301 -#define MODIFY 302 -#define READ_ONLY 303 -#define STRING_TYPE 304 -#define LONG_TYPE 305 -#define DOUBLE_TYPE 306 -#define NO_COPY 307 -#define DUMP 308 -#define JSON 309 -#define XML 310 -#define NO_FAIL 311 -#define EDITION_SPECIFIC 312 -#define OVERRIDE 313 -#define HIDDEN 314 -#define CAN_BE_MISSING 315 -#define MISSING 316 -#define CONSTRAINT 317 -#define COPY_OK 318 -#define WHEN 319 -#define SET 320 -#define SET_NOFAIL 321 -#define WRITE 322 -#define APPEND 323 -#define PRINT 324 -#define EXPORT 325 -#define REMOVE 326 -#define RENAME 327 -#define SKIP 328 -#define PAD 329 -#define SECTION_PADDING 330 -#define MESSAGE 331 -#define MESSAGE_COPY 332 -#define PADTO 333 -#define PADTOEVEN 334 -#define PADTOMULTIPLE 335 -#define G1_HALF_BYTE 336 -#define G1_MESSAGE_LENGTH 337 -#define G1_SECTION4_LENGTH 338 -#define SECTION_LENGTH 339 -#define LENGTH 340 -#define FLAG 341 -#define ITERATOR 342 -#define NEAREST 343 -#define BOX 344 -#define KSEC 345 -#define ASSERT 346 -#define SUBSTR 347 -#define CASE 348 -#define SWITCH 349 -#define DEFAULT 350 -#define EQ 351 -#define NE 352 -#define GE 353 -#define LE 354 -#define LT 355 -#define GT 356 -#define BIT 357 -#define BITOFF 358 -#define AND 359 -#define OR 360 -#define NOT 361 -#define IS 362 -#define IDENT 363 -#define STRING 364 -#define INTEGER 365 -#define FLOAT 366 +#define UINT8 283 +#define INT8 284 +#define UINT16 285 +#define INT16 286 +#define UINT16_LITTLE_ENDIAN 287 +#define INT16_LITTLE_ENDIAN 288 +#define UINT32 289 +#define INT32 290 +#define UINT32_LITTLE_ENDIAN 291 +#define INT32_LITTLE_ENDIAN 292 +#define UINT64 293 +#define INT64 294 +#define UINT64_LITTLE_ENDIAN 295 +#define INT64_LITTLE_ENDIAN 296 +#define BLOB 297 +#define BYTE 298 +#define CODETABLE 299 +#define SMART_TABLE 300 +#define DICTIONARY 301 +#define COMPLEX_CODETABLE 302 +#define LOOKUP 303 +#define ALIAS 304 +#define UNALIAS 305 +#define META 306 +#define POS 307 +#define INTCONST 308 +#define TRANS 309 +#define FLAGBIT 310 +#define CONCEPT 311 +#define GETENV 312 +#define HASH_ARRAY 313 +#define CONCEPT_NOFAIL 314 +#define NIL 315 +#define DUMMY 316 +#define MODIFY 317 +#define READ_ONLY 318 +#define STRING_TYPE 319 +#define LONG_TYPE 320 +#define DOUBLE_TYPE 321 +#define NO_COPY 322 +#define DUMP 323 +#define JSON 324 +#define XML 325 +#define NO_FAIL 326 +#define EDITION_SPECIFIC 327 +#define OVERRIDE 328 +#define HIDDEN 329 +#define CAN_BE_MISSING 330 +#define MISSING 331 +#define CONSTRAINT 332 +#define COPY_OK 333 +#define WHEN 334 +#define SET 335 +#define SET_NOFAIL 336 +#define WRITE 337 +#define APPEND 338 +#define PRINT 339 +#define EXPORT 340 +#define REMOVE 341 +#define RENAME 342 +#define SKIP 343 +#define PAD 344 +#define SECTION_PADDING 345 +#define MESSAGE 346 +#define MESSAGE_COPY 347 +#define PADTO 348 +#define PADTOEVEN 349 +#define PADTOMULTIPLE 350 +#define G1_HALF_BYTE 351 +#define G1_MESSAGE_LENGTH 352 +#define G1_SECTION4_LENGTH 353 +#define SECTION_LENGTH 354 +#define LENGTH 355 +#define FLAG 356 +#define ITERATOR 357 +#define NEAREST 358 +#define BOX 359 +#define KSEC 360 +#define ASSERT 361 +#define SUBSTR 362 +#define CASE 363 +#define SWITCH 364 +#define DEFAULT 365 +#define EQ 366 +#define NE 367 +#define GE 368 +#define LE 369 +#define LT 370 +#define GT 371 +#define BIT 372 +#define BITOFF 373 +#define AND 374 +#define OR 375 +#define NOT 376 +#define IS 377 +#define IDENT 378 +#define STRING 379 +#define INTEGER 380 +#define FLOAT 381 @@ -289,7 +319,7 @@ typedef union YYSTYPE /* Line 1676 of yacc.c */ -#line 293 "y.tab.h" +#line 323 "y.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define grib_yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/src/gribl.l b/src/gribl.l index 09437fe97..f9489a626 100644 --- a/src/gribl.l +++ b/src/gribl.l @@ -172,6 +172,26 @@ FLOAT3 {NSIGNED}+{EXP}? "override" return OVERRIDE; "copy_ok" return COPY_OK; +"uint8" return UINT8; +"int" return INT8; + +"uint16" return UINT16; +"int16" return INT16; +"uint16_little_endian" return UINT16_LITTLE_ENDIAN; +"int16_little_endian" return INT16_LITTLE_ENDIAN; + +"uint32" return UINT32; +"int32" return INT32; +"uint32_little_endian" return UINT32_LITTLE_ENDIAN; +"int32_little_endian" return INT32_LITTLE_ENDIAN; + +"uint64" return UINT64; +"int64" return INT64; +"uint64_little_endian" return UINT64_LITTLE_ENDIAN; +"int64_little_endian" return INT64_LITTLE_ENDIAN; + +"blob" return BLOB; + "set" return SET; "set_nofail" return SET_NOFAIL; "when" return WHEN; diff --git a/src/griby.y b/src/griby.y index 8ff837512..2dc6aeb66 100644 --- a/src/griby.y +++ b/src/griby.y @@ -78,6 +78,27 @@ static grib_hash_array_value *_reverse_hash_array(grib_hash_array_value *r,grib_ %token WHILE %token IBMFLOAT %token SIGNED + +%token UINT8 +%token INT8 + +%token UINT16 +%token INT16 +%token UINT16_LITTLE_ENDIAN +%token INT16_LITTLE_ENDIAN + +%token UINT32 +%token INT32 +%token UINT32_LITTLE_ENDIAN +%token INT32_LITTLE_ENDIAN + +%token UINT64 +%token INT64 +%token UINT64_LITTLE_ENDIAN +%token INT64_LITTLE_ENDIAN + +%token BLOB + %token BYTE %token CODETABLE %token SMART_TABLE @@ -393,6 +414,53 @@ simple : UNSIGNED '[' INTEGER ']' IDENT default flags | IBMFLOAT IDENT default flags { $$ = grib_action_create_gen(grib_parser_context,$2,"ibmfloat",4,NULL,$3,$4,NULL,NULL);free($2); } + /*---------*/ + | INT8 IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"int8",1,NULL,$3,$4,NULL,NULL);free($2); } + + | UINT8 IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"uint8",1,NULL,$3,$4,NULL,NULL);free($2); } + + | INT16 IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"int16",2,NULL,$3,$4,NULL,NULL);free($2); } + + | UINT16 IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"uint16",2,NULL,$3,$4,NULL,NULL);free($2); } + + | INT16_LITTLE_ENDIAN IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"int16_little_endian",2,NULL,$3,$4,NULL,NULL);free($2); } + + | UINT16_LITTLE_ENDIAN IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"uint16_little_endian",2,NULL,$3,$4,NULL,NULL);free($2); } + + | INT32 IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"int32",4,NULL,$3,$4,NULL,NULL);free($2); } + + | UINT32 IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"uint32",4,NULL,$3,$4,NULL,NULL);free($2); } + + | INT32_LITTLE_ENDIAN IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"int32_little_endian",4,NULL,$3,$4,NULL,NULL);free($2); } + + | UINT32_LITTLE_ENDIAN IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"uint32_little_endian",4,NULL,$3,$4,NULL,NULL);free($2); } + + | INT64 IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"int64",8,NULL,$3,$4,NULL,NULL);free($2); } + + | UINT64 IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"uint64",8,NULL,$3,$4,NULL,NULL);free($2); } + + | INT64_LITTLE_ENDIAN IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"int64_little_endian",8,NULL,$3,$4,NULL,NULL);free($2); } + + | UINT64_LITTLE_ENDIAN IDENT default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"uint64_little_endian",8,NULL,$3,$4,NULL,NULL);free($2); } + + | BLOB IDENT '[' argument_list ']' default flags + { $$ = grib_action_create_gen(grib_parser_context,$2,"blob",0,$4,$6,$7,NULL,NULL); free($2); } + /*---------*/ + | IBMFLOAT IDENT '.' IDENT default flags { $$ = grib_action_create_gen(grib_parser_context,$4,"ibmfloat",4,NULL,$5,$6,$2,NULL);free($4); free($2); } diff --git a/src/make_class.pl b/src/make_class.pl index 99c871eab..b2b37e989 100755 --- a/src/make_class.pl +++ b/src/make_class.pl @@ -1,7 +1,6 @@ #!/usr/bin/perl use strict; use Data::Dumper; -use Switch; my $name; @@ -266,17 +265,15 @@ EOF if ($mtype=~ /\*/) { $is_pointer=1; $mtype =~ s/\*//; } if ($is_pointer) { - switch ($mtype) { - case "char" { + if ($mtype =~ "\bchar\b") { print OUT "\tif (self->$mname) \n\t\tc->$mname=grib_context_strdup(a->parent->h,self->$mname);\n\n"; - } - case /double|long|int|float/ { + } + if ($mtype =~ "\b(double|long|int|float)\b") { print OUT "\tif (self->".$mname."_size) {\n"; print OUT "\tint i=0;\n"; print OUT "\tc->$mname=grib_context_alloc_clear(a->parent->h,self->".$mname."_size*sizeof($mtype));"; print OUT "\tfor (i=0;i${mname}_size;i++) c->".$mname."[i]=self->".$mname."[i];"; print OUT "}\n"; - } } } else { print OUT "\tc->$mname=self->$mname;\n\n"; } } diff --git a/tools/grib_options.c b/tools/grib_options.c index ceaf9d34a..81134a36c 100644 --- a/tools/grib_options.c +++ b/tools/grib_options.c @@ -95,7 +95,7 @@ grib_options_help grib_options_help_list[] ={ "\n\t\tall=relative_error will compare all the floating point keys using relative_error. Default all=0.\n"}, {"S",0,"Strict. Only grib messages matching all the constraints are copied to" "\n\t\tthe output file\n"}, - {"T:","T | B","Message type. T->GTS, B->BUFR. The input file is interpreted according to the message type.\n"}, + {"T:","T | B | A","Message type. T->GTS, B->BUFR, A->Any (Experimental). The input file is interpreted according to the message type.\n"}, {"V",0,"Version.\n"}, {"W:","width","\n\t\tMinimum width of each column in output. Default is 10.\n"}, {"X:","offset","\n\t\tInput file offset in bytes. Processing of the input file will start from \"offset\".\n"}, @@ -201,6 +201,7 @@ int grib_process_runtime_options(grib_context* context,int argc,char** argv,grib char* x=grib_options_get_option("T:"); if ( *x == 'T' ) options->mode=MODE_GTS; else if ( *x == 'B' ) options->mode=MODE_BUFR; + else if ( *x == 'A' ) options->mode=MODE_ANY; else options->mode=MODE_GRIB; } diff --git a/tools/grib_tools.c b/tools/grib_tools.c index c8503b779..1dcadbb8b 100644 --- a/tools/grib_tools.c +++ b/tools/grib_tools.c @@ -111,6 +111,9 @@ grib_runtime_options options={ static grib_handle* grib_handle_new_from_file_x(grib_context* c,FILE* f,int mode,int headers_only,int *err) { + if (mode==MODE_ANY) + return any_new_from_file(c,f,headers_only,err); + if (mode==MODE_GTS) return gts_new_from_file(c,f,headers_only,err); diff --git a/tools/grib_tools.h b/tools/grib_tools.h index 74e60f1dd..a0d60b5dc 100644 --- a/tools/grib_tools.h +++ b/tools/grib_tools.h @@ -40,6 +40,7 @@ #define MODE_BUFR 2 #define MODE_METAR 3 #define MODE_TAF 5 +#define MODE_ANY 6 typedef union grib_typed_value { long* long_value;