diff --git a/gaussian_experimental/Makefile b/gaussian_experimental/Makefile deleted file mode 100644 index 3bc94b526..000000000 --- a/gaussian_experimental/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -DIR=. -MARS=../../../mars/client/main/src -MARS=. -PGI=/usr/local/apps/pgi/current -FORTRAN=-L$(PGI)/linux86/lib -lpgf90 -lpgf90_rpm1 -lpgf902 -lpgf90rtl -lpgftnrtl -lpghpf -lpgc -lpgf90 -lstd -Wl,-rpath $(PGI)/linux86/lib - - -CFLAGS=-I../src -I$(MARS) -g -Wall -Werror -m32 -#JASPER=/usr/lib/libjasper.a -# JASPER=/tmp/mab/degrib/src/jpeg2000/src/libjasper/.libs/libjasper.a -JASPER=-ljasper -lpng -EMOSLIB=-lemos.new.R64.D64.I32 -EMOSLIB=/home/ma/maf/public/libemosR64.a -#FORTRAN=-lxlf90 -lxlf -lc -lm -EMOSLIB=/home/ma/emos/lib/$(ARCH)/000300/libemos.R64.D64.I32.a - -PROGS= gaussian - -LIBS=../src/libgrib_api.a $(EMOSLIB) $(FORTRAN) -lm $(JASPER) - -# Netcdf -NCINCDIR=/home/ma/mac/netcdf/netcdf-3.6.1/include -NCLIBDIR=/home/ma/mac/netcdf/netcdf-3.6.1/lib - -start : all - -all:: - cd ../src; make - -all:: $(PROGS) - - -gaussian: $(OBJ) gaussian.c gaussian.h ../src/libgrib_api.a - $(CC) -o gaussian $(OBJ) gaussian.c $(CFLAGS) $(LIBS) - -.PRECIOUS: fail - - -clean: - rm -f *.o core $(PROGS) diff --git a/gribex/Makefile b/gribex/Makefile deleted file mode 100644 index f01163c5f..000000000 --- a/gribex/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -LIB = /usr/local/lib/metaps/lib/000381/libemos.R64.D64.I32.a -INSTALL_DIR=/usr/local/lib/metaps/bin -VERSION=1.9.9 -GRIB_API=-L/usr/local/lib/metaps/lib/grib_api/${VERSION}/lib -lgrib_api_f90 -lgrib_api -L/usr/local/apps/jasper/1.900.0/LP64/lib -ljasper -lm -I/usr/local/lib/metaps/lib/grib_api/${VERSION}/include -I/usr/local/apps/jasper/1.900.0/LP64/include - -FFLAGS=-O -EXECS = gribex_count grib_api_count -all: $(EXECS) - -grib_api_count: grib_api_count.c - xlc_r -o $@ grib_api_count.c $(GRIB_API) - -gribex_count: gribex_count.o gribex_count.F - $(FC) $(FFLAGS) -o $@ gribex_count.o $(LIB) - -install: grib_api_count gribex_count gribex_check.ksh gribex_check_no_fail.ksh - cp $(INSTALL_DIR)/grib_api_count $(INSTALL_DIR)/grib_api_count.old - cp grib_api_count $(INSTALL_DIR)/grib_api_count - cp $(INSTALL_DIR)/gribex_count $(INSTALL_DIR)/gribex_count.old - cp gribex_count $(INSTALL_DIR)/gribex_count - cp $(INSTALL_DIR)/gribex_check.ksh $(INSTALL_DIR)/gribex_check.ksh.old - cp gribex_check.ksh $(INSTALL_DIR)/gribex_check.ksh - cp $(INSTALL_DIR)/gribex_check_no_fail.ksh $(INSTALL_DIR)/gribex_check_no_fail.ksh.old - cp gribex_check_no_fail.ksh $(INSTALL_DIR)/gribex_check_no_fail.ksh - -clean: - @for name in $(EXECS) ; do\ - (rm -f $$name $$name.o ); \ - done diff --git a/m4/ax_linux_distribution.m4 b/m4/ax_linux_distribution.m4 deleted file mode 100644 index 4c22cac01..000000000 --- a/m4/ax_linux_distribution.m4 +++ /dev/null @@ -1,77 +0,0 @@ -# SYNOPSIS -# -# AX_LINUX_DISTRIBUTION -# -# DESCRIPTION -# -# Try to detect the name and version of the Linux distribution where the software is being run -# -# In configure.in: -# -# dnl For my rpm.m4 macros -# AC_SUBST(LINUX_DISTRIBUTION_NAME) -# AC_SUBST(LINUX_DISTRIBUTION_VERSION) -# -# Daniel Varela 2011 -# Version 1.1 (2011-11-11) - - -dnl AX_LINUX_DISTRIBUTION -dnl Figure out the Linux distribution where the software is being built -dnl automake target - -AC_DEFUN([AX_LINUX_DISTRIBUTION], -[dnl -AC_REQUIRE([AC_CANONICAL_HOST]) -HOST_CPU=${host_cpu} -HOST_VENDOR=${host_vendor} -HOST_OS=${host_os} - -if test x$HOST_OS = "xlinux-gnu" -then - AC_MSG_CHECKING(for Linux distribution ) - - # This works for Fedora, RedHat and Slackware - for f in /etc/fedora-release /etc/redhat-release /etc/slackware-release - do - if test -f $f; then - distro=`cat $f` - break - fi - done - - # This works in Ubuntu (11 at least) - if test -f /etc/lsb-release; then - distro=`cat /etc/lsb-release | grep DISTRIB_ID | awk -F= '{print $2}' ` - distro_version=`cat /etc/lsb-release | grep DISTRIB_RELEASE | awk -F= '{print $2}' ` - fi - - # For SuSE - if test -f /etc/SuSE-release; then - distro=`cat /etc/SuSE-release | head -1` - #distro_version=`cat /etc/SuSE-release | tail -1 | awk -F= '{print $2}' ` - fi - - # At least Debian has this - if test -f /etc/issue.net -a "x$distro" = x; then - distro=`cat /etc/issue.net | head -1` - fi - - # Everything else - if test "x$distro" = x; then - distro="Unknown Linux" - fi - - LINUX_DISTRIBUTION_NAME=$distro - LINUX_DISTRIBUTION_VERSION=$distro_version - AC_MSG_RESULT($LINUX_DISTRIBUTION_NAME $LINUX_DISTRIBUTION_VERSION) - -else - LINUX_DISTRIBUTION_NAME=$HOST_OS - LINUX_DISTRIBUTION_VERSION="" - AC_MSG_NOTICE(OS is non-Linux UNIX $HOST_OS.) -fi - -AC_SUBST(LINUX_DISTRIBUTION_NAME) -AC_SUBST(LINUX_DISTRIBUTION_VERSION) -]) diff --git a/m4/ax_rpm_init.m4 b/m4/ax_rpm_init.m4 deleted file mode 100644 index da84893f3..000000000 --- a/m4/ax_rpm_init.m4 +++ /dev/null @@ -1,258 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_rpm_init.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_RPM_INIT -# -# DESCRIPTION -# -# Setup variables for creation of rpms. It will define several variables -# useful for creating rpms on a system where rpms are supported. -# Currently, I requires changes to Makefile.am to function properly (see -# the example below). -# -# Also note that I do not use any non-UNIX OSs (and for the most part, I -# only use RedHat), so this is probably generally not useful for other -# systems. -# -# Required setup: -# -# In configure.in: -# -# dnl For my rpm.m4 macros -# RPM_RELEASE=1 -# AC_SUBST(RPM_RELEASE) -# -# AX_RPM_INIT -# dnl Enable or disable the rpm making rules in Makefile.am -# AM_CONDITIONAL(MAKE_RPMS, test x$make_rpms = xtrue) -# -# Furthermore, the %GNUconfigure rpm macro has a problem in that it does -# not define CXXFLAGS for the target system correctly, so for compiling -# C++ code, add the following line _before_ calling AC_PROG_CXX: -# -# dnl This is a little hack to make this work with rpm better (see mysql++.spec.in) -# test -z "$CXXFLAGS" && CXXFLAGS="${CFLAGS}" -# -# Changes to Makefile.am (I am trying to get rid of this step; suggestions -# invited): -# -# if MAKE_RPMS -# rpm: @RPM_TARGET@ -# -# .PHONY: rpm -# -# $(RPM_TARGET): $(DISTFILES) -# ${MAKE} dist -# -mkdir -p $(RPM_DIR)/SRPMS -# -mkdir -p `dirname $(RPM_TARGET)` -# $(RPM_PROG) $(RPM_ARGS) $(RPM_TARBALL) -# @echo Congratulations, $(RPM_TARGET) "(and friends)" should now exist. -# else -# endif -# -# Also, it works best with a XXXX.spec.in file like the following (this is -# way down on the wishlist, but a program to generate the skeleton spec.in -# much like autoscan would just kick butt!): -# -# ---------- 8< ---------- -# # -*- Mode:rpm-spec -*- -# # mysql++.spec.in -# Summary: Your package description goes here -# %define rel @RPM_RELEASE@ -# -# %define version @VERSION@ -# %define pkgname @PACKAGE@ -# %define prefix /usr -# -# %define lt_release @LT_RELEASE@ -# %define lt_version @LT_CURRENT@.@LT_REVISION@.@LT_AGE@ -# -# # This is a hack until I can figure out how to better handle replacing -# # autoconf macros... (gotta love autoconf...) -# %define __aclocal aclocal || aclocal -I ./macros -# %define configure_args @RPM_CONFIGURE_ARGS@ -# -# Name: %{pkgname} -# Version: %{version} -# Release: %{rel} -# -# Copyright: LGPL -# Group: # your group name goes here -# Source: %{pkgname}-%{version}.tar.gz -# Requires: # additional requirements -# Buildroot: /tmp/%{pkgname}-root -# URL: http://yoururl.go.here -# Prefix: %{prefix} -# BuildArchitectures: # Target platforms, i.e., i586 -# Packager: Your Name -# -# %description -# Your package description -# -# %changelog -# -# %prep -# %setup -# #%patch -# -# %build -# %GNUconfigure %{configure_args} -# # This is why we copy the CFLAGS to the CXXFLAGS in configure.in -# # CFLAGS="%{optflags}" CXXFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{prefix} -# make -# -# %install -# # To make things work with BUILDROOT -# if [ "$RPM_BUILD_ROOT" != "/tmp/%{pkgname}-root" ] -# then -# echo -# echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -# echo @ @ -# echo @ RPM_BUILD_ROOT is not what I expected. Please clean it yourself. @ -# echo @ @ -# echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -# echo -# else -# echo Cleaning RPM_BUILD_ROOT: "$RPM_BUILD_ROOT" -# rm -rf "$RPM_BUILD_ROOT" -# fi -# make DESTDIR="$RPM_BUILD_ROOT" install -# -# %clean -# # Call me paranoid, but I do not want to be responsible for nuking -# # someone's harddrive! -# if [ "$RPM_BUILD_ROOT" != "/tmp/%{pkgname}-root" ] -# then -# echo -# echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -# echo @ @ -# echo @ RPM_BUILD_ROOT is not what I expected. Please clean it yourself. @ -# echo @ @ -# echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -# echo -# else -# echo Cleaning RPM_BUILD_ROOT: "$RPM_BUILD_ROOT" -# rm -rf "$RPM_BUILD_ROOT" -# fi -# -# %files -# %defattr(-, root, root) -# # Your application file list goes here -# # %{prefix}/lib/lib*.so* -# %doc COPYRIGHT ChangeLog README AUTHORS NEWS -# %doc doc/* -# -# # If you install a library -# %post -p /sbin/ldconfig -# -# # If you install a library -# %postun -p /sbin/ldconfig -# -# %package devel -# Summary: Development files for %{pkgname} -# Group: Applications/Databases -# %description devel -# Development files for %{pkgname}. -# -# %files devel -# %defattr(-, root, root) -# # Your development files go here -# # Programmers documentation goes here -# %doc doc -# -# # end of file -# ---------- >8 ---------- -# -# LICENSE -# -# Copyright (c) 2008 Dale K. Hawkins -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -# Modified by Daniel Varela 2011 - -#serial 5 - -dnl AX_RPM_INIT -dnl Figure out how to create rpms for this system and setup for an -dnl automake target - -AU_ALIAS([AM_RPM_INIT], [AX_RPM_INIT]) -AC_DEFUN([AX_RPM_INIT], -[dnl -AC_REQUIRE([AC_CANONICAL_HOST]) -RPM_HOST_CPU=${host_cpu} -RPM_HOST_VENDOR=${host_vendor} -RPM_HOST_OS=${host_os} - -dnl Find the RPM program -AC_ARG_WITH(rpmbuild-prog,[ --with-rpmbuild-prog=PROG Which rpmbuild to use (optional)], - rpmbuild_prog="$withval", rpmbuild_prog="") - -AC_ARG_WITH(rpmbuild-extra-args, [ --with-rpmbuild-extra-args=ARGS Run rpmbuild with extra arguments (defaults to none)], - rpmbuild_extra_args="$withval", rpmbuild_extra_args="") - -AC_ARG_WITH(rpm-release, [ --with-rpm-release=NUMBER The rpms will use this release number (defaults to 1)], - rpm_release="$withval", rpm_release=1) - -RPM_TARGET="" -RPM_RELEASE=$rpm_release - -AC_PATH_PROG(RPMBUILD_PROG, rpmbuild, no) -no_rpm=no - -if test "$RPMBUILD_PROG" = "no" -then - echo rpm package building is disabled. Set the path to the rpmbuild program using --with-rpmbuild-prog=PROG - no_rpm=yes - RPM_MAKE_RULES="" -else -# AC_MSG_CHECKING(how rpmbuild sets %{_rpmdir}) - rpmdir=`$RPMBUILD_PROG --eval %{_rpmdir} 2> /dev/null` - if test x$rpmdir = x"%{_rpmdir}" ; then - AC_MSG_RESULT([not set (cannot build rpms?)]) - echo *** Could not determine the value of %{_rpmdir} - echo *** This could be because it is not set, or your version of rpm does not set it - echo *** It must be set in order to generate the correct rpm generation commands - echo *** - echo *** You might still be able to create rpms, but I could not automate it for you - echo *** BTW, if you know this is wrong, please help to improve the rpm.m4 module - echo *** Send corrections, updates and fixes to dhawkins@cdrgts.com. Thanks. -# else -# AC_MSG_RESULT([$rpmdir]) - fi - AC_MSG_CHECKING(how rpm sets %{_rpmfilename}) - rpmfilename=`$RPMBUILD_PROG --eval %{_rpmfilename} 2> /dev/null | sed "s/%{ARCH}/${RPM_HOST_CPU}/g" | sed "s/%{NAME}/$PACKAGE/g" | sed "s/%{VERSION}/${VERSION}/g" | sed "s/%{RELEASE}/${RPM_RELEASE}/g"` - AC_MSG_RESULT([$rpmfilename]) - - RPM_DIR=${rpmdir} - RPM_TARGET=$rpmfilename - RPM_ARGS="-ta $rpmbuild_extra_args" - RPM_TARBALL=${PACKAGE}-${VERSION}.tar.gz - -fi - -case "${no_rpm}" in - yes) make_rpms=false;; - no) make_rpms=true;; - *) AC_MSG_WARN([bad value ${no_rpm} for no_rpm (not making rpms)]) - make_rpms=false;; -esac - -AC_SUBST(RPM_DIR) -AC_SUBST(RPM_TARGET) -AC_SUBST(RPM_ARGS) -AC_SUBST(RPM_TARBALL) -AC_SUBST(RPM_HOST_CPU) -AC_SUBST(RPM_HOST_VENDOR) -AC_SUBST(RPM_HOST_OS) - -RPM_CONFIGURE_ARGS=${ac_configure_args} -AC_SUBST(RPM_CONFIGURE_ARGS) -]) diff --git a/parameters/Makefile b/parameters/Makefile deleted file mode 100644 index c391b5d2a..000000000 --- a/parameters/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -all : ../definitions/grib2/tigge_name.def ../tigge/tigge_check.h db - -# ./tigge_def.pl produces 3 files. The rule is only for tigge_name.def -# ../definitions/grib2/tigge_parameter.def -# ../definitions/grib2/tigge_short_name.def - -../definitions/grib2/tigge_name.def: master.info tigge_def.pl - -p4 edit ../definitions/grib2/tigge_name.def - -p4 edit ../definitions/grib2/tigge_parameter.def - -p4 edit ../definitions/grib2/tigge_short_name.def - ./tigge_def.pl master.info - cp tigge_name.def ../definitions/grib2/tigge_name.def - cp tigge_parameter.def ../definitions/grib2/tigge_parameter.def - cp tigge_short_name.def ../definitions/grib2/tigge_short_name.def - -../tigge/tigge_check.h: master.info tigge_check.info tigge_check.pl - -p4 edit ../tigge/tigge_check.h - ./tigge_check.pl master.info tigge_check.info > ../tigge/tigge_check.h - -db : master.info feed_metdb.pl - ./feed_metdb.pl - ./feed_tigge.pl prod - touch db diff --git a/src/action_class_close.c b/src/action_class_close.c index 5376743b6..0e66ec3c3 100644 --- a/src/action_class_close.c +++ b/src/action_class_close.c @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/action_class_hash_array.c b/src/action_class_hash_array.c index 03b38d45c..7d7d28b58 100644 --- a/src/action_class_hash_array.c +++ b/src/action_class_hash_array.c @@ -240,17 +240,17 @@ grib_hash_array_value* get_hash_array(grib_handle* h,grib_action* a) id=grib_itrie_get_id(h->context->hash_array_index,key); if ((c=h->context->hash_array[id])!=NULL) return c; - if (*local && (full=grib_context_full_path(context,local))!=NULL) { + if (*local && (full=grib_context_full_defs_path(context,local))!=NULL) { c=grib_parse_hash_array_file(context,full); grib_context_log(h->context,GRIB_LOG_DEBUG, "Loading hash_array %s from %s",((grib_action*)self)->name,full); - } else if (*ecmf && (full=grib_context_full_path(context,ecmf))!=NULL) { + } else if (*ecmf && (full=grib_context_full_defs_path(context,ecmf))!=NULL) { c=grib_parse_hash_array_file(context,full); grib_context_log(h->context,GRIB_LOG_DEBUG, "Loading hash_array %s from %s",((grib_action*)self)->name,full); } - full=grib_context_full_path(context,master); + full=grib_context_full_defs_path(context,master); if(c) { grib_hash_array_value* last=c; diff --git a/src/action_class_set_iarray.c b/src/action_class_set_iarray.c index 961a54f98..9469342df 100644 --- a/src/action_class_set_iarray.c +++ b/src/action_class_set_iarray.c @@ -127,7 +127,7 @@ static void destroy(grib_context* context,grib_action* act) grib_action_set_iarray* a = (grib_action_set_iarray*) act; grib_context_free_persistent(context, a->name); - grib_iarray_delete(context,a->iarray); + grib_iarray_delete(a->iarray); grib_context_free_persistent(context, act->name); grib_context_free_persistent(context, act->op); diff --git a/src/grib_accessor_class_apply_operators.c b/src/grib_accessor_class_apply_operators.c index 5d3092129..70865e3ce 100644 --- a/src/grib_accessor_class_apply_operators.c +++ b/src/grib_accessor_class_apply_operators.c @@ -9,7 +9,7 @@ */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_ascii.c b/src/grib_accessor_class_ascii.c index 1dda6e328..c55a3d5b0 100644 --- a/src/grib_accessor_class_ascii.c +++ b/src/grib_accessor_class_ascii.c @@ -86,6 +86,8 @@ static grib_accessor_class _grib_accessor_class_ascii = { &unpack_double, /* grib_unpack procedures double */ &pack_string, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -113,6 +115,8 @@ static void init_class(grib_accessor_class* c) c->sub_section = (*(c->super))->sub_section; c->pack_missing = (*(c->super))->pack_missing; c->is_missing = (*(c->super))->is_missing; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_bufr_data.c b/src/grib_accessor_class_bufr_data.c index 1a95a448d..eec31600e 100644 --- a/src/grib_accessor_class_bufr_data.c +++ b/src/grib_accessor_class_bufr_data.c @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl @@ -233,7 +233,7 @@ typedef struct grib_accessor_bufr_data_element { static int number_of_qualifiers=NUMBER_OF_QUALIFIERS_PER_CATEGORY*NUMBER_OF_QUALIFIERS_CATEGORIES; -static inline int significanceQualifierIndex(X,Y) { +static inline int significanceQualifierIndex(int X,int Y) { int a[]={-1,0,1,-1,-1,-1,-1,-1,2}; return Y+a[X]*NUMBER_OF_QUALIFIERS_PER_CATEGORY; } diff --git a/src/grib_accessor_class_bufr_data_element.c b/src/grib_accessor_class_bufr_data_element.c index e5aa56943..b2d3abacb 100644 --- a/src/grib_accessor_class_bufr_data_element.c +++ b/src/grib_accessor_class_bufr_data_element.c @@ -11,7 +11,7 @@ * Enrico Fucile ****************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" #include /* diff --git a/src/grib_accessor_class_bufr_element.c b/src/grib_accessor_class_bufr_element.c index b0000de47..121f0f7d1 100644 --- a/src/grib_accessor_class_bufr_element.c +++ b/src/grib_accessor_class_bufr_element.c @@ -11,7 +11,7 @@ * Enrico Fucile ****************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" #include /* diff --git a/src/grib_accessor_class_bufr_group.c b/src/grib_accessor_class_bufr_group.c index 4b9da56f8..f34fabd33 100644 --- a/src/grib_accessor_class_bufr_group.c +++ b/src/grib_accessor_class_bufr_group.c @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_bufr_group_number.c b/src/grib_accessor_class_bufr_group_number.c index f8d0ddeee..7403de1fb 100644 --- a/src/grib_accessor_class_bufr_group_number.c +++ b/src/grib_accessor_class_bufr_group_number.c @@ -12,7 +12,7 @@ * Enrico Fucile **********************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_bufr_has_delayed_replication.c b/src/grib_accessor_class_bufr_has_delayed_replication.c index bd350dc04..0c268bb56 100644 --- a/src/grib_accessor_class_bufr_has_delayed_replication.c +++ b/src/grib_accessor_class_bufr_has_delayed_replication.c @@ -9,7 +9,7 @@ */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_bufr_subset_number.c b/src/grib_accessor_class_bufr_subset_number.c index 2733ae870..b75e8a790 100644 --- a/src/grib_accessor_class_bufr_subset_number.c +++ b/src/grib_accessor_class_bufr_subset_number.c @@ -12,7 +12,7 @@ * Enrico Fucile **********************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_bufr_uncompressed_data.c b/src/grib_accessor_class_bufr_uncompressed_data.c index e878277c4..8e43e06d0 100644 --- a/src/grib_accessor_class_bufr_uncompressed_data.c +++ b/src/grib_accessor_class_bufr_uncompressed_data.c @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_bytes.c b/src/grib_accessor_class_bytes.c index 09a11e9b9..0771b9217 100644 --- a/src/grib_accessor_class_bytes.c +++ b/src/grib_accessor_class_bytes.c @@ -70,6 +70,8 @@ static grib_accessor_class _grib_accessor_class_bytes = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -105,6 +107,8 @@ static void init_class(grib_accessor_class* c) c->pack_double = (*(c->super))->pack_double; c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_codetable.c b/src/grib_accessor_class_codetable.c index f5fa3880b..ff0731126 100644 --- a/src/grib_accessor_class_codetable.c +++ b/src/grib_accessor_class_codetable.c @@ -108,6 +108,8 @@ static grib_accessor_class _grib_accessor_class_codetable = { 0, /* grib_unpack procedures double */ &pack_string, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ &pack_expression, /* pack_expression */ @@ -139,6 +141,8 @@ static void init_class(grib_accessor_class* c) c->pack_long = (*(c->super))->pack_long; c->pack_double = (*(c->super))->pack_double; c->unpack_double = (*(c->super))->unpack_double; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->notify_change = (*(c->super))->notify_change; diff --git a/src/grib_accessor_class_concept.c b/src/grib_accessor_class_concept.c index 141a60dd0..0833b70c6 100644 --- a/src/grib_accessor_class_concept.c +++ b/src/grib_accessor_class_concept.c @@ -88,6 +88,8 @@ static grib_accessor_class _grib_accessor_class_concept = { &unpack_double, /* grib_unpack procedures double */ &pack_string, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -115,6 +117,8 @@ static void init_class(grib_accessor_class* c) c->sub_section = (*(c->super))->sub_section; c->pack_missing = (*(c->super))->pack_missing; c->is_missing = (*(c->super))->is_missing; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_constant.c b/src/grib_accessor_class_constant.c index 62a89ffd3..23dfe8e7b 100644 --- a/src/grib_accessor_class_constant.c +++ b/src/grib_accessor_class_constant.c @@ -79,6 +79,8 @@ static grib_accessor_class _grib_accessor_class_constant = { 0, /* grib_unpack procedures double */ &pack_string, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ &pack_bytes, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -113,6 +115,8 @@ static void init_class(grib_accessor_class* c) c->unpack_long = (*(c->super))->unpack_long; c->unpack_double = (*(c->super))->unpack_double; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; c->notify_change = (*(c->super))->notify_change; diff --git a/src/grib_accessor_class_data_apply_bitmap.c b/src/grib_accessor_class_data_apply_bitmap.c index 704f74481..21650f624 100644 --- a/src/grib_accessor_class_data_apply_bitmap.c +++ b/src/grib_accessor_class_data_apply_bitmap.c @@ -88,6 +88,8 @@ static grib_accessor_class _grib_accessor_class_data_apply_bitmap = { &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -120,6 +122,8 @@ static void init_class(grib_accessor_class* c) c->unpack_long = (*(c->super))->unpack_long; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_data_apply_boustrophedonic.c b/src/grib_accessor_class_data_apply_boustrophedonic.c index 41cce699e..d643f585d 100644 --- a/src/grib_accessor_class_data_apply_boustrophedonic.c +++ b/src/grib_accessor_class_data_apply_boustrophedonic.c @@ -86,6 +86,8 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic = { &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -118,6 +120,8 @@ static void init_class(grib_accessor_class* c) c->unpack_long = (*(c->super))->unpack_long; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.c b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.c index f518c9d95..2b72c37b6 100644 --- a/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.c +++ b/src/grib_accessor_class_data_apply_boustrophedonic_bitmap.c @@ -91,6 +91,8 @@ static grib_accessor_class _grib_accessor_class_data_apply_boustrophedonic_bitma &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -123,6 +125,8 @@ static void init_class(grib_accessor_class* c) c->unpack_long = (*(c->super))->unpack_long; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.c b/src/grib_accessor_class_data_g1second_order_general_extended_packing.c index 9302cbb0f..7dd10d2cd 100644 --- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.c +++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.c @@ -143,6 +143,8 @@ static grib_accessor_class _grib_accessor_class_data_g1second_order_general_exte &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -177,6 +179,8 @@ static void init_class(grib_accessor_class* c) c->unpack_long = (*(c->super))->unpack_long; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_data_g2simple_packing.c b/src/grib_accessor_class_data_g2simple_packing.c index 683cac81c..fa65f052c 100644 --- a/src/grib_accessor_class_data_g2simple_packing.c +++ b/src/grib_accessor_class_data_g2simple_packing.c @@ -89,6 +89,8 @@ static grib_accessor_class _grib_accessor_class_data_g2simple_packing = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ &pack_bytes, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -124,6 +126,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; c->notify_change = (*(c->super))->notify_change; diff --git a/src/grib_accessor_class_data_jpeg2000_packing.c b/src/grib_accessor_class_data_jpeg2000_packing.c index 011c07121..694346d0d 100644 --- a/src/grib_accessor_class_data_jpeg2000_packing.c +++ b/src/grib_accessor_class_data_jpeg2000_packing.c @@ -109,6 +109,8 @@ static grib_accessor_class _grib_accessor_class_data_jpeg2000_packing = { &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -143,6 +145,8 @@ static void init_class(grib_accessor_class* c) c->unpack_long = (*(c->super))->unpack_long; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_data_raw_packing.c b/src/grib_accessor_class_data_raw_packing.c index 0679ef277..5c99e5272 100644 --- a/src/grib_accessor_class_data_raw_packing.c +++ b/src/grib_accessor_class_data_raw_packing.c @@ -90,6 +90,8 @@ static grib_accessor_class _grib_accessor_class_data_raw_packing = { &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -124,6 +126,8 @@ static void init_class(grib_accessor_class* c) c->unpack_long = (*(c->super))->unpack_long; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_data_simple_packing.c b/src/grib_accessor_class_data_simple_packing.c index f1229c6bb..b7651c035 100644 --- a/src/grib_accessor_class_data_simple_packing.c +++ b/src/grib_accessor_class_data_simple_packing.c @@ -105,6 +105,8 @@ static grib_accessor_class _grib_accessor_class_data_simple_packing = { &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -139,6 +141,8 @@ static void init_class(grib_accessor_class* c) c->unpack_long = (*(c->super))->unpack_long; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_dictionary.c b/src/grib_accessor_class_dictionary.c index 733a03dab..c9e97115a 100644 --- a/src/grib_accessor_class_dictionary.c +++ b/src/grib_accessor_class_dictionary.c @@ -12,7 +12,7 @@ * Enrico Fucile ****************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" #include /* @@ -164,7 +164,7 @@ static grib_trie* load_dictionary(grib_context* c,grib_accessor* a, int* err) { *err=GRIB_SUCCESS; - filename=grib_context_full_path(c,self->dictionary); + filename=grib_context_full_defs_path(c,self->dictionary); if (!filename) { grib_context_log(c,GRIB_LOG_ERROR,"unable to find def file %s",self->dictionary); *err=GRIB_FILE_NOT_FOUND; diff --git a/src/grib_accessor_class_double.c b/src/grib_accessor_class_double.c index 7e264e11f..f13929925 100644 --- a/src/grib_accessor_class_double.c +++ b/src/grib_accessor_class_double.c @@ -77,6 +77,8 @@ static grib_accessor_class _grib_accessor_class_double = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -110,6 +112,8 @@ static void init_class(grib_accessor_class* c) c->pack_double = (*(c->super))->pack_double; c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_expanded_descriptors.c b/src/grib_accessor_class_expanded_descriptors.c index c4af927fd..73ae9211c 100644 --- a/src/grib_accessor_class_expanded_descriptors.c +++ b/src/grib_accessor_class_expanded_descriptors.c @@ -15,7 +15,7 @@ expanded descriptors cannot contain sequences and only delayed replication can appear */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_g1_half_byte_codeflag.c b/src/grib_accessor_class_g1_half_byte_codeflag.c index af376e8eb..4bd5785d5 100644 --- a/src/grib_accessor_class_g1_half_byte_codeflag.c +++ b/src/grib_accessor_class_g1_half_byte_codeflag.c @@ -75,6 +75,8 @@ static grib_accessor_class _grib_accessor_class_g1_half_byte_codeflag = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -108,6 +110,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_g1bitmap.c b/src/grib_accessor_class_g1bitmap.c index f75b6960e..59b047450 100644 --- a/src/grib_accessor_class_g1bitmap.c +++ b/src/grib_accessor_class_g1bitmap.c @@ -79,6 +79,8 @@ static grib_accessor_class _grib_accessor_class_g1bitmap = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ &unpack_bytes, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -114,6 +116,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->pack_expression = (*(c->super))->pack_expression; c->notify_change = (*(c->super))->notify_change; diff --git a/src/grib_accessor_class_g1end_of_interval_monthly.c b/src/grib_accessor_class_g1end_of_interval_monthly.c index 8ea959db2..f6ea091b2 100644 --- a/src/grib_accessor_class_g1end_of_interval_monthly.c +++ b/src/grib_accessor_class_g1end_of_interval_monthly.c @@ -78,6 +78,8 @@ static grib_accessor_class _grib_accessor_class_g1end_of_interval_monthly = { &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -113,6 +115,8 @@ static void init_class(grib_accessor_class* c) c->pack_double = (*(c->super))->pack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_gen.c b/src/grib_accessor_class_gen.c index edf322754..98b7b4234 100644 --- a/src/grib_accessor_class_gen.c +++ b/src/grib_accessor_class_gen.c @@ -22,6 +22,7 @@ IMPLEMENTS = unpack_long;pack_long; clear IMPLEMENTS = unpack_double;pack_double;unpack_double_element IMPLEMENTS = unpack_string;pack_string + IMPLEMENTS = unpack_string_array;pack_string_array IMPLEMENTS = unpack_bytes;pack_bytes IMPLEMENTS = unpack_double_subarray IMPLEMENTS = init;dump;destroy;string_length @@ -51,11 +52,13 @@ static int pack_bytes(grib_accessor*,const unsigned char*, size_t *len); static int pack_double(grib_accessor*, const double* val,size_t *len); static int pack_long(grib_accessor*, const long* val,size_t *len); static int pack_string(grib_accessor*, const char*, size_t *len); +static int pack_string_array(grib_accessor*, const char**, size_t *len); static int pack_expression(grib_accessor*, grib_expression*); static int unpack_bytes (grib_accessor*,unsigned char*, size_t *len); static int unpack_double(grib_accessor*, double* val,size_t *len); static int unpack_long(grib_accessor*, long* val,size_t *len); static int unpack_string (grib_accessor*, char*, size_t *len); +static int unpack_string_array (grib_accessor*, char**, size_t *len); static size_t string_length(grib_accessor*); static long byte_count(grib_accessor*); static long byte_offset(grib_accessor*); @@ -105,6 +108,8 @@ static grib_accessor_class _grib_accessor_class_gen = { &unpack_double, /* grib_unpack procedures double */ &pack_string, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + &pack_string_array, /* grib_pack array procedures string */ + &unpack_string_array, /* grib_unpack array procedures string */ &pack_bytes, /* grib_pack procedures bytes */ &unpack_bytes, /* grib_unpack procedures bytes */ &pack_expression, /* pack_expression */ @@ -178,14 +183,21 @@ static void init(grib_accessor* a,const long len, grib_arguments* param) static void dump(grib_accessor* a, grib_dumper* dumper) { - if(a->cclass->unpack_string) + int type=grib_accessor_get_native_type(a); + + switch (type) { + case GRIB_TYPE_STRING: grib_dump_string(dumper,a,NULL); - else if(a->cclass->unpack_double) + break; + case GRIB_TYPE_DOUBLE: grib_dump_double(dumper,a,NULL); - else if(a->cclass->unpack_long) + break; + case GRIB_TYPE_LONG: grib_dump_long(dumper,a,NULL); - else + break; + default: grib_dump_bytes(dumper,a,NULL); + } } static long next_offset(grib_accessor* a) @@ -341,6 +353,10 @@ static int unpack_string(grib_accessor*a , char* v, size_t *len){ return GRIB_NOT_IMPLEMENTED; } +static int unpack_string_array(grib_accessor*a , char** v, size_t *len){ + return GRIB_NOT_IMPLEMENTED; +} + static int pack_expression(grib_accessor* a, grib_expression *e){ size_t len = 1; long lval; @@ -423,6 +439,10 @@ static int pack_double(grib_accessor* a, const double *v, size_t *len){ return GRIB_NOT_IMPLEMENTED; } +static int pack_string_array(grib_accessor*a , const char** v, size_t *len){ + return GRIB_NOT_IMPLEMENTED; +} + static int pack_string(grib_accessor*a , const char* v, size_t *len){ if(a->cclass->pack_double && a->cclass->pack_double != &pack_double) { diff --git a/src/grib_accessor_class_group.c b/src/grib_accessor_class_group.c index a0896f400..f1aa066be 100644 --- a/src/grib_accessor_class_group.c +++ b/src/grib_accessor_class_group.c @@ -11,7 +11,7 @@ * Enrico Fucile ***********************************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_hash_array.c b/src/grib_accessor_class_hash_array.c index e9825227b..77d4d9e3a 100644 --- a/src/grib_accessor_class_hash_array.c +++ b/src/grib_accessor_class_hash_array.c @@ -13,7 +13,7 @@ * Enrico Fucile ******************************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_ibmfloat.c b/src/grib_accessor_class_ibmfloat.c index 56b4d0ff0..e0dbc0b8a 100644 --- a/src/grib_accessor_class_ibmfloat.c +++ b/src/grib_accessor_class_ibmfloat.c @@ -89,6 +89,8 @@ static grib_accessor_class _grib_accessor_class_ibmfloat = { &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -120,6 +122,8 @@ static void init_class(grib_accessor_class* c) c->unpack_long = (*(c->super))->unpack_long; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_ieeefloat.c b/src/grib_accessor_class_ieeefloat.c index d6139d70e..51f66c7bf 100644 --- a/src/grib_accessor_class_ieeefloat.c +++ b/src/grib_accessor_class_ieeefloat.c @@ -78,6 +78,8 @@ static grib_accessor_class _grib_accessor_class_ieeefloat = { &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -112,6 +114,8 @@ static void init_class(grib_accessor_class* c) c->unpack_long = (*(c->super))->unpack_long; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_label.c b/src/grib_accessor_class_label.c index a86184c5e..bce1b2dcb 100644 --- a/src/grib_accessor_class_label.c +++ b/src/grib_accessor_class_label.c @@ -71,6 +71,8 @@ static grib_accessor_class _grib_accessor_class_label = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -105,6 +107,8 @@ static void init_class(grib_accessor_class* c) c->pack_double = (*(c->super))->pack_double; c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_long.c b/src/grib_accessor_class_long.c index 9f3c994c0..d59a7b6ab 100644 --- a/src/grib_accessor_class_long.c +++ b/src/grib_accessor_class_long.c @@ -76,6 +76,8 @@ static grib_accessor_class _grib_accessor_class_long = { &unpack_double, /* grib_unpack procedures double */ &pack_string, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -107,6 +109,8 @@ static void init_class(grib_accessor_class* c) c->pack_long = (*(c->super))->pack_long; c->unpack_long = (*(c->super))->unpack_long; c->pack_double = (*(c->super))->pack_double; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_lookup.c b/src/grib_accessor_class_lookup.c index abc373fa6..b8f9431a9 100644 --- a/src/grib_accessor_class_lookup.c +++ b/src/grib_accessor_class_lookup.c @@ -86,6 +86,8 @@ static grib_accessor_class _grib_accessor_class_lookup = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -117,6 +119,8 @@ static void init_class(grib_accessor_class* c) c->pack_double = (*(c->super))->pack_double; c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_md5.c b/src/grib_accessor_class_md5.c index 2e9bfe272..77cce6a00 100644 --- a/src/grib_accessor_class_md5.c +++ b/src/grib_accessor_class_md5.c @@ -19,7 +19,8 @@ IMPLEMENTS = get_native_type;init IMPLEMENTS = compare;unpack_string;value_count MEMBERS = const char* offset - MEMBERS = const char* length + MEMBERS = grib_expression* length + MEMBERS = grib_string_list* blacklist END_CLASS_DEF */ @@ -46,7 +47,8 @@ typedef struct grib_accessor_md5 { /* Members defined in gen */ /* Members defined in md5 */ const char* offset; - const char* length; + grib_expression* length; + grib_string_list* blacklist; } grib_accessor_md5; extern grib_accessor_class* grib_accessor_class_gen; @@ -76,6 +78,8 @@ static grib_accessor_class _grib_accessor_class_md5 = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -110,6 +114,8 @@ static void init_class(grib_accessor_class* c) c->pack_double = (*(c->super))->pack_double; c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; @@ -129,10 +135,25 @@ static void init_class(grib_accessor_class* c) static void init(grib_accessor* a, const long len , grib_arguments* arg ) { grib_accessor_md5* self = (grib_accessor_md5*)a; + char* b=0; int n=0; + grib_string_list* current=0; + grib_context* context=a->parent->h->context; self->offset = grib_arguments_get_name(a->parent->h,arg,n++); - self->length = grib_arguments_get_name(a->parent->h,arg,n++); + self->length = grib_arguments_get_expression(a->parent->h,arg,n++); + self->blacklist=0; + while ( (b=(char*)grib_arguments_get_name(a->parent->h,arg,n++)) !=NULL) { + if (! self->blacklist) { + self->blacklist=grib_context_malloc_clear(context,sizeof(grib_string_list)); + self->blacklist->value=grib_context_strdup(context,b); + current=self->blacklist; + } else { + current->next=grib_context_malloc_clear(context,sizeof(grib_string_list)); + current->next->value=grib_context_strdup(context,b); + current=current->next; + } + } a->length = 0; a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY; a->flags |= GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; @@ -185,18 +206,20 @@ static int unpack_string(grib_accessor*a , char* v, size_t *len){ if((ret = grib_get_long_internal(a->parent->h,self->offset,&offset)) != GRIB_SUCCESS) return ret; - if((ret = grib_get_long_internal(a->parent->h,self->length,&length)) + if((ret = grib_expression_evaluate_long(a->parent->h,self->length,&length)) != GRIB_SUCCESS) return ret; - mess=grib_context_malloc(a->parent->h->context,length); memcpy(mess,a->parent->h->buffer->data+offset,length); mess_len=length; blacklist=a->parent->h->context->blacklist; + /* passed blacklist overrides context blacklist. + Consider to modify following line to extend context blacklist. + */ + if (self->blacklist) blacklist=self->blacklist; while (blacklist && blacklist->value) { - b=grib_find_accessor(a->parent->h,blacklist->value); if (!b) { grib_context_free(a->parent->h->context,mess); diff --git a/src/grib_accessor_class_message.c b/src/grib_accessor_class_message.c index 0de37786b..fb4a3acc3 100644 --- a/src/grib_accessor_class_message.c +++ b/src/grib_accessor_class_message.c @@ -79,6 +79,8 @@ static grib_accessor_class _grib_accessor_class_message = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -113,6 +115,8 @@ static void init_class(grib_accessor_class* c) c->pack_double = (*(c->super))->pack_double; c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_message_copy.c b/src/grib_accessor_class_message_copy.c index 3f2da91c7..fa7555ca3 100644 --- a/src/grib_accessor_class_message_copy.c +++ b/src/grib_accessor_class_message_copy.c @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_missing.c b/src/grib_accessor_class_missing.c index 3aa57a2b6..fefe5c785 100644 --- a/src/grib_accessor_class_missing.c +++ b/src/grib_accessor_class_missing.c @@ -95,6 +95,8 @@ static grib_accessor_class _grib_accessor_class_missing = { &unpack_double, /* grib_unpack procedures double */ &pack_string, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ &pack_bytes, /* grib_pack procedures bytes */ &unpack_bytes, /* grib_unpack procedures bytes */ &pack_expression, /* pack_expression */ diff --git a/src/grib_accessor_class_non_alpha.c b/src/grib_accessor_class_non_alpha.c index 5fd415d70..8adda6bfb 100644 --- a/src/grib_accessor_class_non_alpha.c +++ b/src/grib_accessor_class_non_alpha.c @@ -11,7 +11,7 @@ * Enrico Fucile ***********************************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_pad.c b/src/grib_accessor_class_pad.c index 68b57a6b8..793aaf629 100644 --- a/src/grib_accessor_class_pad.c +++ b/src/grib_accessor_class_pad.c @@ -76,6 +76,8 @@ static grib_accessor_class _grib_accessor_class_pad = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -113,6 +115,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_padding.c b/src/grib_accessor_class_padding.c index 7dd46480f..94775510b 100644 --- a/src/grib_accessor_class_padding.c +++ b/src/grib_accessor_class_padding.c @@ -78,6 +78,8 @@ static grib_accessor_class _grib_accessor_class_padding = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -112,6 +114,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_padto.c b/src/grib_accessor_class_padto.c index 5b62e84de..c036d3104 100644 --- a/src/grib_accessor_class_padto.c +++ b/src/grib_accessor_class_padto.c @@ -76,6 +76,8 @@ static grib_accessor_class _grib_accessor_class_padto = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -112,6 +114,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_padtoeven.c b/src/grib_accessor_class_padtoeven.c index 8d591e977..024abdb32 100644 --- a/src/grib_accessor_class_padtoeven.c +++ b/src/grib_accessor_class_padtoeven.c @@ -78,6 +78,8 @@ static grib_accessor_class _grib_accessor_class_padtoeven = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -115,6 +117,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_padtomultiple.c b/src/grib_accessor_class_padtomultiple.c index 48991fd10..2e56c193d 100644 --- a/src/grib_accessor_class_padtomultiple.c +++ b/src/grib_accessor_class_padtomultiple.c @@ -78,6 +78,8 @@ static grib_accessor_class _grib_accessor_class_padtomultiple = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -115,6 +117,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_position.c b/src/grib_accessor_class_position.c index 2703138c5..a95f6dd00 100644 --- a/src/grib_accessor_class_position.c +++ b/src/grib_accessor_class_position.c @@ -78,6 +78,8 @@ static grib_accessor_class _grib_accessor_class_position = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -112,6 +114,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_section.c b/src/grib_accessor_class_section.c index c0f5cbf7f..720db789f 100644 --- a/src/grib_accessor_class_section.c +++ b/src/grib_accessor_class_section.c @@ -79,6 +79,8 @@ static grib_accessor_class _grib_accessor_class_section = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -111,6 +113,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_section_padding.c b/src/grib_accessor_class_section_padding.c index 41769e1e4..e229e6e85 100644 --- a/src/grib_accessor_class_section_padding.c +++ b/src/grib_accessor_class_section_padding.c @@ -71,6 +71,8 @@ static grib_accessor_class _grib_accessor_class_section_padding = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -108,6 +110,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_sexagesimal2decimal.c b/src/grib_accessor_class_sexagesimal2decimal.c index b91b038cd..9afb1c41e 100644 --- a/src/grib_accessor_class_sexagesimal2decimal.c +++ b/src/grib_accessor_class_sexagesimal2decimal.c @@ -11,7 +11,7 @@ * Enrico Fucile ***********************************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_signed.c b/src/grib_accessor_class_signed.c index c315af90c..861cc4306 100644 --- a/src/grib_accessor_class_signed.c +++ b/src/grib_accessor_class_signed.c @@ -87,6 +87,8 @@ static grib_accessor_class _grib_accessor_class_signed = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -116,6 +118,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_signed_bits.c b/src/grib_accessor_class_signed_bits.c index 0cd11c2e9..5ad2b002a 100644 --- a/src/grib_accessor_class_signed_bits.c +++ b/src/grib_accessor_class_signed_bits.c @@ -86,6 +86,8 @@ static grib_accessor_class _grib_accessor_class_signed_bits = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -116,6 +118,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_smart_table.c b/src/grib_accessor_class_smart_table.c index 752572391..dae324543 100644 --- a/src/grib_accessor_class_smart_table.c +++ b/src/grib_accessor_class_smart_table.c @@ -12,7 +12,7 @@ * Enrico Fucile ****************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" #include /* @@ -217,16 +217,16 @@ static grib_smart_table* load_table(grib_accessor_smart_table* self) if (*masterDir!=0) { sprintf(name,"%s/%s",masterDir,self->tablename); grib_recompose_name(h, NULL,name, recomposed,0); - filename=grib_context_full_path(c,recomposed); + filename=grib_context_full_defs_path(c,recomposed); } else { grib_recompose_name(h, NULL,self->tablename, recomposed,0); - filename=grib_context_full_path(c,recomposed); + filename=grib_context_full_defs_path(c,recomposed); } if (*localDir!=0) { sprintf(localName,"%s/%s",localDir,self->tablename); grib_recompose_name(h, NULL,localName, localRecomposed,0); - localFilename=grib_context_full_path(c,localRecomposed); + localFilename=grib_context_full_defs_path(c,localRecomposed); } next=c->smart_table; diff --git a/src/grib_accessor_class_smart_table_column.c b/src/grib_accessor_class_smart_table_column.c index d4a810f0e..d1cf3ce5b 100644 --- a/src/grib_accessor_class_smart_table_column.c +++ b/src/grib_accessor_class_smart_table_column.c @@ -12,7 +12,7 @@ * Enrico Fucile ****************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" #include /* diff --git a/src/grib_accessor_class_spd.c b/src/grib_accessor_class_spd.c index b2d915e4a..3d1ccb082 100644 --- a/src/grib_accessor_class_spd.c +++ b/src/grib_accessor_class_spd.c @@ -86,6 +86,8 @@ static grib_accessor_class _grib_accessor_class_spd = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -116,6 +118,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_statistics.c b/src/grib_accessor_class_statistics.c index 24e880dc2..c09bbf1ec 100644 --- a/src/grib_accessor_class_statistics.c +++ b/src/grib_accessor_class_statistics.c @@ -87,6 +87,8 @@ static grib_accessor_class _grib_accessor_class_statistics = { &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -121,6 +123,8 @@ static void init_class(grib_accessor_class* c) c->unpack_long = (*(c->super))->unpack_long; c->pack_double = (*(c->super))->pack_double; c->pack_string = (*(c->super))->pack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_statistics_spectral.c b/src/grib_accessor_class_statistics_spectral.c index b0af894d1..1592e007b 100644 --- a/src/grib_accessor_class_statistics_spectral.c +++ b/src/grib_accessor_class_statistics_spectral.c @@ -91,6 +91,8 @@ static grib_accessor_class _grib_accessor_class_statistics_spectral = { &unpack_double, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -126,6 +128,8 @@ static void init_class(grib_accessor_class* c) c->pack_double = (*(c->super))->pack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_to_double.c b/src/grib_accessor_class_to_double.c index cddf4111d..298761878 100644 --- a/src/grib_accessor_class_to_double.c +++ b/src/grib_accessor_class_to_double.c @@ -11,7 +11,7 @@ * Enrico Fucile ***********************************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_to_integer.c b/src/grib_accessor_class_to_integer.c index 9924d77f1..ca236522b 100644 --- a/src/grib_accessor_class_to_integer.c +++ b/src/grib_accessor_class_to_integer.c @@ -11,7 +11,7 @@ * Enrico Fucile ***********************************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_to_string.c b/src/grib_accessor_class_to_string.c index 90803b44a..f79c3a98f 100644 --- a/src/grib_accessor_class_to_string.c +++ b/src/grib_accessor_class_to_string.c @@ -11,7 +11,7 @@ * Enrico Fucile ***********************************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_unexpanded_descriptors.c b/src/grib_accessor_class_unexpanded_descriptors.c index 8df5f7e5b..c0fafe3c7 100644 --- a/src/grib_accessor_class_unexpanded_descriptors.c +++ b/src/grib_accessor_class_unexpanded_descriptors.c @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_accessor_class_unpack_bufr_values.c b/src/grib_accessor_class_unpack_bufr_values.c index 908c811bd..dfec2f689 100644 --- a/src/grib_accessor_class_unpack_bufr_values.c +++ b/src/grib_accessor_class_unpack_bufr_values.c @@ -11,7 +11,7 @@ * Enrico Fucile ****************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" #include /* diff --git a/src/grib_accessor_class_unsigned.c b/src/grib_accessor_class_unsigned.c index ef0605c06..768c5353c 100644 --- a/src/grib_accessor_class_unsigned.c +++ b/src/grib_accessor_class_unsigned.c @@ -87,6 +87,8 @@ static grib_accessor_class _grib_accessor_class_unsigned = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -116,6 +118,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_unsigned_bits.c b/src/grib_accessor_class_unsigned_bits.c index b608a3a0a..f073e19f4 100644 --- a/src/grib_accessor_class_unsigned_bits.c +++ b/src/grib_accessor_class_unsigned_bits.c @@ -86,6 +86,8 @@ static grib_accessor_class _grib_accessor_class_unsigned_bits = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -116,6 +118,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_values.c b/src/grib_accessor_class_values.c index dca3905b6..d0d3a8ac5 100644 --- a/src/grib_accessor_class_values.c +++ b/src/grib_accessor_class_values.c @@ -93,6 +93,8 @@ static grib_accessor_class _grib_accessor_class_values = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -124,6 +126,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_variable.c b/src/grib_accessor_class_variable.c index d63236d4d..7b51b2d29 100644 --- a/src/grib_accessor_class_variable.c +++ b/src/grib_accessor_class_variable.c @@ -90,6 +90,8 @@ static grib_accessor_class _grib_accessor_class_variable = { &unpack_double, /* grib_unpack procedures double */ &pack_string, /* grib_pack procedures string */ &unpack_string, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -116,6 +118,8 @@ static void init_class(grib_accessor_class* c) c->sub_section = (*(c->super))->sub_section; c->pack_missing = (*(c->super))->pack_missing; c->is_missing = (*(c->super))->is_missing; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_accessor_class_when.c b/src/grib_accessor_class_when.c index 42725587c..fb2263667 100644 --- a/src/grib_accessor_class_when.c +++ b/src/grib_accessor_class_when.c @@ -74,6 +74,8 @@ static grib_accessor_class _grib_accessor_class_when = { 0, /* grib_unpack procedures double */ 0, /* grib_pack procedures string */ 0, /* grib_unpack procedures string */ + 0, /* grib_pack array procedures string */ + 0, /* grib_unpack array procedures string */ 0, /* grib_pack procedures bytes */ 0, /* grib_unpack procedures bytes */ 0, /* pack_expression */ @@ -110,6 +112,8 @@ static void init_class(grib_accessor_class* c) c->unpack_double = (*(c->super))->unpack_double; c->pack_string = (*(c->super))->pack_string; c->unpack_string = (*(c->super))->unpack_string; + c->pack_string_array = (*(c->super))->pack_string_array; + c->unpack_string_array = (*(c->super))->unpack_string_array; c->pack_bytes = (*(c->super))->pack_bytes; c->unpack_bytes = (*(c->super))->unpack_bytes; c->pack_expression = (*(c->super))->pack_expression; diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h index 588f408f7..bca420370 100644 --- a/src/grib_api_prototypes.h +++ b/src/grib_api_prototypes.h @@ -194,7 +194,7 @@ long grib_iarray_pop(grib_iarray *a); long grib_iarray_pop_front(grib_iarray *a); grib_iarray *grib_iarray_resize_to(grib_iarray *v, size_t newsize); grib_iarray *grib_iarray_resize(grib_iarray *v); -grib_iarray *grib_iarray_push(grib_context *c, grib_iarray *v, long val); +grib_iarray *grib_iarray_push(grib_iarray *v, long val); grib_iarray *grib_iarray_push_front(grib_iarray *v, long val); grib_iarray *grib_iarray_push_array(grib_iarray *v, long *val, size_t size); long grib_iarray_get(grib_iarray *a, size_t i); diff --git a/src/grib_context.c b/src/grib_context.c index 6e26584f7..a1881e563 100644 --- a/src/grib_context.c +++ b/src/grib_context.c @@ -286,6 +286,7 @@ static grib_context default_grib_context = { &default_log, /* logging_procedure */ &default_print, /* print procedure */ 0, /* code tables */ + 0, /* smart tables */ 0, /* files */ 0, /* multigrib support on */ 0, /* multigrib support */ @@ -302,11 +303,16 @@ static grib_context default_grib_context = { 0, /* concepts_index */ 0, /* concepts_count */ {0,}, /* concepts */ + 0, /* hash_array_index */ + 0, /* hash_array_count */ + {0,}, /* hash_array */ 0, /* def_files */ 0, /* ieee_packing */ + 0, /* unpack */ 0, /* blacklist */ 0, /* log_stream */ - 0 /* classes */ + 0, /* classes */ + 0 /* lists */ #if GRIB_PTHREADS ,PTHREAD_MUTEX_INITIALIZER /* mutex */ #endif @@ -329,6 +335,7 @@ grib_context* grib_context_get_default() const char *no_big_group_split=NULL; const char *no_spd=NULL; const char *keep_matrix=NULL; + const char *nounpack=NULL; GRIB_MUTEX_LOCK(&mutex_c); @@ -343,6 +350,7 @@ grib_context* grib_context_get_default() no_big_group_split=getenv("GRIB_API_NO_BIG_GROUP_SPLIT"); no_spd=getenv("GRIB_API_NO_SPD"); keep_matrix=getenv("GRIB_API_KEEP_MATRIX"); + nounpack=getenv("GRIB_API_NO_UNPACK"); /* On UNIX, when we read from a file we get exactly what is in the file on disk. * But on Windows a file can be opened in binary or text mode. In binary mode the system behaves exactly as in UNIX. @@ -356,6 +364,7 @@ grib_context* grib_context_get_default() default_grib_context.no_big_group_split = no_big_group_split ? atoi(no_big_group_split) : 0; default_grib_context.no_spd = no_spd ? atoi(no_spd) : 0; default_grib_context.keep_matrix = keep_matrix ? atoi(keep_matrix) : 1; + default_grib_context.unpack = nounpack ? 0 : 1; default_grib_context.write_on_fail = write_on_fail ? atoi(write_on_fail) : 0; default_grib_context.no_abort = no_abort ? atoi(no_abort) : 0; default_grib_context.debug = debug ? atoi(debug) : 0; @@ -396,7 +405,10 @@ grib_context* grib_context_get_default() default_grib_context.concepts_index=grib_itrie_new(&(default_grib_context), &(default_grib_context.concepts_count)); + default_grib_context.hash_array_index=grib_itrie_new(&(default_grib_context), + &(default_grib_context.hash_array_count)); default_grib_context.def_files=grib_trie_new(&(default_grib_context)); + default_grib_context.lists=grib_trie_new(&(default_grib_context)); default_grib_context.classes=grib_trie_new(&(default_grib_context)); GRIB_MUTEX_UNLOCK(&mutex_c); @@ -440,6 +452,7 @@ grib_context* grib_context_new(grib_context* parent) c->print = default_grib_context.print ; c->user_data = default_grib_context.user_data; c->def_files = default_grib_context.def_files; + c->lists = default_grib_context.lists; #if GRIB_PTHREADS pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE); @@ -635,6 +648,9 @@ void grib_context_reset(grib_context* c) if(c->codetable) grib_codetable_delete(c); c->codetable = NULL; + if(c->smart_table) grib_smart_table_delete(c); + c->smart_table = NULL; + if(c->grib_definition_files_dir) grib_context_free(c,c->grib_definition_files_dir); diff --git a/src/grib_dumper_class_c_code.c b/src/grib_dumper_class_c_code.c index f1b847d0d..fa85e9a6f 100644 --- a/src/grib_dumper_class_c_code.c +++ b/src/grib_dumper_class_c_code.c @@ -69,6 +69,7 @@ static grib_dumper_class _grib_dumper_class_c_code = { &dump_long, /* dump long */ &dump_double, /* dump double */ &dump_string, /* dump string */ + 0, /* dump string array */ &dump_label, /* dump labels */ &dump_bytes, /* dump bytes */ &dump_bits, /* dump bits */ diff --git a/src/grib_dumper_class_debug.c b/src/grib_dumper_class_debug.c index 291cb9ce1..0ff7662ef 100644 --- a/src/grib_dumper_class_debug.c +++ b/src/grib_dumper_class_debug.c @@ -70,6 +70,7 @@ static grib_dumper_class _grib_dumper_class_debug = { &dump_long, /* dump long */ &dump_double, /* dump double */ &dump_string, /* dump string */ + 0, /* dump string array */ &dump_label, /* dump labels */ &dump_bytes, /* dump bytes */ &dump_bits, /* dump bits */ diff --git a/src/grib_dumper_class_default.c b/src/grib_dumper_class_default.c index e32586bbe..ccb5d480c 100644 --- a/src/grib_dumper_class_default.c +++ b/src/grib_dumper_class_default.c @@ -21,7 +21,7 @@ START_CLASS_DEF CLASS = dumper IMPLEMENTS = dump_long;dump_bits - IMPLEMENTS = dump_double;dump_string + IMPLEMENTS = dump_double;dump_string;dump_string_array IMPLEMENTS = dump_bytes;dump_values IMPLEMENTS = dump_label;dump_section IMPLEMENTS = init;destroy @@ -50,6 +50,7 @@ static void dump_long (grib_dumper* d, grib_accessor* a,const char* commen static void dump_bits (grib_dumper* d, grib_accessor* a,const char* comment); static void dump_double (grib_dumper* d, grib_accessor* a,const char* comment); static void dump_string (grib_dumper* d, grib_accessor* a,const char* comment); +static void dump_string_array (grib_dumper* d, grib_accessor* a,const char* comment); static void dump_bytes (grib_dumper* d, grib_accessor* a,const char* comment); static void dump_values (grib_dumper* d, grib_accessor* a); static void dump_label (grib_dumper* d, grib_accessor* a,const char* comment); @@ -75,6 +76,7 @@ static grib_dumper_class _grib_dumper_class_default = { &dump_long, /* dump long */ &dump_double, /* dump double */ &dump_string, /* dump string */ + &dump_string_array, /* dump string array */ &dump_label, /* dump labels */ &dump_bytes, /* dump bytes */ &dump_bits, /* dump bits */ @@ -300,6 +302,73 @@ static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment) fprintf(self->dumper.out,"\n"); } +static void dump_string_array(grib_dumper* d,grib_accessor* a,const char* comment) +{ + grib_dumper_default *self = (grib_dumper_default*)d; + char **values; + size_t size = 0,i=0; + grib_context* c=NULL; + int err = 0; + int tab=0; + long count=0; + + c=a->parent->h->context; + + grib_value_count(a,&count); + size=count; + if (size==1) { + dump_string(d,a,comment); + return; + } + + values=(char**)grib_context_malloc_clear(c,size*sizeof(char*)); + if (!values) { + grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size); + return; + } + + err = grib_unpack_string_array(a,values,&size); + + if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0) + return; + + + print_offset(self->dumper.out,d,a); + + if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) { + fprintf(self->dumper.out," "); + fprintf(self->dumper.out,"# type %s \n",a->creator->op); + } + + aliases(d,a); + if(comment) { + fprintf(self->dumper.out," "); + fprintf(self->dumper.out,"# %s \n",comment); + } + + if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) { + fprintf(self->dumper.out," "); + fprintf(self->dumper.out,"#-READ ONLY- "); + tab=13; + } else + fprintf(self->dumper.out," "); + + tab++; + fprintf(self->dumper.out,"%s = {\n",a->name); + for (i=0;idumper.out,"%-*s\"%s\",\n",(int)(tab+strlen(a->name)+4)," ",values[i]); + } + fprintf(self->dumper.out," }"); + + if(err) { + fprintf(self->dumper.out," "); + fprintf(self->dumper.out,"# *** ERR=%d (%s)",err,grib_get_error_message(err)); + } + + fprintf(self->dumper.out,"\n"); + grib_context_free(c,values); +} + static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment) { grib_dumper_default *self = (grib_dumper_default*)d; diff --git a/src/grib_dumper_class_json.c b/src/grib_dumper_class_json.c index 2c6c4eab7..4a49c9c36 100644 --- a/src/grib_dumper_class_json.c +++ b/src/grib_dumper_class_json.c @@ -16,7 +16,7 @@ START_CLASS_DEF CLASS = dumper IMPLEMENTS = dump_long;dump_bits - IMPLEMENTS = dump_double;dump_string + IMPLEMENTS = dump_double;dump_string;dump_string_array IMPLEMENTS = dump_bytes;dump_values IMPLEMENTS = dump_label;dump_section IMPLEMENTS = init;destroy @@ -45,6 +45,7 @@ static void dump_long (grib_dumper* d, grib_accessor* a,const char* commen static void dump_bits (grib_dumper* d, grib_accessor* a,const char* comment); static void dump_double (grib_dumper* d, grib_accessor* a,const char* comment); static void dump_string (grib_dumper* d, grib_accessor* a,const char* comment); +static void dump_string_array (grib_dumper* d, grib_accessor* a,const char* comment); static void dump_bytes (grib_dumper* d, grib_accessor* a,const char* comment); static void dump_values (grib_dumper* d, grib_accessor* a); static void dump_label (grib_dumper* d, grib_accessor* a,const char* comment); @@ -70,6 +71,7 @@ static grib_dumper_class _grib_dumper_class_json = { &dump_long, /* dump long */ &dump_double, /* dump double */ &dump_string, /* dump string */ + &dump_string_array, /* dump string array */ &dump_label, /* dump labels */ &dump_bytes, /* dump bytes */ &dump_bits, /* dump bits */ @@ -265,6 +267,53 @@ static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment) } +static void dump_string_array(grib_dumper* d,grib_accessor* a,const char* comment) +{ + grib_dumper_json *self = (grib_dumper_json*)d; + char **values; + size_t size = 0,i=0; + grib_context* c=NULL; + int err = 0; + int tab=0; + long count=0; + int mydepth=depth+2; + + c=a->parent->h->context; + + if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0) + return; + + grib_value_count(a,&count); + size=count; + if (size==1) { + dump_string(d,a,comment); + return; + } + + if (!self->begin) fprintf(self->dumper.out,",\n"); + else self->begin=0; + + values=(char**)grib_context_malloc_clear(c,size*sizeof(char*)); + if (!values) { + grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size); + return; + } + + err = grib_unpack_string_array(a,values,&size); + + fprintf(self->dumper.out,"%-*s",mydepth," "); + fprintf(self->dumper.out,"\"%s\" : [\n",a->name); + tab=mydepth+1; + for (i=0;idumper.out,"%-*s\"%s\",\n",(int)(tab+strlen(a->name)+4)," ",values[i]); + } + fprintf(self->dumper.out,"%-*s\"%s\"\n",(int)(tab+strlen(a->name)+4)," ",values[i]); + fprintf(self->dumper.out,"%-*s",mydepth," "); + fprintf(self->dumper.out," ],"); + + grib_context_free(c,values); +} + static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment) { grib_dumper_json *self = (grib_dumper_json*)d; @@ -306,6 +355,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment) static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment) { + } static void dump_label(grib_dumper* d,grib_accessor* a,const char* comment) @@ -315,14 +365,29 @@ static void dump_label(grib_dumper* d,grib_accessor* a,const char* comment) static void dump_section(grib_dumper* d,grib_accessor* a,grib_block_of_accessors* block) { grib_dumper_json *self = (grib_dumper_json*)d; - - if ( !grib_inline_strcmp(a->name,"GRIB") ) { + if (!grib_inline_strcmp(a->name,"BUFR") || + !grib_inline_strcmp(a->name,"GRIB") || + !grib_inline_strcmp(a->name,"META") + ) { fprintf(self->dumper.out,"{\n"); self->begin=1; grib_dump_accessors_block(d,block); fprintf(self->dumper.out,"\n}\n"); - } - else { + } else if (!grib_inline_strcmp(a->name,"groupNumber")) { + depth+=2; + fprintf(self->dumper.out,",\n"); + fprintf(self->dumper.out,"%-*s",depth," "); + fprintf(self->dumper.out,"\"group%d\" : {",(int)a->bufr_group_number); + fprintf(self->dumper.out,"\n"); + /* fprintf(self->dumper.out,"%-*s",depth," "); */ + self->begin=1; + grib_dump_accessors_block(d,block); + fprintf(self->dumper.out,"\n"); + fprintf(self->dumper.out,"%-*s",depth," "); + fprintf(self->dumper.out,"}"); + depth-=2; + } else { grib_dump_accessors_block(d,block); } } + diff --git a/src/grib_dumper_class_keys.c b/src/grib_dumper_class_keys.c index 427753a67..3c1c57bf6 100644 --- a/src/grib_dumper_class_keys.c +++ b/src/grib_dumper_class_keys.c @@ -75,6 +75,7 @@ static grib_dumper_class _grib_dumper_class_keys = { &dump_long, /* dump long */ &dump_double, /* dump double */ &dump_string, /* dump string */ + 0, /* dump string array */ &dump_label, /* dump labels */ &dump_bytes, /* dump bytes */ &dump_bits, /* dump bits */ diff --git a/src/grib_dumper_class_serialize.c b/src/grib_dumper_class_serialize.c index c25744447..b7813ad17 100644 --- a/src/grib_dumper_class_serialize.c +++ b/src/grib_dumper_class_serialize.c @@ -70,6 +70,7 @@ static grib_dumper_class _grib_dumper_class_serialize = { &dump_long, /* dump long */ &dump_double, /* dump double */ &dump_string, /* dump string */ + 0, /* dump string array */ &dump_label, /* dump labels */ &dump_bytes, /* dump bytes */ &dump_bits, /* dump bits */ diff --git a/src/grib_dumper_class_wmo.c b/src/grib_dumper_class_wmo.c index 2e80f5804..b9c488a5a 100644 --- a/src/grib_dumper_class_wmo.c +++ b/src/grib_dumper_class_wmo.c @@ -75,6 +75,7 @@ static grib_dumper_class _grib_dumper_class_wmo = { &dump_long, /* dump long */ &dump_double, /* dump double */ &dump_string, /* dump string */ + 0, /* dump string array */ &dump_label, /* dump labels */ &dump_bytes, /* dump bytes */ &dump_bits, /* dump bits */ diff --git a/src/grib_dumper_class_xml.c b/src/grib_dumper_class_xml.c index baecc6c2e..e39eb051f 100644 --- a/src/grib_dumper_class_xml.c +++ b/src/grib_dumper_class_xml.c @@ -13,7 +13,7 @@ **************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" #include /* This is used by make_class.pl diff --git a/src/grib_errors.c b/src/grib_errors.c index ce0bc1944..92c9f6047 100644 --- a/src/grib_errors.c +++ b/src/grib_errors.c @@ -40,25 +40,28 @@ static const char *errors[] = { "Missing a key from the fieldset", /* -34 GRIB_MISSING_KEY */ "The point is out of the grid area", /* -35 GRIB_OUT_OF_AREA */ "Concept no match", /* -36 GRIB_CONCEPT_NO_MATCH */ -"Definitions files not found", /* -37 GRIB_NO_DEFINITIONS */ -"Wrong type while packing", /* -38 GRIB_WRONG_TYPE */ -"End of resource", /* -39 GRIB_END */ -"Unable to code a field without values", /* -40 GRIB_NO_VALUES */ -"Grid description is wrong or inconsistent", /* -41 GRIB_WRONG_GRID */ -"End of index reached", /* -42 GRIB_END_OF_INDEX */ -"Null index", /* -43 GRIB_NULL_INDEX */ -"End of resource reached when reading message", /* -44 GRIB_PREMATURE_END_OF_FILE */ -"An internal array is too small", /* -45 GRIB_INTERNAL_ARRAY_TOO_SMALL */ -"Message is too large for the current architecture", /* -46 GRIB_MESSAGE_TOO_LARGE */ -"Constant field", /* -47 GRIB_CONSTANT_FIELD */ -"Switch unable to find a matching case", /* -48 GRIB_SWITCH_NO_MATCH */ -"Underflow", /* -49 GRIB_UNDERFLOW */ -"Message malformed", /* -50 GRIB_MESSAGE_MALFORMED */ -"Index is corrupted", /* -51 GRIB_CORRUPTED_INDEX */ -"Invalid number of bits per value", /* -52 GRIB_INVALID_BPV */ -"Edition of two messages is different", /* -53 GRIB_DIFFERENT_EDITION */ -"Value is different", /* -54 GRIB_VALUE_DIFFERENT */ -"Invalid key value", /* -55 GRIB_INVALID_KEY_VALUE */ +"Hash array no match", /* -37 GRIB_HASH_ARRAY_NO_MATCH */ +"Definitions files not found", /* -38 GRIB_NO_DEFINITIONS */ +"Wrong type while packing", /* -39 GRIB_WRONG_TYPE */ +"End of resource", /* -40 GRIB_END */ +"Unable to code a field without values", /* -41 GRIB_NO_VALUES */ +"Grid description is wrong or inconsistent", /* -42 GRIB_WRONG_GRID */ +"End of index reached", /* -43 GRIB_END_OF_INDEX */ +"Null index", /* -44 GRIB_NULL_INDEX */ +"End of resource reached when reading message", /* -45 GRIB_PREMATURE_END_OF_FILE */ +"An internal array is too small", /* -46 GRIB_INTERNAL_ARRAY_TOO_SMALL */ +"Message is too large for the current architecture", /* -47 GRIB_MESSAGE_TOO_LARGE */ +"Constant field", /* -48 GRIB_CONSTANT_FIELD */ +"Switch unable to find a matching case", /* -49 GRIB_SWITCH_NO_MATCH */ +"Underflow", /* -50 GRIB_UNDERFLOW */ +"Message malformed", /* -51 GRIB_MESSAGE_MALFORMED */ +"Index is corrupted", /* -52 GRIB_CORRUPTED_INDEX */ +"Invalid number of bits per value", /* -53 GRIB_INVALID_BPV */ +"Edition of two messages is different", /* -54 GRIB_DIFFERENT_EDITION */ +"Value is different", /* -55 GRIB_VALUE_DIFFERENT */ +"Invalid key value", /* -56 GRIB_INVALID_KEY_VALUE */ +"String is smaller than requested", /* -57 GRIB_STRING_TOO_SMALL */ +"Wrong type conversion", /* -58 GRIB_WRONG_CONVERSION */ "Value mismatch", /* 1 GRIB_VALUE_MISMATCH */ "double values are different", /* 2 GRIB_DOUBLE_VALUE_MISMATCH */ "long values are different", /* 3 GRIB_LONG_VALUE_MISMATCH */ @@ -103,7 +106,9 @@ void grib_check(const char* call,const char* file,int line,int e,const char* ms } } -void grib_fail(const char* expr,const char* file,int line) { + +void grib_fail(const char* expr,const char* file,int line,int silent) { + if (!silent) fprintf(stderr,"%s at line %d: assertion failure Assert(%s)\n",file,line,expr); abort(); } diff --git a/src/grib_expression_class_accessor.c b/src/grib_expression_class_accessor.c index 939cc2bd3..781278e20 100644 --- a/src/grib_expression_class_accessor.c +++ b/src/grib_expression_class_accessor.c @@ -26,6 +26,8 @@ IMPLEMENTS = compile IMPLEMENTS = add_dependency MEMBERS = char *name + MEMBERS = long start + MEMBERS = size_t length END_CLASS_DEF */ @@ -61,6 +63,8 @@ typedef struct grib_expression_accessor{ grib_expression base; /* Members defined in accessor */ char *name; + long start; + size_t length; } grib_expression_accessor; @@ -113,10 +117,22 @@ static int evaluate_double(grib_expression *g,grib_handle *h,double* result) static string evaluate_string(grib_expression* g,grib_handle* h,char* buf,size_t* size,int* err) { grib_expression_accessor* e = (grib_expression_accessor*)g; + char mybuf[1024]={0,}; + long start=e->start; + Assert(buf); - if((*err=grib_get_string_internal(h,e->name,buf,size)) != GRIB_SUCCESS) + if((*err=grib_get_string_internal(h,e->name,mybuf,size)) != GRIB_SUCCESS) return NULL; + if (e->start<0) start+=*size; + + if (e->length != 0) { + memcpy(buf,mybuf+start,e->length); + buf[e->length]=0; + } else { + memcpy(buf,mybuf,*size); + buf[*size]=0; + } return buf; } @@ -155,11 +171,13 @@ static void add_dependency(grib_expression* g, grib_accessor* observer){ grib_dependency_add(observer,observed); } -grib_expression* new_accessor_expression(grib_context* c,const char *name) +grib_expression* new_accessor_expression(grib_context* c,const char *name,long start, size_t length) { grib_expression_accessor* e = grib_context_malloc_clear_persistent(c,sizeof(grib_expression_accessor)); e->base.cclass = grib_expression_class_accessor; e->name = grib_context_strdup_persistent(c,name); + e->start = start; + e->length = length; return (grib_expression*)e; } diff --git a/src/grib_expression_class_is_in_dict.c b/src/grib_expression_class_is_in_dict.c index 410a37ee9..7a01218df 100644 --- a/src/grib_expression_class_is_in_dict.c +++ b/src/grib_expression_class_is_in_dict.c @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl @@ -107,7 +107,7 @@ static grib_trie* load_dictionary(grib_context* c,grib_expression* e, int* err) *err=GRIB_SUCCESS; - filename=grib_context_full_path(c,self->dictionary); + filename=grib_context_full_defs_path(c,self->dictionary); if (!filename) { grib_context_log(c,GRIB_LOG_ERROR,"unable to find def file %s",self->dictionary); *err=GRIB_FILE_NOT_FOUND; diff --git a/src/grib_expression_class_is_in_list.c b/src/grib_expression_class_is_in_list.c index 8b7024295..a2eef92cf 100644 --- a/src/grib_expression_class_is_in_list.c +++ b/src/grib_expression_class_is_in_list.c @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl @@ -106,7 +106,7 @@ static grib_trie* load_list(grib_context* c,grib_expression* e, int* err) { *err=GRIB_SUCCESS; - filename=grib_context_full_path(c,self->list); + filename=grib_context_full_defs_path(c,self->list); if (!filename) { grib_context_log(c,GRIB_LOG_ERROR,"unable to find def file %s",self->list); *err=GRIB_FILE_NOT_FOUND; diff --git a/src/grib_expression_class_is_integer.c b/src/grib_expression_class_is_integer.c index 3901507a4..60d23a714 100644 --- a/src/grib_expression_class_is_integer.c +++ b/src/grib_expression_class_is_integer.c @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_expression_class_length.c b/src/grib_expression_class_length.c index 39ffe697b..b90796c58 100644 --- a/src/grib_expression_class_length.c +++ b/src/grib_expression_class_length.c @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl diff --git a/src/grib_expression_class_sub_string.c b/src/grib_expression_class_sub_string.c index 0199d0c12..f5c6dcccb 100644 --- a/src/grib_expression_class_sub_string.c +++ b/src/grib_expression_class_sub_string.c @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" /* This is used by make_class.pl @@ -116,7 +116,7 @@ grib_expression* new_sub_string_expression(grib_context* c,const char* value,siz char v[1024]={0,}; grib_expression_sub_string* e = grib_context_malloc_clear_persistent(c,sizeof(grib_expression_sub_string)); - if (start<0) start+=strlen(value); +/* if (start<0) start+=strlen(value); */ memcpy(v,value+start,length); e->base.cclass = grib_expression_class_sub_string; diff --git a/src/grib_filepool.c b/src/grib_filepool.c index f4125ba4b..924309931 100644 --- a/src/grib_filepool.c +++ b/src/grib_filepool.c @@ -205,11 +205,14 @@ grib_file* grib_file_open(const char* filename, const char* mode,int* err) } if (!file->handle) { - /*printf("-- opening file %s %s\n",file->name,mode);*/ - if (!is_new && *mode == 'w') - file->handle = fopen(file->name,"a"); - else - file->handle = fopen(file->name,mode); + /*printf("-- opening file %s %s\n",file->name,mode);*/ + if (!is_new && *mode == 'w') { + /* fprintf(stderr,"++++ opening %s as append\n",file->name); */ + file->handle = fopen(file->name,"a"); + } else { + file->handle = fopen(file->name,mode); + /* fprintf(stderr,"++++ opening %s as mode\n",file->name); */ + } file->mode=strdup(mode); if (!file->handle) { @@ -239,6 +242,51 @@ grib_file* grib_file_open(const char* filename, const char* mode,int* err) return file; } +void grib_file_pool_delete_file(grib_file* file) { + grib_file* prev=NULL; + GRIB_PTHREAD_ONCE(&once,&init); + GRIB_MUTEX_LOCK(&mutex1); + + if (file==file_pool.first) { + file_pool.first=file->next; + file_pool.current=file->next; + } else { + + prev=file_pool.first; + file_pool.current=file_pool.first; + while (prev) { + if (prev->next==file) break; + prev=prev->next; + } + prev->next=file->next; + } + + if (file->handle) { + file_pool.number_of_opened_files--; + } + grib_file_delete(file); + GRIB_MUTEX_UNLOCK(&mutex1); + +} + +void grib_file_close_force(const char* filename,int* err) +{ + grib_file* file=NULL; + + /* fprintf(stderr,"++++ closing file %s\n",filename); */ + GRIB_PTHREAD_ONCE(&once,&init); + GRIB_MUTEX_LOCK(&mutex1); + file=grib_get_file(filename,err); + fclose(file->handle); + if (file->buffer) { + free(file->buffer); + file->buffer=0; + } + file->handle=NULL; + file_pool.number_of_opened_files--; + GRIB_MUTEX_UNLOCK(&mutex1); +} + void grib_file_close(const char* filename,int* err) { grib_file* file=NULL; diff --git a/src/grib_hash_array.c b/src/grib_hash_array.c index 1bdc8a5ca..b267d474a 100644 --- a/src/grib_hash_array.c +++ b/src/grib_hash_array.c @@ -8,7 +8,7 @@ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. */ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" grib_hash_array_value* grib_integer_hash_array_value_new(grib_context* c, const char* name,grib_iarray* array) diff --git a/src/grib_iarray.c b/src/grib_iarray.c index d64f07e16..c6d1a59c6 100644 --- a/src/grib_iarray.c +++ b/src/grib_iarray.c @@ -16,10 +16,27 @@ #include "grib_api_internal.h" +grib_iarray* grib_iarray_new_from_array(grib_context* c,long* a,size_t size) { + size_t i; + grib_iarray* v; + + if (!c) c=grib_context_get_default(); + + v=grib_iarray_new(c,size,100); + for (i=0;iv[i]=a[i]; + v->n=size; + v->number_of_pop_front=0; + v->context=c; + return v; +} + grib_iarray* grib_iarray_new(grib_context* c,size_t size,size_t incsize) { grib_iarray* v=NULL; + if (!c) c=grib_context_get_default(); + v=(grib_iarray*)grib_context_malloc(c,sizeof(grib_iarray)); + v->context=c; if (!v) { grib_context_log(c,GRIB_LOG_ERROR, "grib_iarray_new unable to allocate %d bytes\n",sizeof(grib_iarray)); @@ -29,6 +46,7 @@ grib_iarray* grib_iarray_new(grib_context* c,size_t size,size_t incsize) { v->n=0; v->incsize=incsize; v->v=(long*)grib_context_malloc(c,sizeof(long)*size); + v->number_of_pop_front=0; if (!v->v) { grib_context_log(c,GRIB_LOG_ERROR, "grib_iarray_new unable to allocate %d bytes\n",sizeof(long)*size); @@ -37,36 +55,149 @@ grib_iarray* grib_iarray_new(grib_context* c,size_t size,size_t incsize) { return v; } -grib_iarray* grib_iarray_resize(grib_context* c,grib_iarray* v) { - int newsize=v->incsize+v->size; +long grib_iarray_pop(grib_iarray* a) { + a->n-=1; + return a->v[a->n]; +} + +long grib_iarray_pop_front(grib_iarray* a) { + long v=a->v[0]; + /* size_t i=0; */ + if (a->n==0) Assert(0); + a->n--; + a->v++; + a->number_of_pop_front++; + /* for (i=0;in;i++) a->v[i]=a->v[i+1]; */ + + return v; +} + +grib_iarray* grib_iarray_resize_to(grib_iarray* v,size_t newsize) { + long* newv; + size_t i; + grib_context* c=v->context; + + if (newsizesize) return v; if (!c) c=grib_context_get_default(); - v->v=grib_context_realloc(c,v->v,newsize*sizeof(long)); - v->size=newsize; - if (!v->v) { + newv=grib_context_malloc_clear(c,newsize*sizeof(long)); + if (!newv) { grib_context_log(c,GRIB_LOG_ERROR, "grib_iarray_resize unable to allocate %d bytes\n",sizeof(long)*newsize); return NULL; } + + for (i=0;in;i++) newv[i]=v->v[i]; + + v->v-=v->number_of_pop_front; + grib_context_free(c,v->v); + + v->v=newv; + v->size=newsize; + v->number_of_pop_front=0; + return v; } -grib_iarray* grib_iarray_push(grib_context* c,grib_iarray* v,long val) { +grib_iarray* grib_iarray_resize(grib_iarray* v) { + int newsize=v->incsize+v->size; + + return grib_iarray_resize_to(v,newsize); +} + +grib_iarray* grib_iarray_push(grib_iarray* v,long val) { size_t start_size=100; size_t start_incsize=100; - if (!v) v=grib_iarray_new(c,start_size,start_incsize); - if (v->n >= v->size) v=grib_iarray_resize(c,v); + if (!v) v=grib_iarray_new(0,start_size,start_incsize); + + if (v->n >= v->size-v->number_of_pop_front) + v=grib_iarray_resize(v); + v->v[v->n]=val; v->n++; return v; } -void grib_iarray_delete(grib_context* c,grib_iarray* v) { +grib_iarray* grib_iarray_push_front(grib_iarray* v,long val) { + size_t start_size=100; + size_t start_incsize=100; + int i; + if (!v) v=grib_iarray_new(0,start_size,start_incsize); + + if (v->number_of_pop_front) { + v->v--; + v->number_of_pop_front--; + } else { + if (v->n >= v->size) v=grib_iarray_resize(v); + for (i=v->n;i>0;i--) v[i]=v[i-1]; + } + v->v[0]=val; + v->n++; + + return v; +} + +grib_iarray* grib_iarray_push_array(grib_iarray* v,long *val,size_t size) { + size_t start_size=size; + size_t start_incsize=100; + long* vp=0; + long* valp=val; + if (!v) v=grib_iarray_new(0,start_size,start_incsize); + + v=grib_iarray_resize_to(v,size+v->n); + vp=v->v+v->n+v->number_of_pop_front; + v->n+=size; + while (size) { + *(vp++)=*(valp++); + size--; + } + return v; +} + + +long grib_iarray_get(grib_iarray* a,size_t i) { + return a->v[i]; +} + +void grib_iarray_set(grib_iarray* a,size_t i,long v) { + a->v[i]=v; +} + +void grib_iarray_delete(grib_iarray* v) { + grib_context* c; + if (!v) return; - if (!c) grib_context_get_default(); - if (v->v) grib_context_free(c,v->v); + c=v->context; + + grib_iarray_delete_array(v); + grib_context_free(c,v); } +void grib_iarray_delete_array(grib_iarray* v) { + grib_context* c; + + if (!v) return; + c=v->context; + + if (v->v) { + long* vv = v->v - v->number_of_pop_front; + grib_context_free(c,vv); + } +} + +long* grib_iarray_get_array(grib_iarray* v) { + long* vv; + size_t i; + grib_context* c=grib_context_get_default(); + + vv=grib_context_malloc_clear(c,sizeof(long)*v->n); + for (i=0;in;i++) vv[i]=v->v[i]; + + return vv; +} + +size_t grib_iarray_get_used_size(grib_iarray* v) {return v->n;} + diff --git a/src/grib_lex.c b/src/grib_lex.c index fc2f54e62..3a425ba85 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 103 -#define YY_END_OF_BUFFER 104 +#define YY_NUM_RULES 122 +#define YY_END_OF_BUFFER 123 /* This struct is not used in this scanner, but its presence is necessary. */ struct grib_yy_trans_info @@ -368,65 +368,79 @@ 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[517] = +static grib_yyconst flex_int16_t grib_yy_accept[643] = { 0, - 100, 100, 104, 102, 100, 101, 12, 94, 99, 102, - 102, 97, 5, 102, 3, 96, 96, 96, 95, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 102, - 18, 100, 6, 14, 0, 0, 97, 4, 7, 1, - 2, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 20, 96, 10, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 15, 96, 96, 96, 96, 96, 96, 96, 96, + 119, 119, 123, 121, 119, 120, 12, 113, 118, 121, + 121, 116, 5, 121, 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, 121, 18, 119, 6, 14, 0, 0, 116, 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, 115, 115, 15, 115, - 96, 96, 96, 96, 96, 96, 96, 16, 98, 96, - 21, 96, 13, 96, 96, 96, 8, 58, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 32, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 11, 96, 96, 45, 96, 96, 96, 96, - 96, 81, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 0, 96, 96, 96, 96, 96, - 25, 96, 84, 96, 96, 96, 96, 96, 96, 96, - 73, 96, 22, 96, 96, 96, 96, 96, 96, 96, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 16, 117, + 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, 115, 115, 115, 115, 115, 115, 91, 0, 115, - 96, 96, 96, 96, 59, 96, 96, 27, 96, 96, - 96, 96, 41, 96, 96, 96, 96, 96, 17, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 92, 96, - 96, 96, 96, 96, 96, 96, 83, 96, 96, 0, - 98, 96, 48, 96, 24, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 39, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 26, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 43, 96, 91, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 28, 89, 96, 90, 69, + 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, 117, 115, + 56, 115, 27, 115, 115, 20, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 44, 115, 115, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 66, 96, 96, 96, 96, 37, 75, 96, 96, 96, - 96, 96, 68, 96, 40, 96, 96, 62, 96, 96, - 96, 9, 96, 96, 96, 96, 96, 67, 96, 96, - 35, 96, 85, 96, 96, 96, 96, 96, 77, 96, - 96, 96, 87, 96, 96, 80, 86, 96, 96, 60, - 96, 96, 96, 96, 96, 93, 96, 96, 96, 96, - 47, 57, 71, 74, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 31, 49, 96, 96, 96, 96, - 96, 51, 96, 96, 96, 96, 96, 96, 33, 96, + 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, 115, 9, 115, + 115, 115, 115, 115, 75, 76, 115, 115, 115, 38, - 56, 96, 96, 96, 79, 96, 96, 50, 96, 96, - 96, 96, 29, 96, 23, 96, 36, 96, 96, 96, - 96, 96, 96, 96, 96, 34, 96, 54, 19, 42, - 96, 70, 96, 96, 96, 96, 52, 96, 96, 96, - 78, 96, 96, 96, 96, 96, 96, 96, 96, 82, - 96, 96, 96, 96, 96, 55, 96, 96, 96, 96, - 61, 96, 96, 53, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 44, 96, 96, 76, 96, 88, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 46, + 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, 115, 115, 58, + 115, 115, 115, 115, 115, 115, 32, 115, 115, 115, - 30, 96, 72, 96, 96, 96, 38, 96, 64, 96, - 96, 65, 96, 96, 63, 0 + 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, 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 } ; static grib_yyconst flex_int32_t grib_yy_ec[256] = @@ -435,16 +449,16 @@ static grib_yyconst flex_int32_t grib_yy_ec[256] = 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 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, 11, - 11, 13, 11, 11, 11, 11, 11, 1, 1, 14, - 15, 16, 1, 1, 17, 17, 17, 17, 18, 17, - 19, 17, 20, 17, 17, 17, 21, 22, 17, 17, - 17, 17, 23, 17, 17, 17, 17, 17, 17, 17, - 1, 1, 1, 1, 24, 25, 26, 27, 28, 29, + 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, - 30, 31, 32, 33, 34, 17, 35, 36, 37, 38, - 39, 40, 17, 41, 42, 43, 44, 45, 46, 47, - 48, 17, 1, 49, 1, 50, 1, 1, 1, 1, + 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, 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, @@ -461,613 +475,876 @@ static grib_yyconst flex_int32_t grib_yy_ec[256] = 1, 1, 1, 1, 1 } ; -static grib_yyconst flex_int32_t grib_yy_meta[51] = +static grib_yyconst flex_int32_t grib_yy_meta[53] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, + 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, 1, 1 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1 } ; -static grib_yyconst flex_int16_t grib_yy_base[519] = +static grib_yyconst flex_int16_t grib_yy_base[645] = { 0, - 0, 0, 329, 2090, 326, 2090, 311, 2090, 2090, 315, - 40, 44, 43, 306, 286, 49, 52, 55, 2090, 58, - 63, 66, 69, 74, 48, 106, 111, 119, 89, 126, - 114, 137, 157, 148, 149, 160, 166, 197, 200, 251, - 2090, 293, 2090, 2090, 122, 130, 204, 2090, 2090, 2090, - 2090, 0, 207, 211, 214, 217, 225, 231, 235, 244, - 247, 253, 232, 244, 277, 280, 286, 291, 294, 298, - 301, 304, 261, 307, 320, 326, 331, 334, 340, 343, - 346, 353, 358, 361, 366, 375, 369, 378, 383, 391, - 405, 411, 414, 417, 420, 424, 427, 437, 443, 448, + 0, 0, 448, 3145, 442, 3145, 427, 3145, 3145, 434, + 42, 47, 46, 419, 413, 53, 57, 61, 3145, 86, + 68, 49, 100, 64, 72, 76, 102, 121, 83, 116, + 137, 116, 136, 138, 159, 157, 175, 158, 169, 184, + 191, 377, 3145, 418, 3145, 3145, 226, 72, 231, 3145, + 3145, 3145, 3145, 0, 208, 223, 222, 237, 239, 211, + 244, 249, 257, 258, 237, 273, 282, 273, 287, 297, + 305, 304, 314, 317, 322, 336, 393, 327, 342, 347, + 352, 359, 369, 371, 378, 391, 390, 392, 399, 411, + 409, 416, 421, 426, 437, 445, 448, 436, 456, 460, - 455, 458, 461, 367, 451, 461, 471, 2090, 491, 495, - 500, 503, 511, 514, 519, 522, 525, 528, 534, 537, - 543, 546, 554, 557, 566, 569, 575, 578, 585, 592, - 595, 598, 604, 410, 608, 612, 618, 621, 631, 634, - 641, 644, 647, 650, 653, 659, 665, 669, 675, 678, - 685, 691, 694, 697, 702, 705, 712, 716, 723, 719, - 726, 729, 738, 744, 748, 751, 755, 759, 766, 774, - 762, 777, 780, 788, 793, 800, 796, 806, 811, 814, - 817, 821, 824, 828, 838, 845, 841, 848, 851, 854, - 857, 865, 868, 874, 880, 257, 249, 248, 885, 889, + 472, 470, 474, 484, 487, 497, 503, 515, 512, 529, + 528, 537, 546, 553, 558, 560, 562, 567, 3145, 601, + 586, 579, 589, 596, 604, 606, 613, 620, 622, 629, + 642, 641, 651, 655, 660, 665, 668, 684, 675, 693, + 685, 694, 709, 710, 711, 727, 111, 718, 730, 743, + 750, 751, 759, 764, 772, 775, 782, 792, 792, 804, + 811, 818, 830, 827, 837, 842, 852, 854, 870, 878, + 879, 850, 888, 895, 877, 903, 904, 918, 925, 927, + 944, 943, 923, 953, 956, 946, 963, 964, 972, 980, + 979, 992, 989, 1004, 1000, 1009, 1014, 1022, 1056, 1034, - 892, 898, 901, 905, 913, 921, 924, 927, 930, 935, - 939, 947, 950, 953, 957, 963, 970, 977, 980, 986, - 992, 995, 1001, 1004, 1007, 1011, 1021, 1024, 1028, 1035, - 1038, 1044, 1049, 1052, 1056, 1063, 1059, 1066, 1070, 1074, - 1081, 1086, 1090, 1093, 1098, 1101, 1104, 1107, 1112, 1115, - 1119, 1124, 1128, 1135, 1138, 1141, 1145, 1155, 240, 233, - 241, 1158, 1161, 1169, 1174, 1177, 1180, 237, 1183, 1189, - 1200, 1204, 1207, 1213, 1216, 1219, 1225, 1228, 1235, 1238, - 1243, 1247, 1255, 1258, 1263, 1271, 1274, 1277, 1283, 1287, - 1290, 1296, 1306, 1311, 1314, 1320, 1327, 1330, 1333, 1342, + 1033, 1041, 1049, 1051, 1058, 1070, 1071, 1072, 1079, 1088, + 1088, 1096, 1108, 1105, 1122, 1118, 1127, 1135, 1142, 1143, + 1152, 387, 380, 377, 1153, 1160, 1174, 1174, 1179, 1190, + 1194, 1199, 1207, 1219, 1216, 245, 1226, 1229, 1237, 1238, + 1252, 1253, 1270, 1254, 1271, 1273, 1287, 1294, 1296, 1295, + 1303, 1312, 1315, 1328, 1331, 1329, 1347, 1350, 1349, 1359, + 1367, 1367, 1375, 1383, 1392, 1393, 1410, 1402, 1403, 1411, + 1419, 1427, 1427, 1439, 1446, 1447, 1448, 667, 1484, 1468, + 1469, 1471, 1485, 1487, 1488, 1504, 1511, 1512, 1521, 1524, + 1538, 1532, 1543, 1547, 1555, 1563, 1564, 1571, 367, 351, - 1345, 1348, 1351, 1354, 1361, 1365, 1368, 1371, 1376, 1381, - 1393, 1396, 231, 219, 210, 1399, 1404, 1409, 1412, 1415, - 1418, 205, 1421, 1425, 1429, 1435, 1441, 1447, 1451, 1454, - 1457, 1463, 1466, 1469, 1472, 1476, 1479, 1485, 1488, 1492, - 1495, 1498, 1507, 1516, 1519, 1522, 1525, 1528, 1531, 1534, - 1539, 1542, 1549, 1557, 1565, 1568, 1571, 1574, 1577, 1580, - 226, 223, 206, 1583, 1592, 1595, 1598, 199, 1601, 1608, - 1611, 1616, 1619, 1622, 1625, 1631, 1634, 1640, 1645, 1651, - 1654, 1660, 1671, 1674, 1677, 1680, 1684, 1687, 1693, 1696, - 1703, 1706, 1714, 1717, 1720, 205, 199, 182, 1723, 1726, + 364, 1572, 1580, 1589, 1585, 1597, 1602, 1607, 1614, 1622, + 1625, 355, 1633, 1634, 1641, 1649, 1659, 1662, 1667, 1652, + 1670, 1684, 1678, 1689, 1697, 1705, 1704, 1706, 1718, 1725, + 1726, 1727, 1734, 1743, 1746, 1760, 1763, 1762, 1776, 1785, + 1783, 1784, 1801, 1802, 1814, 1812, 1819, 1824, 1831, 1832, + 1839, 1840, 1857, 1849, 1862, 1848, 1876, 1871, 1879, 1891, + 1900, 1896, 1905, 1910, 352, 337, 334, 1918, 1921, 1928, + 1940, 1898, 1940, 1947, 1957, 1965, 1964, 326, 1966, 1973, + 1985, 1986, 1987, 1994, 2003, 2006, 2013, 2020, 2021, 2036, + 2035, 2050, 2052, 2046, 2057, 2062, 2065, 2076, 2073, 2081, - 1731, 159, 1734, 1737, 1742, 1745, 1748, 1759, 1762, 1765, - 1768, 1773, 1776, 1781, 1784, 1795, 1800, 1803, 1806, 1814, - 1818, 1821, 153, 167, 155, 1827, 161, 1835, 1838, 1841, - 1851, 1854, 1857, 1860, 1863, 1866, 1869, 1875, 1878, 1881, - 1886, 1889, 1897, 142, 160, 167, 136, 1902, 1909, 1912, - 1917, 1920, 1923, 1928, 1937, 1932, 1940, 143, 136, 142, - 0, 1943, 1949, 1953, 1958, 1961, 1964, 1969, 1972, 140, - 128, 118, 1975, 1979, 1982, 1985, 1989, 1998, 2007, 123, - 109, 100, 2010, 2013, 2016, 2019, 2028, 2024, 2031, 89, - 94, 82, 2034, 2041, 2045, 2048, 86, 66, 75, 2051, + 2084, 2102, 2092, 2093, 2103, 2118, 2119, 2120, 2127, 2134, + 2136, 2144, 2152, 2157, 2164, 2167, 2172, 2184, 2187, 2196, + 2205, 2203, 2204, 2212, 345, 341, 318, 2221, 2224, 2241, + 2240, 2242, 2243, 2259, 2260, 2267, 307, 2274, 2277, 2282, + 2285, 2290, 2293, 2302, 2308, 2310, 2315, 2320, 2323, 2341, + 2342, 2356, 2363, 2365, 2372, 2381, 2330, 2333, 2377, 2386, + 2393, 2401, 2403, 2410, 2408, 2415, 2420, 2423, 2430, 2431, + 320, 309, 300, 2449, 2439, 2450, 2467, 2459, 2467, 2469, + 2483, 290, 2485, 2486, 2499, 2506, 2507, 2516, 2517, 2525, + 2526, 2533, 2543, 2551, 2552, 2550, 2570, 2568, 2571, 2584, - 2056, 2059, 2062, 76, 71, 58, 2067, 64, 0, 60, - 55, 0, 61, 53, 0, 2090, 81, 71 + 2587, 2594, 2597, 2609, 2611, 2618, 2625, 2630, 2635, 284, + 302, 290, 2638, 2643, 2651, 2659, 2667, 2674, 292, 2675, + 2682, 2690, 2692, 2699, 2706, 2708, 2715, 2724, 2720, 2736, + 2729, 2737, 2744, 2747, 2754, 2755, 2762, 2771, 2776, 2779, + 2788, 2794, 2796, 273, 285, 295, 2803, 2810, 2812, 2819, + 264, 2817, 2824, 2829, 2840, 2837, 2845, 2855, 2857, 2864, + 2871, 2873, 2880, 2889, 2887, 2896, 2903, 261, 252, 251, + 0, 2905, 2901, 2914, 2923, 2056, 2957, 2961, 2965, 2922, + 2942, 2950, 2957, 246, 203, 194, 2958, 2959, 2971, 2978, + 195, 2980, 2987, 2996, 2992, 3003, 190, 177, 184, 3006, + + 3015, 3014, 177, 3029, 3030, 3038, 3037, 3046, 156, 163, + 155, 3054, 3055, 162, 3064, 3065, 3081, 157, 135, 143, + 3073, 140, 3074, 3089, 3091, 143, 136, 94, 97, 3098, + 102, 0, 98, 93, 77, 0, 67, 74, 0, 62, + 0, 3145, 90, 75 } ; -static grib_yyconst flex_int16_t grib_yy_def[519] = +static grib_yyconst flex_int16_t grib_yy_def[645] = { 0, - 516, 1, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 517, 517, 517, 516, 517, - 517, 517, 517, 20, 20, 517, 517, 20, 20, 517, - 30, 30, 517, 30, 30, 30, 30, 517, 517, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 518, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 20, 20, 517, 517, 517, 517, 517, 517, - 517, 517, 518, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 642, 1, 642, 642, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 643, 643, 643, 642, 643, + 643, 20, 20, 20, 20, 23, 23, 20, 20, 20, + 23, 23, 23, 23, 23, 23, 23, 23, 20, 20, + 20, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 644, 20, 20, 20, 23, 23, 20, + 20, 20, 20, 20, 20, 23, 20, 20, 20, 23, + 23, 23, 20, 20, 20, 20, 644, 20, 23, 20, + 20, 20, 23, 23, 23, 23, 23, 23, 23, 23, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 23, - 517, 517, 517, 30, 30, 30, 30, 516, 516, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 518, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 516, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 518, 518, 518, 517, 517, + 23, 20, 23, 20, 20, 20, 23, 23, 23, 23, + 23, 23, 23, 23, 20, 23, 23, 20, 642, 642, + 20, 20, 20, 20, 23, 23, 23, 23, 23, 23, + 23, 23, 20, 23, 20, 20, 20, 20, 20, 20, + 20, 20, 23, 23, 23, 23, 644, 23, 23, 23, + 23, 23, 23, 20, 20, 20, 20, 20, 23, 23, + 23, 23, 23, 23, 20, 20, 23, 23, 23, 23, + 23, 20, 20, 20, 23, 20, 20, 23, 23, 23, + 23, 23, 20, 20, 20, 23, 20, 20, 20, 20, + 20, 20, 20, 23, 20, 20, 20, 20, 642, 20, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 516, - 516, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 518, 518, - 518, 517, 517, 517, 517, 517, 517, 518, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 20, 20, 23, 23, 23, 23, 23, 23, 23, 20, + 23, 23, 23, 23, 23, 20, 20, 23, 23, 23, + 20, 644, 644, 644, 20, 20, 20, 23, 20, 20, + 23, 20, 23, 23, 23, 643, 20, 20, 20, 20, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 20, + 20, 23, 23, 23, 20, 20, 20, 20, 20, 20, + 20, 20, 23, 23, 23, 23, 23, 642, 642, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 20, 20, + 23, 20, 20, 23, 23, 23, 23, 23, 644, 644, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 518, 518, 518, 517, 517, 517, 517, 517, - 517, 518, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 518, 518, 518, 517, 517, 517, 517, 518, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 518, 518, 518, 517, 517, + 644, 23, 23, 23, 20, 23, 20, 20, 20, 20, + 20, 644, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 23, 20, 20, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 23, + 23, 20, 20, 20, 644, 644, 644, 20, 20, 20, + 20, 23, 23, 20, 23, 23, 23, 644, 23, 23, + 23, 23, 23, 23, 23, 23, 20, 20, 20, 20, + 20, 23, 23, 20, 20, 20, 20, 20, 20, 20, - 517, 518, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 518, 518, 518, 517, 518, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 518, 518, 518, 518, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 518, 518, 518, - 518, 517, 517, 517, 517, 517, 517, 517, 517, 518, - 518, 518, 517, 517, 517, 517, 517, 517, 517, 518, - 518, 518, 517, 517, 517, 517, 517, 517, 517, 518, - 518, 518, 517, 517, 517, 517, 518, 518, 518, 517, + 20, 20, 20, 20, 20, 23, 23, 23, 23, 20, + 23, 23, 23, 20, 20, 20, 20, 23, 23, 23, + 23, 23, 23, 23, 644, 644, 644, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 644, 20, 20, 20, + 20, 20, 20, 20, 23, 23, 20, 20, 20, 20, + 20, 23, 23, 23, 23, 23, 20, 20, 20, 20, + 20, 23, 23, 23, 20, 20, 20, 20, 20, 20, + 644, 644, 644, 20, 20, 20, 20, 20, 23, 23, + 23, 644, 23, 23, 23, 23, 23, 20, 20, 20, + 20, 20, 23, 23, 23, 23, 23, 23, 23, 23, - 517, 517, 517, 518, 518, 518, 517, 518, 518, 518, - 518, 518, 518, 518, 518, 0, 516, 516 + 23, 20, 20, 23, 23, 23, 23, 20, 20, 644, + 644, 644, 20, 20, 20, 20, 20, 20, 644, 20, + 20, 23, 23, 23, 23, 23, 23, 23, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 23, 23, 644, 644, 644, 23, 23, 23, 23, + 644, 20, 20, 20, 20, 20, 20, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 644, 644, 644, + 644, 23, 20, 20, 20, 643, 643, 643, 643, 20, + 20, 23, 23, 644, 644, 644, 23, 23, 23, 23, + 644, 23, 23, 23, 20, 20, 644, 644, 644, 20, + + 20, 20, 644, 23, 23, 23, 23, 23, 644, 644, + 644, 23, 23, 644, 20, 20, 20, 644, 644, 644, + 20, 644, 20, 23, 23, 644, 644, 644, 644, 23, + 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, + 644, 0, 642, 642 } ; -static grib_yyconst flex_int16_t grib_yy_nxt[2141] = +static grib_yyconst flex_int16_t grib_yy_nxt[3198] = { 0, 4, 5, 6, 7, 8, 9, 10, 8, 11, 4, - 12, 12, 12, 13, 14, 15, 16, 16, 16, 16, - 17, 16, 16, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 16, 39, 16, 16, 40, 41, - 45, 45, 45, 46, 47, 47, 47, 48, 49, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 54, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 53, 72, 515, 53, 514, 53, 55, 53, - 513, 63, 512, 56, 511, 57, 60, 58, 65, 59, + 12, 12, 12, 12, 13, 14, 15, 16, 16, 16, + 16, 17, 16, 16, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 16, 40, 41, 16, + 42, 43, 47, 47, 47, 47, 48, 49, 49, 49, + 49, 50, 51, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 65, 54, 56, 54, 54, + 54, 54, 120, 120, 120, 120, 66, 77, 55, 67, + 55, 55, 55, 72, 641, 57, 54, 54, 54, 54, - 510, 61, 68, 509, 64, 508, 506, 66, 505, 69, - 62, 70, 67, 53, 504, 53, 52, 73, 52, 499, - 71, 52, 52, 52, 53, 498, 53, 497, 53, 492, - 82, 46, 45, 45, 45, 74, 52, 52, 52, 53, - 109, 109, 109, 87, 75, 76, 491, 53, 77, 78, - 490, 83, 88, 482, 53, 84, 79, 481, 53, 85, - 80, 81, 53, 480, 86, 472, 89, 52, 52, 52, - 53, 471, 470, 94, 53, 90, 461, 53, 97, 460, - 91, 53, 53, 459, 458, 53, 95, 53, 96, 98, - 447, 53, 446, 99, 100, 103, 445, 92, 53, 53, + 640, 73, 62, 74, 639, 55, 78, 55, 63, 76, + 55, 55, 75, 55, 638, 55, 55, 64, 79, 637, + 55, 55, 55, 58, 55, 59, 88, 60, 80, 61, + 68, 636, 55, 635, 69, 634, 81, 55, 633, 55, + 70, 55, 55, 55, 222, 71, 94, 55, 82, 223, + 55, 83, 84, 55, 224, 55, 95, 55, 55, 89, + 85, 55, 55, 90, 86, 87, 96, 91, 55, 632, + 55, 92, 55, 631, 629, 628, 97, 93, 55, 627, + 99, 98, 55, 55, 100, 101, 626, 104, 112, 55, + 622, 55, 55, 55, 620, 619, 618, 55, 113, 102, - 444, 93, 101, 427, 53, 102, 104, 52, 52, 52, - 52, 52, 52, 46, 47, 47, 47, 52, 52, 52, - 425, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 424, 423, 106, 110, 105, 52, 52, 52, 402, 398, - 107, 52, 52, 52, 111, 52, 52, 52, 397, 396, - 112, 368, 363, 113, 52, 52, 52, 52, 52, 52, - 362, 361, 115, 52, 52, 52, 322, 53, 315, 120, - 114, 53, 122, 121, 314, 313, 116, 261, 260, 53, - 123, 124, 259, 125, 134, 53, 117, 52, 52, 52, - 52, 52, 52, 118, 42, 119, 52, 52, 52, 108, + 114, 103, 55, 55, 55, 105, 55, 614, 115, 106, + 55, 107, 55, 108, 611, 55, 610, 116, 609, 109, + 110, 55, 111, 55, 603, 55, 117, 55, 55, 118, + 55, 599, 55, 598, 55, 48, 47, 47, 47, 47, + 48, 49, 49, 49, 49, 55, 121, 55, 55, 55, + 55, 55, 125, 122, 55, 54, 312, 54, 54, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 124, 55, + 597, 123, 126, 55, 55, 586, 131, 55, 55, 55, + 132, 55, 55, 55, 55, 55, 55, 127, 55, 585, + 55, 584, 55, 128, 55, 55, 55, 55, 55, 55, - 51, 52, 52, 52, 52, 52, 52, 126, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 50, 44, 128, 127, 129, 43, 131, 42, 516, 133, - 52, 52, 52, 516, 516, 130, 52, 52, 52, 516, - 132, 52, 52, 52, 52, 52, 52, 516, 136, 135, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 516, - 138, 516, 137, 52, 52, 52, 516, 139, 52, 52, - 52, 52, 52, 52, 516, 140, 52, 52, 52, 52, - 52, 52, 141, 516, 142, 52, 52, 52, 52, 52, - 52, 516, 168, 52, 52, 52, 53, 516, 143, 516, + 55, 55, 130, 55, 138, 129, 571, 55, 570, 569, + 55, 134, 55, 133, 55, 139, 55, 568, 55, 55, + 135, 136, 551, 137, 55, 55, 55, 55, 55, 546, + 55, 55, 545, 544, 55, 55, 519, 55, 142, 55, + 512, 511, 140, 141, 55, 55, 144, 510, 482, 55, + 55, 55, 473, 55, 55, 55, 55, 143, 55, 55, + 55, 55, 146, 145, 55, 55, 55, 472, 55, 471, + 55, 148, 55, 55, 437, 55, 55, 55, 427, 55, + 426, 151, 149, 425, 55, 378, 55, 55, 55, 55, + 150, 55, 367, 55, 366, 55, 55, 152, 55, 153, - 169, 52, 52, 52, 516, 53, 150, 144, 151, 516, - 148, 149, 145, 146, 152, 52, 52, 52, 516, 516, - 147, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 153, 52, 52, 52, 52, 52, 52, - 154, 516, 196, 155, 516, 156, 197, 52, 52, 52, - 516, 198, 159, 52, 52, 52, 516, 158, 52, 52, - 52, 157, 516, 160, 161, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 163, 516, 170, 516, 516, 162, - 53, 164, 516, 516, 53, 516, 53, 516, 516, 53, - 172, 166, 171, 516, 173, 165, 53, 167, 516, 53, + 55, 55, 55, 55, 365, 55, 154, 301, 55, 55, + 300, 55, 55, 299, 55, 155, 55, 147, 55, 44, + 156, 55, 55, 55, 55, 55, 55, 119, 53, 158, + 55, 55, 157, 55, 52, 55, 55, 55, 159, 55, + 46, 55, 45, 44, 55, 55, 55, 642, 160, 642, + 55, 55, 55, 55, 642, 55, 55, 55, 55, 161, + 162, 163, 55, 55, 55, 55, 167, 55, 164, 165, + 166, 168, 169, 172, 55, 55, 55, 55, 55, 55, + 55, 642, 55, 642, 55, 55, 55, 170, 55, 55, + 173, 55, 171, 55, 55, 55, 642, 55, 642, 55, - 53, 109, 109, 109, 174, 52, 52, 52, 175, 53, - 52, 52, 52, 52, 52, 52, 516, 176, 516, 516, - 175, 52, 52, 52, 52, 52, 52, 516, 177, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 516, 516, 178, 52, 52, 52, 52, 52, 52, - 516, 180, 179, 52, 52, 52, 52, 52, 52, 516, - 182, 516, 516, 181, 52, 52, 52, 52, 52, 52, - 516, 516, 183, 516, 516, 184, 52, 52, 52, 52, - 52, 52, 516, 516, 186, 52, 52, 52, 52, 52, - 52, 516, 516, 185, 189, 52, 52, 52, 187, 516, + 55, 174, 55, 642, 55, 55, 55, 55, 176, 55, + 177, 55, 55, 175, 55, 180, 642, 55, 642, 55, + 642, 55, 178, 179, 55, 55, 55, 55, 55, 183, + 55, 181, 642, 55, 55, 182, 55, 184, 55, 642, + 55, 185, 55, 55, 642, 55, 55, 642, 55, 55, + 642, 642, 55, 642, 186, 55, 187, 55, 55, 55, + 55, 642, 188, 55, 642, 642, 642, 55, 55, 55, + 190, 55, 642, 55, 55, 189, 55, 55, 642, 191, + 55, 642, 55, 55, 193, 642, 55, 192, 642, 642, + 195, 55, 55, 55, 196, 55, 197, 55, 55, 55, - 516, 190, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 516, 516, 188, 52, 52, 52, 191, 52, 52, - 52, 193, 52, 52, 52, 516, 516, 192, 52, 52, - 52, 52, 52, 52, 516, 195, 194, 199, 516, 516, - 200, 52, 52, 52, 52, 52, 52, 516, 201, 516, - 202, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 203, 516, 205, 52, - 52, 52, 516, 206, 204, 52, 52, 52, 207, 52, - 52, 52, 516, 516, 209, 52, 52, 52, 52, 52, - 52, 516, 208, 210, 211, 52, 52, 52, 516, 516, + 55, 194, 55, 642, 198, 55, 55, 55, 55, 200, + 55, 120, 120, 120, 120, 201, 55, 642, 55, 199, + 55, 642, 55, 55, 642, 55, 55, 55, 55, 55, + 55, 199, 55, 55, 202, 55, 55, 55, 55, 55, + 203, 642, 642, 204, 55, 642, 55, 55, 642, 55, + 55, 55, 55, 55, 55, 642, 55, 642, 55, 205, + 55, 642, 55, 55, 642, 55, 206, 55, 642, 55, + 642, 207, 55, 642, 55, 55, 55, 279, 279, 279, + 279, 55, 55, 642, 642, 209, 55, 55, 55, 55, + 55, 642, 55, 211, 208, 55, 642, 55, 642, 55, - 213, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 212, 214, 52, 52, 52, 52, 52, 52, 216, 516, - 218, 217, 52, 52, 52, 215, 52, 52, 52, 52, - 52, 52, 219, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 220, 516, 516, 222, 516, 221, 52, 52, - 52, 224, 227, 223, 52, 52, 52, 225, 52, 52, - 52, 52, 52, 52, 516, 52, 52, 52, 226, 52, - 52, 52, 52, 52, 52, 228, 52, 52, 52, 516, - 516, 230, 516, 229, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 231, 232, 236, 233, 234, 52, 52, + 55, 210, 55, 55, 55, 55, 55, 55, 212, 55, + 214, 55, 55, 642, 55, 642, 55, 213, 55, 215, + 216, 55, 55, 55, 55, 55, 217, 55, 55, 642, + 55, 55, 55, 55, 55, 55, 55, 55, 218, 219, + 55, 55, 642, 55, 55, 55, 642, 642, 225, 55, + 55, 220, 55, 642, 55, 55, 55, 55, 55, 221, + 55, 55, 642, 55, 55, 642, 642, 55, 642, 642, + 55, 642, 55, 55, 642, 226, 227, 55, 642, 228, + 55, 55, 229, 55, 55, 55, 642, 642, 55, 230, + 55, 55, 642, 55, 642, 55, 55, 642, 642, 55, - 52, 240, 516, 241, 241, 241, 52, 52, 52, 235, - 52, 52, 52, 516, 237, 238, 52, 52, 52, 242, - 516, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 239, 52, 52, 52, 52, 52, 52, 243, 52, 52, - 52, 516, 516, 244, 245, 516, 516, 247, 52, 52, - 52, 52, 52, 52, 246, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 248, 252, 516, 249, 250, 52, 52, 52, 52, 52, - 52, 516, 516, 251, 52, 52, 52, 516, 516, 254, - 52, 52, 52, 516, 253, 52, 52, 52, 255, 52, + 642, 231, 642, 55, 55, 55, 232, 55, 642, 55, + 642, 233, 55, 55, 55, 55, 55, 234, 55, 55, + 236, 235, 237, 55, 642, 55, 55, 642, 642, 55, + 642, 55, 55, 55, 55, 55, 238, 55, 55, 642, + 642, 55, 642, 642, 55, 55, 642, 642, 55, 55, + 240, 55, 55, 642, 642, 239, 55, 242, 55, 642, + 55, 55, 642, 55, 55, 642, 241, 55, 244, 642, + 55, 642, 55, 642, 55, 55, 55, 642, 55, 55, + 243, 55, 55, 55, 55, 55, 245, 251, 55, 55, + 642, 55, 55, 55, 55, 642, 246, 55, 247, 55, - 52, 52, 52, 52, 52, 516, 257, 516, 52, 52, - 52, 52, 52, 52, 256, 52, 52, 52, 263, 516, - 516, 258, 262, 52, 268, 52, 516, 264, 265, 516, - 267, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 516, 266, 52, 52, 52, 516, 52, - 52, 52, 516, 271, 516, 516, 269, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 270, 52, 52, 52, - 516, 516, 274, 52, 52, 52, 516, 516, 272, 273, - 52, 52, 52, 275, 516, 516, 276, 52, 52, 52, - 52, 52, 52, 516, 516, 278, 52, 52, 52, 516, + 55, 248, 249, 642, 55, 642, 250, 55, 55, 55, + 55, 254, 55, 55, 642, 55, 642, 55, 55, 55, + 642, 642, 55, 55, 55, 55, 642, 55, 642, 55, + 252, 55, 55, 256, 55, 642, 55, 642, 55, 253, + 55, 55, 255, 55, 55, 55, 55, 55, 55, 642, + 642, 258, 55, 642, 642, 55, 642, 55, 257, 55, + 55, 55, 262, 55, 55, 55, 55, 55, 260, 261, + 55, 259, 55, 55, 55, 642, 55, 55, 55, 642, + 265, 642, 642, 55, 55, 642, 55, 642, 55, 55, + 55, 55, 55, 55, 263, 55, 55, 55, 264, 55, - 516, 277, 52, 52, 52, 52, 52, 52, 516, 516, - 279, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 516, 52, 52, 52, 516, 516, 280, 284, 516, 516, - 281, 52, 52, 52, 52, 52, 52, 282, 52, 52, - 52, 516, 516, 283, 286, 52, 52, 52, 52, 52, - 52, 285, 516, 288, 52, 52, 52, 516, 287, 52, - 52, 52, 52, 52, 52, 290, 52, 52, 52, 52, - 52, 52, 289, 52, 52, 52, 52, 52, 52, 291, - 52, 52, 52, 293, 241, 241, 241, 516, 516, 294, - 292, 241, 241, 241, 295, 296, 52, 52, 52, 297, + 55, 55, 55, 55, 55, 55, 266, 55, 267, 55, + 642, 55, 642, 268, 269, 55, 55, 55, 271, 55, + 55, 55, 55, 270, 272, 642, 273, 642, 55, 55, + 55, 55, 55, 55, 55, 55, 642, 55, 274, 275, + 642, 55, 642, 55, 55, 642, 276, 642, 55, 55, + 55, 55, 55, 55, 280, 55, 642, 55, 277, 55, + 642, 55, 642, 55, 278, 55, 279, 279, 279, 279, + 55, 55, 55, 55, 55, 55, 281, 55, 55, 55, + 282, 55, 55, 283, 55, 55, 642, 642, 55, 55, + 642, 55, 55, 284, 55, 642, 55, 285, 55, 642, - 52, 52, 52, 52, 52, 52, 516, 298, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 516, 299, 52, 52, 52, 52, 52, 52, 516, 52, - 52, 52, 302, 301, 52, 52, 52, 516, 52, 52, - 52, 303, 516, 300, 305, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 304, 52, 52, 52, 516, 306, - 516, 516, 307, 308, 309, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 516, 516, 310, 516, 312, 52, - 52, 52, 516, 311, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 516, 516, 317, 52, + 55, 55, 286, 55, 55, 55, 55, 642, 642, 55, + 55, 55, 55, 55, 642, 55, 55, 55, 289, 55, + 642, 642, 55, 287, 55, 288, 55, 55, 55, 55, + 55, 55, 291, 55, 642, 55, 55, 642, 55, 55, + 290, 55, 55, 642, 642, 55, 293, 642, 55, 642, + 292, 642, 55, 55, 642, 294, 55, 55, 642, 55, + 642, 55, 55, 642, 55, 55, 55, 55, 55, 295, + 55, 642, 55, 55, 642, 55, 55, 55, 642, 297, + 55, 642, 55, 55, 642, 296, 642, 55, 55, 55, + 55, 55, 302, 55, 55, 298, 55, 55, 304, 55, - 52, 52, 316, 516, 516, 320, 516, 318, 516, 319, - 52, 52, 52, 516, 52, 52, 52, 52, 52, 52, - 516, 323, 321, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 516, 516, 326, 52, 52, 52, 52, 52, - 52, 516, 324, 325, 327, 52, 52, 52, 52, 52, - 52, 516, 516, 52, 52, 52, 516, 52, 52, 52, - 329, 331, 516, 328, 330, 52, 52, 52, 52, 52, - 52, 333, 334, 52, 52, 52, 516, 332, 516, 335, - 336, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 516, 516, 338, 52, 52, 52, 337, 52, 52, 52, + 642, 303, 642, 55, 305, 642, 642, 642, 55, 642, + 642, 55, 642, 55, 55, 55, 306, 55, 55, 55, + 55, 307, 55, 642, 55, 642, 642, 55, 55, 55, + 642, 55, 642, 55, 55, 642, 55, 55, 309, 308, + 55, 55, 55, 642, 642, 311, 55, 55, 642, 55, + 55, 642, 310, 55, 642, 642, 55, 642, 642, 55, + 642, 55, 315, 313, 55, 55, 55, 55, 55, 55, + 55, 642, 55, 314, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 642, 55, 55, 55, 642, + 642, 642, 55, 55, 55, 317, 318, 316, 55, 55, - 52, 52, 52, 516, 516, 341, 52, 52, 52, 339, - 516, 516, 340, 516, 342, 344, 52, 52, 52, 343, - 516, 52, 52, 52, 52, 52, 52, 516, 516, 345, - 52, 52, 52, 516, 516, 346, 347, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 516, 516, 349, 516, - 516, 348, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 516, 350, 516, - 516, 52, 52, 52, 351, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 516, 516, 52, 52, 52, 516, - 355, 52, 52, 52, 516, 516, 353, 352, 354, 358, + 55, 55, 319, 320, 55, 55, 642, 55, 642, 642, + 55, 55, 642, 55, 642, 55, 55, 55, 55, 642, + 322, 55, 323, 642, 55, 55, 55, 321, 55, 324, + 55, 642, 55, 55, 55, 55, 55, 55, 642, 55, + 55, 55, 55, 55, 642, 55, 55, 642, 55, 55, + 642, 642, 55, 329, 325, 326, 642, 55, 55, 55, + 55, 55, 55, 55, 642, 55, 642, 642, 55, 55, + 642, 55, 327, 55, 55, 328, 55, 55, 642, 55, + 55, 55, 642, 332, 55, 642, 642, 55, 331, 55, + 55, 642, 55, 330, 55, 55, 55, 335, 333, 334, - 516, 516, 356, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 516, 357, 52, 52, 52, 516, 359, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 364, 52, 52, 52, 360, 52, - 52, 52, 516, 516, 366, 52, 52, 52, 516, 516, - 365, 52, 52, 52, 516, 516, 367, 52, 52, 52, - 370, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 371, 516, 369, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 516, 52, 52, 52, 52, - 52, 52, 374, 372, 375, 52, 52, 52, 52, 52, + 55, 55, 55, 642, 55, 55, 55, 55, 55, 55, + 55, 642, 55, 55, 642, 55, 642, 55, 642, 642, + 55, 642, 642, 55, 642, 642, 642, 336, 55, 55, + 55, 337, 55, 55, 55, 55, 55, 338, 339, 340, + 55, 55, 341, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 342, 55, 55, 55, 344, + 55, 345, 343, 642, 55, 642, 55, 55, 55, 55, + 55, 346, 55, 55, 642, 642, 55, 347, 348, 55, + 55, 55, 55, 642, 55, 642, 55, 55, 55, 642, + 349, 55, 55, 55, 279, 279, 279, 279, 55, 55, - 52, 373, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 516, 516, 376, 378, 377, 379, 52, 52, 52, - 516, 382, 381, 516, 516, 380, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 516, 384, 52, - 52, 52, 52, 52, 52, 516, 516, 387, 383, 52, - 52, 52, 385, 516, 516, 390, 386, 52, 52, 52, - 388, 516, 391, 516, 389, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 516, 516, 393, 392, + 350, 55, 55, 55, 642, 55, 642, 642, 55, 55, + 642, 55, 642, 55, 55, 55, 55, 55, 352, 55, + 642, 55, 55, 642, 642, 55, 642, 55, 55, 642, + 55, 351, 55, 55, 55, 642, 642, 353, 55, 642, + 642, 55, 354, 642, 55, 55, 55, 642, 642, 55, + 356, 55, 55, 642, 642, 642, 55, 55, 55, 642, + 55, 55, 355, 55, 55, 55, 357, 55, 55, 359, + 642, 55, 55, 55, 642, 55, 642, 361, 358, 642, + 55, 55, 55, 55, 55, 55, 360, 55, 642, 55, + 642, 642, 55, 55, 55, 362, 642, 55, 364, 642, - 395, 516, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 516, 516, 394, 400, 52, 52, - 52, 52, 52, 52, 516, 399, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 401, 516, - 403, 52, 52, 52, 52, 52, 52, 516, 516, 404, - 52, 52, 52, 516, 405, 52, 52, 52, 516, 516, - 406, 52, 52, 52, 52, 52, 52, 516, 516, 407, - 52, 52, 52, 516, 410, 516, 516, 408, 516, 411, - 409, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 516, 52, 52, 52, 52, 52, 52, + 55, 55, 55, 55, 55, 55, 55, 363, 55, 55, + 55, 55, 55, 642, 55, 369, 55, 55, 368, 55, + 55, 642, 55, 55, 370, 55, 55, 55, 55, 55, + 642, 55, 642, 642, 55, 642, 373, 371, 374, 372, + 642, 55, 55, 55, 55, 55, 55, 642, 55, 642, + 55, 55, 642, 55, 642, 55, 642, 55, 375, 55, + 376, 55, 55, 55, 55, 55, 55, 379, 55, 377, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 642, + 55, 642, 55, 642, 55, 380, 55, 382, 55, 55, + 381, 55, 55, 55, 383, 385, 55, 642, 55, 55, - 413, 516, 412, 52, 52, 52, 52, 52, 52, 516, - 516, 414, 415, 52, 52, 52, 52, 52, 52, 516, - 416, 516, 417, 418, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 516, - 419, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 516, 420, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 422, 516, 428, 421, 516, 429, 516, 426, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 516, 430, 52, 52, 52, 52, 52, 52, 516, - 431, 52, 52, 52, 52, 52, 52, 516, 516, 436, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 386, 642, 55, 55, 388, 384, 55, 387, 55, + 642, 55, 642, 642, 55, 642, 55, 55, 55, 55, + 55, 390, 55, 389, 55, 391, 55, 55, 393, 55, + 55, 642, 55, 392, 55, 55, 55, 642, 55, 55, + 55, 55, 55, 642, 642, 395, 396, 55, 394, 55, + 55, 55, 642, 55, 55, 55, 55, 397, 55, 642, + 55, 55, 55, 399, 398, 400, 55, 55, 642, 55, + 55, 642, 642, 55, 401, 642, 55, 642, 55, 642, + 55, 55, 55, 55, 55, 402, 55, 55, 642, 642, - 516, 434, 516, 516, 433, 52, 52, 52, 516, 432, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 516, - 435, 516, 516, 437, 52, 52, 52, 516, 52, 52, - 52, 52, 52, 52, 516, 516, 438, 52, 52, 52, - 516, 439, 516, 516, 440, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 516, 516, 441, 442, 516, 516, - 443, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 449, 516, 448, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 516, 450, 52, 52, 52, 52, + 55, 642, 55, 55, 403, 55, 55, 55, 55, 404, + 55, 405, 642, 55, 55, 55, 55, 55, 55, 55, + 642, 55, 642, 55, 55, 55, 407, 406, 55, 55, + 55, 55, 409, 642, 642, 408, 55, 642, 642, 642, + 410, 55, 55, 642, 55, 642, 55, 55, 55, 55, + 412, 411, 642, 55, 55, 55, 55, 642, 55, 55, + 55, 55, 55, 55, 413, 55, 642, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 414, 55, 55, 417, 55, 55, + 55, 55, 55, 642, 55, 642, 55, 415, 55, 55, - 52, 52, 451, 452, 516, 516, 454, 52, 52, 52, - 516, 455, 52, 52, 52, 516, 453, 516, 456, 52, - 52, 52, 52, 52, 52, 516, 457, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 516, 463, 52, 52, - 52, 462, 52, 52, 52, 516, 464, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 466, 467, 465, 52, - 52, 52, 468, 52, 52, 52, 516, 469, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 474, 473, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 475, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 476, 52, + 55, 55, 418, 55, 642, 55, 416, 419, 55, 642, + 55, 642, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 421, 55, 420, 422, 55, 642, 642, 55, 642, + 55, 55, 55, 55, 55, 423, 55, 55, 430, 55, + 55, 642, 55, 55, 55, 55, 55, 55, 55, 55, + 642, 55, 642, 55, 424, 55, 642, 55, 55, 55, + 55, 55, 55, 428, 55, 55, 429, 55, 642, 55, + 431, 55, 642, 642, 55, 642, 432, 55, 642, 55, + 55, 55, 642, 55, 433, 55, 55, 434, 55, 642, + 55, 55, 435, 642, 55, 55, 55, 55, 55, 55, - 52, 52, 478, 516, 483, 479, 477, 485, 52, 52, - 52, 516, 484, 516, 487, 516, 486, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 516, 488, 52, 52, 52, 489, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 516, 516, 494, - 493, 52, 52, 52, 495, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 496, 500, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 503, 501, 52, 52, 52, - 502, 516, 516, 516, 516, 516, 516, 516, 507, 3, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 55, 642, 55, 55, 436, 55, 55, 55, 642, 55, + 55, 55, 439, 55, 642, 55, 55, 440, 55, 55, + 55, 55, 438, 642, 55, 55, 55, 55, 55, 642, + 55, 55, 55, 55, 55, 642, 55, 55, 642, 55, + 55, 642, 642, 55, 642, 642, 55, 441, 55, 642, + 443, 55, 55, 642, 55, 442, 55, 55, 55, 55, + 55, 444, 55, 55, 55, 445, 54, 54, 591, 54, + 642, 642, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 446, 55, 55, 55, 449, 55, 55, 642, 55, + 55, 642, 448, 642, 55, 447, 55, 55, 55, 55, + + 55, 55, 55, 55, 450, 55, 55, 451, 55, 642, + 55, 642, 55, 55, 55, 55, 452, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 454, 55, 453, 55, + 55, 55, 55, 55, 55, 55, 55, 642, 642, 55, + 55, 55, 55, 55, 55, 55, 55, 455, 456, 55, + 458, 642, 55, 457, 55, 642, 642, 55, 55, 55, + 55, 55, 642, 55, 55, 55, 461, 55, 642, 459, + 55, 55, 55, 55, 55, 55, 55, 460, 55, 642, + 642, 55, 55, 642, 55, 642, 55, 642, 464, 55, + 462, 465, 55, 642, 463, 642, 55, 55, 55, 642, + + 55, 55, 642, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 642, 55, 55, 55, 466, 55, 467, 642, + 642, 55, 642, 642, 55, 642, 55, 55, 470, 55, + 55, 468, 55, 55, 55, 55, 55, 55, 55, 55, + 642, 55, 55, 55, 55, 55, 55, 469, 55, 55, + 55, 55, 55, 642, 55, 55, 642, 55, 55, 642, + 642, 55, 642, 474, 55, 642, 55, 476, 475, 55, + 55, 55, 55, 55, 55, 55, 477, 478, 642, 642, + 55, 55, 55, 55, 642, 55, 55, 55, 55, 55, + 480, 479, 642, 55, 55, 642, 642, 55, 642, 55, + + 55, 55, 642, 642, 55, 55, 485, 55, 642, 481, + 642, 55, 55, 55, 55, 483, 55, 55, 55, 55, + 484, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 486, 55, 642, 487, 55, + 488, 55, 55, 55, 55, 55, 642, 642, 55, 642, + 55, 642, 489, 55, 55, 55, 55, 55, 55, 490, + 491, 55, 55, 55, 55, 492, 55, 55, 493, 499, + 55, 55, 500, 55, 55, 642, 55, 642, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 642, 642, 495, + 494, 642, 642, 55, 642, 55, 55, 55, 642, 55, + + 642, 55, 497, 55, 642, 55, 55, 642, 55, 496, + 55, 55, 55, 498, 55, 55, 55, 55, 55, 642, + 55, 55, 501, 55, 642, 55, 55, 55, 642, 55, + 55, 55, 55, 503, 55, 502, 55, 55, 504, 642, + 55, 55, 642, 55, 55, 55, 55, 505, 55, 55, + 55, 55, 55, 642, 55, 55, 55, 55, 55, 506, + 55, 55, 55, 55, 55, 507, 55, 55, 55, 55, + 55, 55, 55, 55, 509, 513, 55, 642, 55, 508, + 55, 642, 55, 642, 642, 642, 55, 55, 55, 55, + 55, 55, 55, 55, 514, 515, 55, 517, 55, 55, + + 55, 55, 516, 55, 55, 642, 55, 55, 55, 55, + 55, 518, 55, 55, 55, 520, 521, 55, 642, 55, + 55, 642, 642, 55, 642, 55, 55, 522, 55, 55, + 55, 55, 523, 55, 642, 642, 55, 55, 642, 55, + 55, 55, 642, 642, 55, 642, 55, 55, 642, 642, + 642, 55, 55, 55, 55, 524, 55, 55, 55, 55, + 55, 525, 55, 55, 55, 55, 55, 55, 55, 55, + 527, 642, 55, 55, 528, 526, 55, 529, 642, 531, + 55, 55, 55, 55, 55, 55, 55, 642, 55, 530, + 55, 55, 55, 642, 533, 55, 55, 55, 534, 532, + + 55, 55, 55, 535, 55, 55, 642, 642, 55, 642, + 55, 55, 642, 55, 55, 55, 55, 55, 55, 642, + 642, 55, 642, 642, 55, 642, 642, 55, 536, 55, + 642, 55, 55, 55, 55, 55, 55, 537, 55, 55, + 55, 55, 642, 55, 642, 55, 642, 642, 55, 538, + 642, 539, 55, 541, 55, 55, 55, 642, 55, 55, + 642, 642, 540, 55, 642, 55, 642, 55, 642, 55, + 55, 542, 55, 55, 55, 55, 543, 55, 55, 55, + 55, 55, 55, 642, 55, 642, 55, 547, 55, 642, + 55, 642, 55, 642, 55, 548, 55, 642, 55, 642, + + 55, 642, 55, 549, 55, 642, 55, 642, 55, 550, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 642, 642, 55, + 552, 642, 55, 55, 642, 55, 55, 55, 55, 55, + 553, 642, 55, 642, 55, 554, 55, 642, 55, 55, + 555, 55, 642, 55, 55, 55, 642, 556, 55, 55, + 55, 55, 557, 55, 55, 642, 558, 642, 55, 55, + 55, 642, 55, 55, 55, 55, 55, 55, 559, 55, + 55, 55, 642, 560, 55, 55, 55, 55, 55, 561, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + + 563, 55, 642, 55, 642, 562, 642, 564, 55, 642, + 55, 642, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 565, 55, 642, 566, 55, 567, 55, 55, 55, + 55, 55, 642, 55, 55, 642, 55, 55, 642, 55, + 55, 55, 55, 55, 55, 642, 55, 642, 55, 55, + 55, 642, 55, 55, 55, 55, 55, 55, 572, 55, + 55, 55, 642, 55, 55, 573, 55, 55, 574, 575, + 55, 642, 55, 642, 55, 642, 55, 55, 55, 55, + 55, 55, 576, 55, 55, 577, 55, 578, 55, 55, + 642, 55, 642, 642, 55, 55, 642, 55, 55, 642, + + 55, 55, 55, 55, 579, 55, 642, 580, 642, 55, + 581, 55, 642, 55, 55, 582, 55, 55, 55, 55, + 55, 55, 642, 55, 642, 55, 55, 55, 642, 55, + 55, 583, 55, 55, 55, 55, 55, 55, 588, 55, + 55, 55, 55, 55, 55, 55, 589, 642, 55, 642, + 55, 55, 590, 55, 587, 55, 642, 55, 642, 55, + 55, 593, 55, 55, 55, 55, 55, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, + 55, 55, 642, 55, 595, 55, 594, 55, 55, 600, + 55, 596, 55, 55, 642, 55, 592, 55, 55, 55, + + 642, 55, 55, 55, 55, 55, 604, 642, 55, 642, + 55, 55, 602, 642, 55, 601, 55, 55, 55, 605, + 55, 55, 606, 55, 642, 55, 55, 55, 642, 607, + 55, 55, 55, 55, 608, 55, 55, 642, 642, 642, + 55, 55, 55, 55, 55, 55, 55, 55, 612, 55, + 642, 55, 55, 613, 55, 55, 55, 55, 55, 55, + 55, 642, 642, 615, 55, 616, 642, 55, 55, 55, + 55, 55, 55, 642, 55, 55, 55, 55, 55, 642, + 617, 642, 55, 55, 55, 55, 55, 621, 55, 55, + 642, 55, 642, 642, 55, 55, 642, 642, 642, 55, + + 55, 623, 624, 55, 55, 55, 55, 55, 55, 625, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 630, + 55, 55, 55, 55, 55, 55, 642, 642, 55, 55, + 642, 55, 55, 642, 55, 642, 55, 642, 55, 642, + 642, 642, 642, 55, 3, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 642 - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516 } ; -static grib_yyconst flex_int16_t grib_yy_chk[2141] = +static grib_yyconst flex_int16_t grib_yy_chk[3198] = { 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, - 11, 11, 11, 12, 12, 12, 12, 13, 13, 16, - 16, 16, 17, 17, 17, 18, 18, 18, 20, 20, - 20, 17, 518, 21, 21, 21, 22, 22, 22, 23, - 23, 23, 517, 25, 514, 25, 513, 25, 18, 25, - 511, 22, 510, 20, 508, 20, 21, 20, 23, 20, + 1, 1, 11, 11, 11, 11, 12, 12, 12, 12, + 12, 13, 13, 16, 16, 16, 16, 17, 17, 17, + 17, 18, 18, 18, 18, 22, 644, 17, 21, 21, + 21, 21, 48, 48, 48, 48, 22, 26, 22, 22, + 22, 643, 22, 24, 640, 18, 20, 20, 20, 20, - 506, 21, 24, 505, 22, 504, 499, 23, 498, 24, - 21, 24, 23, 24, 497, 24, 26, 26, 26, 492, - 24, 27, 27, 27, 29, 491, 29, 490, 29, 482, - 29, 45, 45, 45, 45, 26, 30, 30, 30, 31, - 46, 46, 46, 31, 27, 28, 481, 31, 28, 28, - 480, 30, 31, 472, 28, 30, 28, 471, 28, 30, - 28, 28, 32, 470, 30, 460, 32, 33, 33, 33, - 32, 459, 458, 34, 35, 32, 447, 34, 35, 446, - 32, 34, 35, 445, 444, 36, 34, 35, 34, 36, - 427, 37, 425, 36, 36, 37, 424, 33, 36, 37, + 638, 24, 21, 24, 637, 24, 26, 24, 21, 25, + 26, 25, 24, 25, 635, 25, 26, 21, 26, 634, + 29, 26, 29, 20, 29, 20, 29, 20, 27, 20, + 23, 633, 27, 631, 23, 629, 27, 23, 628, 23, + 23, 23, 27, 23, 147, 23, 32, 27, 28, 147, + 32, 28, 28, 30, 147, 30, 32, 30, 28, 30, + 28, 32, 28, 31, 28, 28, 33, 31, 34, 627, + 33, 31, 34, 626, 622, 620, 33, 31, 34, 619, + 34, 33, 31, 34, 34, 35, 618, 36, 38, 35, + 614, 36, 38, 35, 611, 610, 609, 36, 38, 35, - 423, 33, 36, 402, 37, 36, 37, 38, 38, 38, - 39, 39, 39, 47, 47, 47, 47, 53, 53, 53, - 398, 54, 54, 54, 55, 55, 55, 56, 56, 56, - 397, 396, 39, 54, 38, 57, 57, 57, 368, 363, - 39, 58, 58, 58, 55, 59, 59, 59, 362, 361, - 56, 322, 315, 57, 60, 60, 60, 61, 61, 61, - 314, 313, 59, 62, 62, 62, 268, 63, 261, 63, - 58, 63, 64, 63, 260, 259, 59, 198, 197, 64, - 64, 64, 196, 64, 73, 64, 60, 65, 65, 65, - 66, 66, 66, 61, 42, 62, 67, 67, 67, 40, + 38, 35, 36, 38, 35, 37, 39, 603, 39, 37, + 39, 37, 39, 37, 599, 37, 598, 40, 597, 37, + 37, 40, 37, 40, 591, 40, 40, 40, 41, 41, + 41, 586, 41, 585, 41, 47, 47, 47, 47, 47, + 49, 49, 49, 49, 49, 55, 56, 55, 60, 55, + 60, 55, 60, 57, 60, 236, 236, 236, 236, 57, + 56, 57, 56, 57, 56, 57, 56, 58, 59, 59, + 584, 58, 61, 59, 65, 570, 65, 58, 65, 59, + 65, 61, 58, 61, 59, 61, 62, 61, 62, 569, + 62, 568, 62, 62, 63, 64, 63, 64, 63, 64, - 15, 68, 68, 68, 69, 69, 69, 65, 70, 70, - 70, 71, 71, 71, 72, 72, 72, 74, 74, 74, - 14, 10, 67, 66, 68, 7, 70, 5, 3, 72, - 75, 75, 75, 0, 0, 69, 76, 76, 76, 0, - 71, 77, 77, 77, 78, 78, 78, 0, 75, 74, - 79, 79, 79, 80, 80, 80, 81, 81, 81, 0, - 77, 0, 76, 82, 82, 82, 0, 79, 83, 83, - 83, 84, 84, 84, 0, 81, 85, 85, 85, 87, - 87, 87, 82, 0, 83, 86, 86, 86, 88, 88, - 88, 0, 104, 89, 89, 89, 104, 0, 84, 0, + 63, 64, 64, 66, 68, 63, 551, 66, 546, 545, + 68, 67, 68, 66, 68, 69, 68, 544, 66, 67, + 67, 67, 519, 67, 69, 67, 69, 70, 69, 512, + 69, 70, 511, 510, 72, 71, 482, 70, 72, 71, + 473, 472, 70, 71, 72, 71, 74, 471, 437, 72, + 71, 73, 427, 73, 74, 73, 74, 73, 74, 75, + 74, 75, 76, 75, 78, 75, 78, 426, 78, 425, + 78, 78, 79, 76, 378, 76, 79, 76, 367, 76, + 366, 81, 79, 365, 80, 312, 80, 79, 80, 81, + 80, 81, 301, 81, 300, 81, 82, 82, 82, 83, - 104, 90, 90, 90, 0, 104, 88, 85, 89, 0, - 87, 87, 86, 86, 90, 91, 91, 91, 0, 0, - 86, 92, 92, 92, 93, 93, 93, 94, 94, 94, - 95, 95, 95, 90, 96, 96, 96, 97, 97, 97, - 91, 0, 134, 93, 0, 94, 134, 98, 98, 98, - 0, 134, 97, 99, 99, 99, 0, 96, 100, 100, - 100, 95, 0, 97, 98, 101, 101, 101, 102, 102, - 102, 103, 103, 103, 99, 0, 105, 0, 0, 98, - 105, 100, 0, 0, 105, 0, 106, 0, 0, 105, - 106, 102, 105, 0, 106, 101, 107, 103, 0, 106, + 82, 84, 82, 83, 299, 84, 85, 224, 85, 83, + 223, 84, 85, 222, 83, 86, 84, 77, 85, 44, + 87, 86, 88, 85, 87, 86, 88, 42, 15, 89, + 87, 86, 88, 89, 14, 87, 86, 88, 90, 89, + 10, 90, 7, 5, 89, 90, 91, 3, 91, 0, + 91, 90, 91, 92, 0, 92, 90, 92, 93, 92, + 93, 93, 93, 94, 93, 94, 95, 94, 93, 94, + 94, 96, 97, 98, 95, 98, 95, 98, 95, 98, + 95, 0, 96, 0, 96, 97, 96, 97, 96, 97, + 100, 97, 97, 99, 100, 99, 0, 99, 0, 99, - 107, 109, 109, 109, 107, 110, 110, 110, 109, 107, - 111, 111, 111, 112, 112, 112, 0, 110, 0, 0, - 109, 113, 113, 113, 114, 114, 114, 0, 112, 115, - 115, 115, 116, 116, 116, 117, 117, 117, 118, 118, - 118, 0, 0, 114, 119, 119, 119, 120, 120, 120, - 0, 116, 115, 121, 121, 121, 122, 122, 122, 0, - 120, 0, 0, 119, 123, 123, 123, 124, 124, 124, - 0, 0, 121, 0, 0, 122, 125, 125, 125, 126, - 126, 126, 0, 0, 124, 127, 127, 127, 128, 128, - 128, 0, 0, 123, 126, 129, 129, 129, 124, 0, + 100, 101, 101, 0, 103, 100, 101, 102, 103, 102, + 104, 102, 101, 102, 103, 105, 0, 101, 0, 103, + 0, 104, 104, 104, 105, 104, 105, 104, 105, 106, + 105, 105, 0, 107, 106, 105, 106, 107, 106, 0, + 106, 108, 109, 107, 0, 108, 109, 0, 107, 108, + 0, 0, 109, 0, 109, 108, 110, 109, 111, 110, + 108, 0, 111, 110, 0, 0, 0, 112, 111, 110, + 113, 112, 0, 111, 110, 112, 113, 112, 0, 114, + 113, 0, 112, 114, 115, 0, 113, 114, 0, 0, + 116, 113, 117, 114, 116, 115, 117, 115, 114, 115, - 0, 127, 130, 130, 130, 131, 131, 131, 132, 132, - 132, 0, 0, 125, 133, 133, 133, 128, 135, 135, - 135, 130, 136, 136, 136, 0, 0, 129, 137, 137, - 137, 138, 138, 138, 0, 133, 132, 135, 0, 0, - 136, 139, 139, 139, 140, 140, 140, 0, 137, 0, - 138, 141, 141, 141, 142, 142, 142, 143, 143, 143, - 144, 144, 144, 145, 145, 145, 139, 0, 141, 146, - 146, 146, 0, 142, 140, 147, 147, 147, 143, 148, - 148, 148, 0, 0, 145, 149, 149, 149, 150, 150, - 150, 0, 144, 146, 147, 151, 151, 151, 0, 0, + 116, 115, 117, 0, 118, 116, 118, 117, 118, 121, + 118, 120, 120, 120, 120, 123, 122, 0, 122, 120, + 122, 0, 122, 121, 0, 121, 123, 121, 123, 121, + 123, 120, 123, 124, 125, 124, 126, 124, 125, 124, + 126, 0, 0, 127, 125, 0, 126, 127, 0, 125, + 128, 126, 129, 127, 128, 0, 129, 0, 127, 130, + 128, 0, 129, 130, 0, 128, 131, 129, 0, 130, + 0, 132, 131, 0, 130, 132, 131, 278, 278, 278, + 278, 132, 131, 0, 0, 134, 132, 131, 133, 134, + 133, 0, 133, 136, 133, 134, 0, 135, 0, 135, - 149, 152, 152, 152, 153, 153, 153, 154, 154, 154, - 148, 150, 155, 155, 155, 156, 156, 156, 152, 0, - 153, 152, 157, 157, 157, 151, 158, 158, 158, 160, - 160, 160, 154, 159, 159, 159, 161, 161, 161, 162, - 162, 162, 155, 0, 0, 157, 0, 156, 163, 163, - 163, 159, 162, 158, 164, 164, 164, 160, 165, 165, - 165, 166, 166, 166, 0, 167, 167, 167, 161, 168, - 168, 168, 171, 171, 171, 163, 169, 169, 169, 0, - 0, 165, 0, 164, 170, 170, 170, 172, 172, 172, - 173, 173, 173, 166, 167, 171, 168, 169, 174, 174, + 134, 135, 136, 135, 136, 137, 136, 137, 136, 137, + 138, 137, 139, 0, 139, 0, 139, 137, 139, 139, + 140, 138, 141, 138, 141, 138, 141, 138, 141, 0, + 140, 142, 140, 142, 140, 142, 140, 142, 142, 143, + 144, 145, 0, 143, 144, 145, 0, 0, 148, 143, + 144, 145, 148, 0, 143, 144, 145, 146, 148, 146, + 149, 146, 0, 148, 149, 0, 0, 146, 0, 0, + 149, 0, 146, 150, 0, 149, 150, 150, 0, 151, + 151, 152, 152, 150, 151, 152, 0, 0, 150, 153, + 151, 152, 0, 153, 0, 151, 152, 0, 0, 153, - 174, 175, 0, 175, 175, 175, 177, 177, 177, 170, - 176, 176, 176, 0, 172, 173, 178, 178, 178, 176, - 0, 179, 179, 179, 180, 180, 180, 181, 181, 181, - 174, 182, 182, 182, 183, 183, 183, 177, 184, 184, - 184, 0, 0, 178, 179, 0, 0, 182, 185, 185, - 185, 187, 187, 187, 180, 186, 186, 186, 188, 188, - 188, 189, 189, 189, 190, 190, 190, 191, 191, 191, - 184, 188, 0, 185, 186, 192, 192, 192, 193, 193, - 193, 0, 0, 187, 194, 194, 194, 0, 0, 190, - 195, 195, 195, 0, 189, 199, 199, 199, 192, 200, + 0, 154, 0, 154, 153, 154, 155, 154, 0, 155, + 0, 155, 156, 155, 156, 155, 156, 156, 156, 157, + 158, 157, 159, 157, 0, 157, 159, 0, 0, 158, + 0, 158, 159, 158, 160, 158, 160, 159, 160, 0, + 0, 161, 0, 0, 160, 161, 0, 0, 162, 160, + 162, 161, 162, 0, 0, 161, 161, 164, 162, 0, + 163, 164, 0, 162, 163, 0, 163, 164, 166, 0, + 163, 0, 164, 0, 165, 163, 165, 0, 165, 166, + 165, 166, 167, 166, 168, 166, 167, 172, 168, 172, + 0, 172, 167, 172, 168, 0, 168, 167, 169, 168, - 200, 200, 201, 201, 201, 0, 195, 0, 202, 202, - 202, 203, 203, 203, 194, 204, 204, 204, 200, 0, - 0, 195, 199, 205, 205, 205, 0, 201, 202, 0, - 204, 206, 206, 206, 207, 207, 207, 208, 208, 208, - 209, 209, 209, 0, 203, 210, 210, 210, 0, 211, - 211, 211, 0, 209, 0, 0, 206, 212, 212, 212, - 213, 213, 213, 214, 214, 214, 207, 215, 215, 215, - 0, 0, 212, 216, 216, 216, 0, 0, 210, 211, - 217, 217, 217, 214, 0, 0, 215, 218, 218, 218, - 219, 219, 219, 0, 0, 217, 220, 220, 220, 0, + 169, 169, 170, 0, 169, 0, 171, 175, 170, 171, + 169, 175, 170, 171, 0, 169, 0, 175, 170, 171, + 0, 0, 175, 170, 171, 173, 0, 173, 0, 173, + 173, 173, 174, 177, 174, 0, 174, 0, 174, 174, + 176, 177, 176, 177, 176, 177, 176, 177, 178, 0, + 0, 179, 178, 0, 0, 179, 0, 180, 178, 179, + 183, 180, 183, 178, 183, 179, 183, 180, 181, 182, + 179, 180, 180, 182, 181, 0, 186, 182, 181, 0, + 186, 0, 0, 182, 181, 0, 186, 0, 182, 181, + 184, 186, 184, 185, 184, 185, 184, 185, 185, 185, - 0, 216, 221, 221, 221, 222, 222, 222, 0, 0, - 218, 223, 223, 223, 224, 224, 224, 225, 225, 225, - 0, 226, 226, 226, 0, 0, 220, 224, 0, 0, - 221, 227, 227, 227, 228, 228, 228, 222, 229, 229, - 229, 0, 0, 223, 226, 230, 230, 230, 231, 231, - 231, 225, 0, 228, 232, 232, 232, 0, 227, 233, - 233, 233, 234, 234, 234, 231, 235, 235, 235, 237, - 237, 237, 230, 236, 236, 236, 238, 238, 238, 232, - 239, 239, 239, 234, 240, 240, 240, 0, 0, 235, - 233, 241, 241, 241, 236, 238, 242, 242, 242, 239, + 187, 188, 187, 188, 187, 188, 187, 188, 188, 189, + 0, 189, 0, 189, 190, 189, 191, 190, 191, 190, + 191, 190, 191, 190, 192, 0, 193, 0, 193, 192, + 193, 192, 193, 192, 194, 192, 0, 195, 194, 195, + 0, 195, 0, 195, 194, 0, 196, 0, 196, 194, + 196, 197, 196, 197, 200, 197, 0, 197, 197, 198, + 0, 198, 0, 198, 199, 198, 199, 199, 199, 199, + 201, 200, 201, 200, 201, 200, 201, 200, 202, 203, + 202, 204, 202, 203, 202, 204, 0, 0, 205, 203, + 0, 204, 205, 204, 203, 0, 204, 206, 205, 0, - 243, 243, 243, 244, 244, 244, 0, 242, 245, 245, - 245, 246, 246, 246, 247, 247, 247, 248, 248, 248, - 0, 244, 249, 249, 249, 250, 250, 250, 0, 251, - 251, 251, 248, 247, 252, 252, 252, 0, 253, 253, - 253, 249, 0, 246, 251, 254, 254, 254, 255, 255, - 255, 256, 256, 256, 250, 257, 257, 257, 0, 251, - 0, 0, 252, 253, 254, 258, 258, 258, 262, 262, - 262, 263, 263, 263, 0, 0, 255, 0, 257, 264, - 264, 264, 0, 256, 265, 265, 265, 266, 266, 266, - 267, 267, 267, 269, 269, 269, 0, 0, 263, 270, + 206, 207, 208, 205, 206, 207, 208, 0, 0, 209, + 206, 207, 208, 209, 0, 206, 207, 208, 211, 209, + 0, 0, 211, 209, 209, 210, 212, 210, 211, 210, + 212, 210, 213, 211, 0, 214, 212, 0, 213, 214, + 212, 212, 213, 0, 0, 214, 215, 0, 213, 0, + 214, 0, 215, 213, 0, 216, 215, 216, 0, 216, + 0, 216, 215, 0, 217, 218, 217, 215, 217, 218, + 217, 0, 219, 220, 0, 218, 219, 220, 0, 221, + 218, 0, 219, 220, 0, 220, 0, 219, 220, 221, + 225, 221, 225, 221, 225, 221, 225, 226, 227, 226, - 270, 270, 262, 0, 0, 266, 0, 264, 0, 265, - 271, 271, 271, 0, 272, 272, 272, 273, 273, 273, - 0, 270, 267, 274, 274, 274, 275, 275, 275, 276, - 276, 276, 0, 0, 273, 277, 277, 277, 278, 278, - 278, 0, 271, 272, 274, 279, 279, 279, 280, 280, - 280, 0, 0, 281, 281, 281, 0, 282, 282, 282, - 276, 278, 0, 275, 277, 283, 283, 283, 284, 284, - 284, 280, 281, 285, 285, 285, 0, 279, 0, 281, - 282, 286, 286, 286, 287, 287, 287, 288, 288, 288, - 0, 0, 285, 289, 289, 289, 284, 290, 290, 290, + 0, 226, 0, 226, 228, 0, 0, 0, 228, 0, + 0, 227, 0, 227, 228, 227, 229, 227, 229, 228, + 229, 230, 229, 0, 231, 0, 0, 230, 231, 230, + 0, 230, 0, 230, 231, 0, 232, 233, 232, 231, + 232, 233, 232, 0, 0, 234, 235, 233, 0, 234, + 235, 0, 233, 234, 0, 0, 235, 0, 0, 234, + 0, 235, 240, 237, 234, 237, 238, 237, 238, 237, + 238, 0, 238, 238, 239, 240, 239, 240, 239, 240, + 239, 240, 241, 242, 244, 0, 241, 242, 244, 0, + 0, 0, 241, 242, 244, 242, 243, 241, 242, 244, - 291, 291, 291, 0, 0, 288, 292, 292, 292, 286, - 0, 0, 287, 0, 289, 291, 293, 293, 293, 290, - 0, 294, 294, 294, 295, 295, 295, 0, 0, 292, - 296, 296, 296, 0, 0, 293, 294, 297, 297, 297, - 298, 298, 298, 299, 299, 299, 0, 0, 298, 0, - 0, 295, 300, 300, 300, 301, 301, 301, 302, 302, - 302, 303, 303, 303, 304, 304, 304, 0, 301, 0, - 0, 305, 305, 305, 302, 306, 306, 306, 307, 307, - 307, 308, 308, 308, 0, 0, 309, 309, 309, 0, - 306, 310, 310, 310, 0, 0, 304, 303, 305, 309, + 243, 245, 245, 246, 243, 245, 0, 246, 0, 0, + 243, 245, 0, 246, 0, 243, 245, 247, 246, 0, + 248, 247, 249, 0, 248, 250, 249, 247, 248, 250, + 249, 0, 247, 251, 248, 250, 249, 251, 0, 248, + 250, 249, 252, 251, 0, 253, 252, 0, 251, 253, + 0, 0, 252, 256, 252, 253, 0, 252, 254, 256, + 253, 255, 254, 256, 0, 255, 0, 0, 254, 256, + 0, 255, 254, 254, 256, 255, 255, 257, 0, 259, + 258, 257, 0, 259, 258, 0, 0, 257, 258, 259, + 258, 0, 257, 257, 259, 258, 260, 262, 260, 261, - 0, 0, 307, 311, 311, 311, 312, 312, 312, 316, - 316, 316, 0, 308, 317, 317, 317, 0, 310, 318, - 318, 318, 319, 319, 319, 320, 320, 320, 321, 321, - 321, 323, 323, 323, 318, 324, 324, 324, 312, 325, - 325, 325, 0, 0, 320, 326, 326, 326, 0, 0, - 319, 327, 327, 327, 0, 0, 321, 328, 328, 328, - 326, 329, 329, 329, 330, 330, 330, 331, 331, 331, - 327, 0, 324, 332, 332, 332, 333, 333, 333, 334, - 334, 334, 335, 335, 335, 0, 336, 336, 336, 337, - 337, 337, 331, 329, 333, 338, 338, 338, 339, 339, + 260, 262, 260, 0, 261, 263, 261, 262, 261, 263, + 261, 0, 262, 264, 0, 263, 0, 264, 0, 0, + 263, 0, 0, 264, 0, 0, 0, 264, 264, 265, + 266, 265, 266, 265, 266, 265, 266, 266, 267, 268, + 269, 268, 269, 268, 269, 268, 269, 267, 270, 267, + 270, 267, 270, 267, 270, 270, 271, 273, 271, 272, + 271, 273, 271, 0, 272, 0, 272, 273, 272, 274, + 272, 274, 273, 274, 0, 0, 275, 276, 277, 274, + 275, 276, 277, 0, 274, 0, 275, 276, 277, 0, + 280, 275, 276, 277, 279, 279, 279, 279, 280, 281, - 339, 330, 340, 340, 340, 341, 341, 341, 342, 342, - 342, 0, 0, 334, 336, 335, 337, 343, 343, 343, - 0, 342, 340, 0, 0, 339, 344, 344, 344, 345, - 345, 345, 346, 346, 346, 347, 347, 347, 348, 348, - 348, 349, 349, 349, 350, 350, 350, 0, 345, 351, - 351, 351, 352, 352, 352, 0, 0, 348, 344, 353, - 353, 353, 346, 0, 0, 352, 347, 354, 354, 354, - 350, 0, 353, 0, 351, 355, 355, 355, 356, 356, - 356, 357, 357, 357, 358, 358, 358, 359, 359, 359, - 360, 360, 360, 364, 364, 364, 0, 0, 355, 354, + 282, 282, 280, 281, 0, 282, 0, 0, 280, 281, + 0, 282, 0, 280, 281, 283, 282, 284, 285, 283, + 0, 284, 285, 0, 0, 283, 0, 284, 285, 0, + 283, 284, 284, 285, 286, 0, 0, 287, 286, 0, + 0, 287, 288, 0, 286, 287, 288, 0, 0, 286, + 290, 287, 288, 0, 0, 0, 287, 288, 289, 0, + 289, 290, 289, 290, 289, 290, 290, 290, 291, 292, + 0, 292, 291, 292, 0, 292, 0, 294, 291, 0, + 293, 294, 293, 291, 293, 295, 293, 294, 0, 295, + 0, 0, 294, 296, 297, 295, 0, 296, 297, 0, - 359, 0, 365, 365, 365, 366, 366, 366, 367, 367, - 367, 369, 369, 369, 0, 0, 358, 365, 370, 370, - 370, 371, 371, 371, 0, 364, 372, 372, 372, 373, - 373, 373, 374, 374, 374, 375, 375, 375, 367, 0, - 369, 376, 376, 376, 377, 377, 377, 0, 0, 370, - 378, 378, 378, 0, 375, 379, 379, 379, 0, 0, - 376, 380, 380, 380, 381, 381, 381, 0, 0, 377, - 382, 382, 382, 0, 380, 0, 0, 378, 0, 381, - 379, 383, 383, 383, 384, 384, 384, 385, 385, 385, - 386, 386, 386, 0, 387, 387, 387, 388, 388, 388, + 295, 298, 302, 296, 297, 298, 302, 296, 296, 297, + 303, 298, 302, 0, 303, 304, 298, 302, 302, 304, + 303, 0, 305, 304, 305, 303, 305, 306, 305, 304, + 0, 306, 0, 0, 304, 0, 308, 306, 309, 307, + 0, 307, 306, 307, 308, 307, 308, 0, 308, 0, + 308, 309, 0, 309, 0, 309, 0, 309, 309, 310, + 310, 310, 311, 310, 311, 310, 311, 314, 311, 311, + 313, 314, 313, 314, 313, 314, 313, 314, 315, 0, + 315, 0, 315, 0, 315, 315, 316, 317, 316, 320, + 316, 320, 316, 320, 318, 320, 317, 0, 317, 318, - 383, 0, 382, 389, 389, 389, 390, 390, 390, 0, - 0, 384, 387, 391, 391, 391, 392, 392, 392, 0, - 388, 0, 389, 390, 393, 393, 393, 394, 394, 394, - 395, 395, 395, 399, 399, 399, 400, 400, 400, 0, - 391, 401, 401, 401, 403, 403, 403, 404, 404, 404, - 0, 393, 405, 405, 405, 406, 406, 406, 407, 407, - 407, 395, 0, 403, 394, 0, 404, 0, 400, 408, - 408, 408, 409, 409, 409, 410, 410, 410, 411, 411, - 411, 0, 406, 412, 412, 412, 413, 413, 413, 0, - 407, 414, 414, 414, 415, 415, 415, 0, 0, 413, + 317, 318, 317, 318, 319, 318, 319, 321, 319, 321, + 319, 321, 0, 321, 322, 323, 319, 323, 322, 323, + 0, 323, 0, 0, 322, 0, 324, 325, 324, 322, + 324, 325, 324, 324, 327, 326, 328, 325, 327, 326, + 328, 0, 325, 326, 327, 326, 328, 0, 329, 327, + 326, 328, 329, 0, 0, 330, 331, 332, 329, 330, + 331, 332, 0, 329, 333, 330, 331, 332, 333, 0, + 330, 331, 332, 334, 333, 335, 335, 334, 0, 333, + 335, 0, 0, 334, 336, 0, 335, 0, 334, 0, + 336, 335, 338, 337, 336, 337, 338, 337, 0, 0, - 0, 411, 0, 0, 410, 416, 416, 416, 0, 409, - 417, 417, 417, 418, 418, 418, 419, 419, 419, 0, - 412, 0, 0, 414, 420, 420, 420, 0, 421, 421, - 421, 422, 422, 422, 0, 0, 416, 426, 426, 426, - 0, 418, 0, 0, 419, 428, 428, 428, 429, 429, - 429, 430, 430, 430, 0, 0, 420, 421, 0, 0, - 422, 431, 431, 431, 432, 432, 432, 433, 433, 433, - 434, 434, 434, 435, 435, 435, 436, 436, 436, 437, - 437, 437, 433, 0, 431, 438, 438, 438, 439, 439, - 439, 440, 440, 440, 0, 434, 441, 441, 441, 442, + 336, 0, 338, 337, 338, 336, 339, 338, 337, 339, + 339, 340, 0, 341, 342, 340, 339, 341, 342, 340, + 0, 339, 0, 341, 342, 340, 342, 341, 341, 342, + 340, 343, 344, 0, 0, 343, 344, 0, 0, 0, + 345, 343, 344, 0, 345, 0, 343, 344, 345, 346, + 349, 346, 0, 346, 345, 346, 347, 0, 347, 345, + 347, 348, 347, 348, 352, 348, 0, 348, 349, 350, + 349, 350, 349, 350, 349, 350, 351, 352, 351, 352, + 351, 352, 351, 352, 353, 356, 354, 356, 354, 356, + 354, 356, 354, 0, 353, 0, 353, 354, 353, 355, - 442, 442, 435, 436, 0, 0, 439, 443, 443, 443, - 0, 440, 448, 448, 448, 0, 438, 0, 442, 449, - 449, 449, 450, 450, 450, 0, 443, 451, 451, 451, - 452, 452, 452, 453, 453, 453, 0, 449, 454, 454, - 454, 448, 456, 456, 456, 0, 451, 455, 455, 455, - 457, 457, 457, 462, 462, 462, 453, 454, 452, 463, - 463, 463, 455, 464, 464, 464, 0, 457, 465, 465, - 465, 466, 466, 466, 467, 467, 467, 463, 462, 468, - 468, 468, 469, 469, 469, 473, 473, 473, 465, 474, - 474, 474, 475, 475, 475, 476, 476, 476, 466, 477, + 353, 355, 357, 355, 0, 355, 355, 358, 358, 0, + 358, 0, 358, 357, 358, 357, 359, 357, 359, 357, + 359, 360, 359, 359, 361, 360, 0, 0, 372, 0, + 361, 360, 372, 362, 361, 362, 360, 362, 372, 362, + 361, 0, 363, 372, 363, 361, 363, 364, 363, 364, + 0, 364, 0, 364, 364, 368, 0, 368, 369, 368, + 369, 368, 369, 369, 369, 370, 371, 370, 0, 370, + 373, 370, 0, 0, 373, 0, 374, 371, 0, 371, + 373, 371, 0, 371, 374, 373, 374, 375, 374, 0, + 374, 375, 376, 0, 377, 376, 379, 375, 377, 376, - 477, 477, 468, 0, 473, 469, 467, 475, 478, 478, - 478, 0, 474, 0, 477, 0, 476, 479, 479, 479, - 483, 483, 483, 484, 484, 484, 485, 485, 485, 486, - 486, 486, 0, 478, 488, 488, 488, 479, 487, 487, - 487, 489, 489, 489, 493, 493, 493, 0, 0, 485, - 484, 494, 494, 494, 487, 495, 495, 495, 496, 496, - 496, 500, 500, 500, 489, 493, 501, 501, 501, 502, - 502, 502, 503, 503, 503, 496, 494, 507, 507, 507, - 495, 0, 0, 0, 0, 0, 0, 0, 502, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 379, 0, 375, 380, 377, 376, 379, 380, 0, 377, + 376, 379, 382, 380, 0, 381, 382, 383, 380, 381, + 382, 383, 380, 0, 384, 381, 382, 383, 384, 0, + 381, 382, 383, 385, 384, 0, 386, 385, 0, 384, + 386, 0, 0, 385, 0, 0, 386, 385, 385, 0, + 387, 386, 387, 0, 387, 386, 387, 388, 389, 388, + 389, 388, 389, 388, 389, 390, 576, 576, 576, 576, + 0, 0, 391, 390, 391, 390, 391, 390, 391, 390, + 392, 391, 393, 394, 392, 394, 393, 394, 0, 394, + 392, 0, 393, 0, 395, 392, 395, 393, 395, 396, + + 395, 396, 397, 396, 397, 396, 397, 398, 397, 0, + 399, 0, 399, 398, 399, 398, 399, 398, 400, 398, + 400, 401, 400, 401, 400, 401, 402, 401, 401, 403, + 404, 403, 404, 403, 404, 403, 404, 0, 0, 402, + 405, 402, 405, 402, 405, 402, 405, 405, 406, 407, + 408, 0, 406, 407, 408, 0, 0, 409, 406, 407, + 408, 409, 0, 406, 407, 408, 411, 409, 0, 409, + 411, 410, 409, 410, 412, 410, 411, 410, 412, 0, + 0, 411, 413, 0, 412, 0, 413, 0, 415, 412, + 413, 416, 413, 0, 414, 0, 414, 413, 414, 0, + + 414, 415, 0, 415, 416, 415, 416, 415, 416, 417, + 416, 417, 0, 417, 418, 417, 417, 419, 418, 0, + 0, 419, 0, 0, 418, 0, 420, 419, 423, 418, + 420, 421, 419, 422, 423, 421, 420, 422, 423, 421, + 0, 420, 424, 422, 423, 421, 424, 422, 422, 423, + 421, 428, 424, 0, 429, 428, 0, 424, 429, 0, + 0, 428, 0, 428, 429, 0, 428, 430, 429, 429, + 431, 430, 432, 433, 431, 430, 432, 433, 0, 0, + 431, 430, 432, 433, 0, 431, 430, 432, 433, 434, + 435, 434, 0, 434, 435, 0, 0, 436, 0, 434, + + 435, 436, 0, 0, 434, 435, 440, 436, 0, 436, + 0, 438, 436, 438, 439, 438, 439, 438, 439, 440, + 439, 440, 441, 440, 441, 440, 441, 442, 441, 442, + 443, 442, 443, 442, 443, 444, 443, 0, 445, 444, + 446, 444, 445, 444, 446, 444, 0, 0, 445, 0, + 446, 0, 447, 445, 447, 446, 447, 448, 447, 448, + 449, 448, 449, 448, 449, 450, 449, 457, 451, 457, + 458, 457, 458, 457, 458, 0, 458, 0, 450, 451, + 450, 451, 450, 451, 450, 451, 452, 0, 0, 453, + 452, 0, 0, 453, 0, 454, 452, 453, 0, 454, + + 0, 452, 455, 453, 0, 454, 455, 0, 453, 454, + 454, 456, 455, 456, 459, 456, 459, 455, 459, 0, + 459, 456, 461, 460, 0, 460, 456, 460, 0, 460, + 461, 462, 461, 463, 461, 462, 461, 463, 464, 0, + 464, 462, 0, 463, 464, 465, 462, 465, 463, 465, + 464, 465, 466, 0, 466, 464, 466, 467, 466, 467, + 468, 467, 468, 467, 468, 468, 468, 469, 470, 469, + 470, 469, 470, 469, 470, 474, 475, 0, 475, 469, + 475, 0, 475, 0, 0, 0, 474, 476, 474, 476, + 474, 476, 474, 476, 476, 477, 478, 479, 478, 480, + + 478, 479, 478, 480, 477, 0, 477, 479, 477, 480, + 477, 480, 479, 481, 480, 483, 484, 481, 0, 483, + 484, 0, 0, 481, 0, 483, 484, 485, 481, 485, + 483, 484, 486, 485, 0, 0, 486, 487, 0, 485, + 486, 487, 0, 0, 485, 0, 486, 487, 0, 0, + 0, 486, 487, 488, 489, 488, 489, 488, 489, 488, + 489, 489, 490, 491, 490, 491, 490, 491, 490, 491, + 492, 0, 492, 493, 492, 491, 492, 493, 0, 495, + 496, 494, 495, 493, 496, 494, 495, 0, 493, 494, + 496, 494, 495, 0, 497, 496, 494, 495, 498, 496, + + 497, 499, 498, 499, 497, 499, 0, 0, 498, 0, + 497, 499, 0, 498, 500, 497, 499, 501, 500, 0, + 0, 501, 0, 0, 500, 0, 0, 501, 500, 500, + 0, 502, 501, 502, 503, 502, 503, 502, 503, 504, + 503, 505, 0, 504, 0, 505, 0, 0, 506, 504, + 0, 505, 506, 507, 504, 507, 505, 0, 506, 507, + 0, 0, 506, 506, 0, 507, 0, 508, 0, 508, + 507, 508, 509, 508, 509, 513, 509, 513, 509, 513, + 514, 513, 514, 0, 514, 0, 514, 513, 515, 0, + 515, 0, 515, 0, 515, 515, 516, 0, 516, 0, + + 516, 0, 516, 516, 517, 0, 517, 0, 517, 517, + 517, 518, 520, 518, 520, 518, 520, 518, 520, 521, + 522, 521, 523, 521, 522, 521, 523, 0, 0, 524, + 522, 0, 523, 524, 0, 522, 525, 523, 526, 524, + 525, 0, 526, 0, 524, 527, 525, 0, 526, 527, + 528, 525, 0, 526, 528, 527, 0, 529, 528, 529, + 527, 529, 530, 529, 528, 0, 531, 0, 531, 528, + 531, 0, 531, 530, 532, 530, 532, 530, 532, 530, + 532, 533, 0, 533, 534, 533, 534, 533, 534, 534, + 534, 535, 536, 535, 536, 535, 536, 535, 536, 537, + + 538, 537, 0, 537, 0, 537, 0, 539, 538, 0, + 538, 0, 538, 539, 538, 539, 540, 539, 540, 539, + 540, 541, 540, 0, 542, 541, 543, 541, 542, 541, + 543, 541, 0, 547, 542, 0, 543, 547, 0, 542, + 548, 543, 549, 547, 548, 0, 549, 0, 547, 550, + 548, 0, 549, 550, 552, 548, 552, 549, 552, 550, + 552, 553, 0, 553, 550, 553, 554, 553, 554, 555, + 554, 0, 554, 0, 556, 0, 556, 555, 556, 555, + 556, 555, 557, 555, 557, 558, 557, 559, 557, 558, + 0, 559, 0, 0, 560, 558, 0, 559, 560, 0, + + 558, 561, 559, 562, 560, 561, 0, 562, 0, 560, + 563, 561, 0, 562, 563, 564, 561, 565, 562, 564, + 563, 565, 0, 564, 0, 563, 566, 565, 0, 564, + 566, 567, 565, 567, 564, 572, 566, 567, 573, 572, + 573, 566, 573, 567, 573, 572, 574, 0, 567, 0, + 572, 574, 575, 574, 572, 574, 0, 574, 0, 580, + 575, 580, 575, 580, 575, 580, 575, 577, 577, 577, + 577, 578, 578, 578, 578, 579, 579, 579, 579, 581, + 582, 581, 0, 581, 582, 581, 581, 583, 587, 588, + 582, 583, 587, 588, 0, 582, 579, 583, 587, 588, + + 0, 589, 583, 587, 588, 589, 592, 0, 590, 0, + 592, 589, 590, 0, 592, 589, 589, 593, 590, 593, + 592, 593, 594, 590, 0, 592, 594, 593, 0, 595, + 594, 595, 593, 595, 596, 595, 594, 0, 0, 0, + 596, 594, 596, 600, 596, 600, 596, 600, 601, 600, + 0, 602, 601, 602, 601, 602, 601, 602, 601, 604, + 605, 0, 0, 604, 605, 606, 0, 607, 606, 604, + 605, 607, 606, 0, 604, 605, 608, 607, 606, 0, + 608, 0, 607, 606, 612, 613, 608, 613, 612, 613, + 0, 608, 0, 0, 612, 613, 0, 0, 0, 612, + + 613, 615, 616, 615, 616, 615, 616, 615, 616, 617, + 621, 623, 621, 623, 621, 623, 621, 623, 617, 624, + 617, 625, 617, 624, 617, 625, 0, 0, 630, 624, + 0, 625, 630, 0, 624, 0, 625, 0, 630, 0, + 0, 0, 0, 630, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 642 - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516 } ; static grib_yy_state_type grib_yy_last_accepting_state; @@ -1127,7 +1404,7 @@ void _grib_ignore_grib_yyunput_unused_error() { grib_yyunput(0,0); } #endif */ -#line 1131 "lex.grib_yy.c" +#line 1408 "lex.grib_yy.c" #define INITIAL 0 @@ -1313,7 +1590,7 @@ YY_DECL -#line 1317 "lex.grib_yy.c" +#line 1594 "lex.grib_yy.c" if ( !(grib_yy_init) ) { @@ -1366,13 +1643,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 >= 517 ) + if ( grib_yy_current_state >= 643 ) 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] != 2090 ); + while ( grib_yy_base[grib_yy_current_state] != 3145 ); grib_yy_find_action: grib_yy_act = grib_yy_accept[grib_yy_current_state]; @@ -1489,376 +1766,471 @@ return DUMMY ; case 19: YY_RULE_SETUP #line 81 "gribl.l" -return LOWERCASE; +return SUBSTR ; YY_BREAK case 20: YY_RULE_SETUP #line 82 "gribl.l" -return IF ; +return CLOSE ; YY_BREAK case 21: YY_RULE_SETUP #line 83 "gribl.l" -return IF_TRANSIENT ; +return LENGTH ; YY_BREAK case 22: YY_RULE_SETUP #line 84 "gribl.l" -return ELSE ; +return LOWERCASE; YY_BREAK case 23: YY_RULE_SETUP #line 85 "gribl.l" -return UNSIGNED ; +return IF ; YY_BREAK case 24: YY_RULE_SETUP #line 86 "gribl.l" -return ASCII ; +return IF_TRANSIENT ; YY_BREAK case 25: YY_RULE_SETUP #line 87 "gribl.l" -return BYTE ; +return ELSE ; YY_BREAK case 26: YY_RULE_SETUP #line 88 "gribl.l" -return LABEL ; +return UNSIGNED ; YY_BREAK case 27: YY_RULE_SETUP #line 89 "gribl.l" -return LIST ; +return ASCII ; YY_BREAK case 28: YY_RULE_SETUP #line 90 "gribl.l" -return WHILE ; +return BYTE ; YY_BREAK case 29: YY_RULE_SETUP #line 91 "gribl.l" -return TEMPLATE ; +return LABEL ; YY_BREAK case 30: YY_RULE_SETUP #line 92 "gribl.l" -return TEMPLATE_NOFAIL ; +return LIST ; YY_BREAK case 31: YY_RULE_SETUP #line 93 "gribl.l" -return TRIGGER ; +return WHILE ; YY_BREAK case 32: YY_RULE_SETUP #line 94 "gribl.l" -return END ; +return TEMPLATE ; YY_BREAK case 33: YY_RULE_SETUP #line 95 "gribl.l" -return IBMFLOAT ; +return TEMPLATE_NOFAIL ; YY_BREAK case 34: YY_RULE_SETUP #line 96 "gribl.l" -return FLOAT ; +return TRIGGER ; YY_BREAK case 35: YY_RULE_SETUP #line 97 "gribl.l" -return SIGNED ; +return END ; YY_BREAK case 36: YY_RULE_SETUP #line 98 "gribl.l" -return CODETABLE; +return IBMFLOAT ; YY_BREAK case 37: YY_RULE_SETUP #line 99 "gribl.l" -return GETENV; +return FLOAT ; YY_BREAK case 38: YY_RULE_SETUP #line 100 "gribl.l" -return CODETABLE; +return SIGNED ; YY_BREAK case 39: YY_RULE_SETUP #line 101 "gribl.l" -return FLAG ; +return CODETABLE; YY_BREAK case 40: YY_RULE_SETUP #line 102 "gribl.l" -return LOOKUP ; +return GETENV; YY_BREAK case 41: YY_RULE_SETUP #line 103 "gribl.l" -return META ; +return SMART_TABLE; YY_BREAK case 42: YY_RULE_SETUP #line 104 "gribl.l" -return PADTOEVEN ; +return DICTIONARY; YY_BREAK case 43: YY_RULE_SETUP #line 105 "gribl.l" -return PADTO ; +return CODETABLE; YY_BREAK case 44: YY_RULE_SETUP #line 106 "gribl.l" -return PADTOMULTIPLE ; +return FLAG ; YY_BREAK case 45: YY_RULE_SETUP #line 107 "gribl.l" -return PAD ; +return LOOKUP ; YY_BREAK case 46: YY_RULE_SETUP #line 108 "gribl.l" -return SECTION_PADDING ; +return GROUP ; YY_BREAK case 47: YY_RULE_SETUP #line 109 "gribl.l" -return MESSAGE ; +return NON_ALPHA ; YY_BREAK case 48: YY_RULE_SETUP #line 110 "gribl.l" -return ALIAS ; +return META ; YY_BREAK case 49: YY_RULE_SETUP #line 111 "gribl.l" -return UNALIAS ; +return PADTOEVEN ; YY_BREAK case 50: YY_RULE_SETUP #line 112 "gribl.l" -return POS ; +return PADTO ; YY_BREAK case 51: YY_RULE_SETUP #line 113 "gribl.l" -return INTCONST ; +return PADTOMULTIPLE ; YY_BREAK case 52: YY_RULE_SETUP #line 114 "gribl.l" -return TRANS ; +return PAD ; YY_BREAK case 53: YY_RULE_SETUP #line 115 "gribl.l" -return STRING_TYPE ; +return SECTION_PADDING ; YY_BREAK case 54: YY_RULE_SETUP #line 116 "gribl.l" -return LONG_TYPE ; +return MESSAGE ; YY_BREAK case 55: YY_RULE_SETUP #line 117 "gribl.l" -return DOUBLE_TYPE ; +return MESSAGE_COPY ; YY_BREAK case 56: YY_RULE_SETUP #line 118 "gribl.l" -return ITERATOR ; +return ALIAS ; YY_BREAK case 57: YY_RULE_SETUP #line 119 "gribl.l" -return NEAREST ; +return UNALIAS ; YY_BREAK case 58: YY_RULE_SETUP #line 120 "gribl.l" -return BOX ; +return POS ; YY_BREAK case 59: YY_RULE_SETUP #line 121 "gribl.l" -return KSEC ; +return INTCONST ; YY_BREAK case 60: YY_RULE_SETUP #line 122 "gribl.l" -return FLAGBIT ; +return TRANS ; YY_BREAK case 61: YY_RULE_SETUP #line 123 "gribl.l" -return KSEC1EXPVER ; +return STRING_TYPE ; YY_BREAK case 62: YY_RULE_SETUP #line 124 "gribl.l" -return MODIFY ; +return LONG_TYPE ; YY_BREAK case 63: YY_RULE_SETUP -#line 126 "gribl.l" -return G1_HALF_BYTE ; +#line 125 "gribl.l" +return DOUBLE_TYPE ; YY_BREAK case 64: YY_RULE_SETUP -#line 127 "gribl.l" -return G1_MESSAGE_LENGTH ; +#line 126 "gribl.l" +return ITERATOR ; YY_BREAK case 65: YY_RULE_SETUP -#line 128 "gribl.l" -return G1_SECTION4_LENGTH ; +#line 127 "gribl.l" +return NEAREST ; YY_BREAK case 66: YY_RULE_SETUP -#line 130 "gribl.l" -return EXPORT; +#line 128 "gribl.l" +return BOX ; YY_BREAK case 67: YY_RULE_SETUP -#line 131 "gribl.l" -return REMOVE; +#line 129 "gribl.l" +return KSEC ; YY_BREAK case 68: YY_RULE_SETUP -#line 133 "gribl.l" -return SECTION_LENGTH ; +#line 130 "gribl.l" +return FLAGBIT ; YY_BREAK case 69: YY_RULE_SETUP -#line 135 "gribl.l" -return ASSERT ; +#line 131 "gribl.l" +return KSEC1EXPVER ; YY_BREAK case 70: YY_RULE_SETUP -#line 137 "gribl.l" -return READ_ONLY; +#line 132 "gribl.l" +return MODIFY ; YY_BREAK case 71: YY_RULE_SETUP -#line 138 "gribl.l" -return NO_COPY; +#line 134 "gribl.l" +return G1_HALF_BYTE ; YY_BREAK case 72: YY_RULE_SETUP -#line 139 "gribl.l" -return EDITION_SPECIFIC; +#line 135 "gribl.l" +return G1_MESSAGE_LENGTH ; YY_BREAK case 73: YY_RULE_SETUP -#line 140 "gribl.l" -return DUMP; +#line 136 "gribl.l" +return G1_SECTION4_LENGTH ; YY_BREAK case 74: YY_RULE_SETUP -#line 141 "gribl.l" -return NO_FAIL; +#line 138 "gribl.l" +return EXPORT; YY_BREAK case 75: YY_RULE_SETUP -#line 142 "gribl.l" -return HIDDEN; +#line 139 "gribl.l" +return REMOVE; YY_BREAK case 76: YY_RULE_SETUP -#line 143 "gribl.l" -return CAN_BE_MISSING; +#line 140 "gribl.l" +return RENAME; YY_BREAK case 77: YY_RULE_SETUP -#line 144 "gribl.l" -return MISSING; +#line 141 "gribl.l" +return IS_IN_LIST; YY_BREAK case 78: YY_RULE_SETUP -#line 145 "gribl.l" -return CONSTRAINT; +#line 142 "gribl.l" +return IS_IN_DICT; YY_BREAK case 79: YY_RULE_SETUP -#line 146 "gribl.l" -return OVERRIDE; +#line 143 "gribl.l" +return TO_INTEGER; YY_BREAK case 80: YY_RULE_SETUP -#line 147 "gribl.l" -return COPY_OK; +#line 144 "gribl.l" +return TO_STRING; YY_BREAK case 81: YY_RULE_SETUP -#line 149 "gribl.l" -return SET; +#line 145 "gribl.l" +return SEX2DEC; YY_BREAK case 82: YY_RULE_SETUP -#line 150 "gribl.l" -return SET_NOFAIL; +#line 146 "gribl.l" +return IS_INTEGER; YY_BREAK case 83: YY_RULE_SETUP -#line 151 "gribl.l" -return WHEN; +#line 147 "gribl.l" +return IS_INTEGER; YY_BREAK case 84: YY_RULE_SETUP -#line 152 "gribl.l" -return CASE; +#line 149 "gribl.l" +return SECTION_LENGTH ; YY_BREAK case 85: YY_RULE_SETUP -#line 153 "gribl.l" -return SWITCH; +#line 151 "gribl.l" +return ASSERT ; YY_BREAK case 86: YY_RULE_SETUP -#line 154 "gribl.l" -return DEFAULT; +#line 153 "gribl.l" +return READ_ONLY; YY_BREAK case 87: YY_RULE_SETUP -#line 155 "gribl.l" -return CONCEPT; +#line 154 "gribl.l" +return NO_COPY; YY_BREAK case 88: YY_RULE_SETUP -#line 156 "gribl.l" -return CONCEPT_NOFAIL; +#line 155 "gribl.l" +return EDITION_SPECIFIC; YY_BREAK case 89: YY_RULE_SETUP -#line 157 "gribl.l" -return WRITE; +#line 156 "gribl.l" +return DUMP; YY_BREAK case 90: YY_RULE_SETUP -#line 158 "gribl.l" -return APPEND; +#line 157 "gribl.l" +return JSON; YY_BREAK case 91: YY_RULE_SETUP -#line 159 "gribl.l" -return PRINT; +#line 158 "gribl.l" +return XML; YY_BREAK case 92: YY_RULE_SETUP -#line 160 "gribl.l" -return SKIP; +#line 159 "gribl.l" +return NO_FAIL; YY_BREAK case 93: YY_RULE_SETUP +#line 160 "gribl.l" +return HIDDEN; + YY_BREAK +case 94: +YY_RULE_SETUP +#line 161 "gribl.l" +return CAN_BE_MISSING; + YY_BREAK +case 95: +YY_RULE_SETUP #line 162 "gribl.l" +return MISSING; + YY_BREAK +case 96: +YY_RULE_SETUP +#line 163 "gribl.l" +return CONSTRAINT; + YY_BREAK +case 97: +YY_RULE_SETUP +#line 164 "gribl.l" +return OVERRIDE; + YY_BREAK +case 98: +YY_RULE_SETUP +#line 165 "gribl.l" +return COPY_OK; + YY_BREAK +case 99: +YY_RULE_SETUP +#line 167 "gribl.l" +return SET; + YY_BREAK +case 100: +YY_RULE_SETUP +#line 168 "gribl.l" +return SET_NOFAIL; + YY_BREAK +case 101: +YY_RULE_SETUP +#line 169 "gribl.l" +return WHEN; + YY_BREAK +case 102: +YY_RULE_SETUP +#line 170 "gribl.l" +return CASE; + YY_BREAK +case 103: +YY_RULE_SETUP +#line 171 "gribl.l" +return SWITCH; + YY_BREAK +case 104: +YY_RULE_SETUP +#line 172 "gribl.l" +return DEFAULT; + YY_BREAK +case 105: +YY_RULE_SETUP +#line 173 "gribl.l" +return CONCEPT; + YY_BREAK +case 106: +YY_RULE_SETUP +#line 174 "gribl.l" +return CONCEPT_NOFAIL; + YY_BREAK +case 107: +YY_RULE_SETUP +#line 175 "gribl.l" +return HASH_ARRAY; + YY_BREAK +case 108: +YY_RULE_SETUP +#line 176 "gribl.l" +return WRITE; + YY_BREAK +case 109: +YY_RULE_SETUP +#line 177 "gribl.l" +return APPEND; + YY_BREAK +case 110: +YY_RULE_SETUP +#line 178 "gribl.l" +return PRINT; + YY_BREAK +case 111: +YY_RULE_SETUP +#line 179 "gribl.l" +return SKIP; + YY_BREAK +case 112: +YY_RULE_SETUP +#line 181 "gribl.l" { int c,q; while((c = input()) && isspace(c) && c != '\n') ; @@ -1876,18 +2248,21 @@ YY_RULE_SETUP grib_parser_include(grib_yytext); } YY_BREAK -case 94: +case 113: YY_RULE_SETUP -#line 179 "gribl.l" +#line 198 "gribl.l" { int c,q = grib_yytext[0]; grib_yyleng = 0; - while((c = input()) && c != q && c != '\n') + while((c = input()) && c != q ) { if(c == '\\') grib_yytext[grib_yyleng++] = input(); - else grib_yytext[grib_yyleng++] = c; + else { + grib_yytext[grib_yyleng++] = c; + if (c =='\n') grib_yylineno++; + } } grib_yytext[grib_yyleng++] = 0; @@ -1895,9 +2270,9 @@ YY_RULE_SETUP return STRING; } YY_BREAK -case 95: +case 114: YY_RULE_SETUP -#line 195 "gribl.l" +#line 217 "gribl.l" { int c; unsigned long val = 0; @@ -1911,24 +2286,24 @@ YY_RULE_SETUP return INTEGER; } YY_BREAK -case 96: +case 115: YY_RULE_SETUP -#line 209 "gribl.l" +#line 231 "gribl.l" { grib_yylval.str = strdup(grib_yytext); return IDENT; } YY_BREAK -case 97: +case 116: YY_RULE_SETUP -#line 210 "gribl.l" +#line 232 "gribl.l" { grib_yylval.lval = atol((const char *)grib_yytext); return INTEGER; } YY_BREAK -case 98: +case 117: YY_RULE_SETUP -#line 211 "gribl.l" +#line 233 "gribl.l" { grib_yylval.dval = atof((const char *)grib_yytext); return FLOAT; } YY_BREAK -case 99: +case 118: YY_RULE_SETUP -#line 214 "gribl.l" +#line 236 "gribl.l" { int c; while((c = input()) && (c != '\n')){} @@ -1936,28 +2311,28 @@ YY_RULE_SETUP grib_yylineno++; } YY_BREAK -case 100: +case 119: YY_RULE_SETUP -#line 220 "gribl.l" +#line 242 "gribl.l" ; YY_BREAK -case 101: -/* rule 101 can match eol */ +case 120: +/* rule 120 can match eol */ YY_RULE_SETUP -#line 221 "gribl.l" +#line 243 "gribl.l" grib_yylineno++; YY_BREAK -case 102: +case 121: YY_RULE_SETUP -#line 225 "gribl.l" +#line 247 "gribl.l" return *grib_yytext; YY_BREAK -case 103: +case 122: YY_RULE_SETUP -#line 227 "gribl.l" +#line 249 "gribl.l" ECHO; YY_BREAK -#line 1961 "lex.grib_yy.c" +#line 2336 "lex.grib_yy.c" case YY_STATE_EOF(INITIAL): grib_yyterminate(); @@ -2249,7 +2624,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 >= 517 ) + if ( grib_yy_current_state >= 643 ) 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]; @@ -2277,11 +2652,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 >= 517 ) + if ( grib_yy_current_state >= 643 ) 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 == 516); + grib_yy_is_jam = (grib_yy_current_state == 642); return grib_yy_is_jam ? 0 : grib_yy_current_state; } @@ -2955,7 +3330,7 @@ void grib_yyfree (void * ptr ) #define YYTABLES_NAME "grib_yytables" -#line 227 "gribl.l" +#line 249 "gribl.l" diff --git a/src/grib_parse_utils.c b/src/grib_parse_utils.c index 5edee86c9..1da898448 100644 --- a/src/grib_parse_utils.c +++ b/src/grib_parse_utils.c @@ -18,6 +18,7 @@ grib_action* grib_parser_all_actions = 0; grib_context* grib_parser_context = 0; grib_concept_value* grib_parser_concept = 0; +grib_hash_array_value* grib_parser_hash_array = 0; grib_rule* grib_parser_rules = 0; extern FILE* grib_yyin; @@ -30,6 +31,7 @@ static pthread_once_t once = PTHREAD_ONCE_INIT; static pthread_mutex_t mutex_file = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t mutex_rules = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t mutex_concept = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t mutex_hash_array = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t mutex_stream = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t mutex_parse = PTHREAD_MUTEX_INITIALIZER; @@ -41,6 +43,7 @@ static void init() pthread_mutex_init(&mutex_file,&attr); pthread_mutex_init(&mutex_rules,&attr); pthread_mutex_init(&mutex_concept,&attr); + pthread_mutex_init(&mutex_hash_array,&attr); pthread_mutex_init(&mutex_stream,&attr); pthread_mutex_init(&mutex_parse,&attr); pthread_mutexattr_destroy(&attr); @@ -157,7 +160,7 @@ int grib_recompose_print(grib_handle* h, grib_accessor *observer, const char* un char double_format[]="%g"; /* default format for printing double keys */ char long_format[]="%ld"; /* default format for printing integer keys */ char buff[10]={0,}; - char sbuf[200]={0,}; + char sbuf[1024]={0,}; char buff1[1024]={0,}; char* format=NULL; int type=-1; @@ -217,7 +220,7 @@ int grib_recompose_print(grib_handle* h, grib_accessor *observer, const char* un if (type==-1) type=grib_accessor_get_native_type(a); switch (type) { case GRIB_TYPE_STRING: - replen=200; + replen=sizeof(sbuf)/sizeof(*sbuf);; ret = grib_get_string_internal(a->parent->h,a->name,sbuf,&replen); fprintf(out,"%s",sbuf); break; @@ -435,6 +438,7 @@ void grib_parser_include(const char* fname) parse_file = path; } + grib_context_log(grib_parser_context,GRIB_LOG_DEBUG,"parsing include file %s",parse_file); f = fopen(parse_file,"r"); /* for(i = 0; i < top ; i++) printf(" "); */ /* printf("PARSING %s\n",parse_file); */ @@ -545,6 +549,23 @@ grib_concept_value* grib_parse_concept_file( grib_context* gc,const char* filena } } +grib_hash_array_value* grib_parse_hash_array_file( grib_context* gc,const char* filename) +{ + GRIB_PTHREAD_ONCE(&once,&init); + GRIB_MUTEX_LOCK(&mutex_hash_array); + + gc = gc ? gc : grib_context_get_default(); + grib_parser_context = gc; + + if(parse(gc,filename) == 0) { + GRIB_MUTEX_UNLOCK(&mutex_hash_array); + return grib_parser_hash_array; + } else { + GRIB_MUTEX_UNLOCK(&mutex_hash_array); + return NULL; + } +} + grib_rule* grib_parse_rules_file( grib_context* gc,const char* filename) { if (!gc) gc=grib_context_get_default(); diff --git a/src/grib_sarray.c b/src/grib_sarray.c index 88506c79e..002aa81f9 100644 --- a/src/grib_sarray.c +++ b/src/grib_sarray.c @@ -14,7 +14,7 @@ * ***************************************************************************/ -#include "ecCodes_internal.h" +#include "grib_api_internal.h" grib_sarray* grib_sarray_new(grib_context* c,size_t size,size_t incsize) { grib_sarray* v=NULL; diff --git a/src/grib_yacc.c b/src/grib_yacc.c index d520b69a8..e2c190cca 100644 --- a/src/grib_yacc.c +++ b/src/grib_yacc.c @@ -79,11 +79,14 @@ extern int grib_yyerror(const char*); extern grib_action* grib_parser_all_actions; extern grib_concept_value* grib_parser_concept; +extern grib_hash_array_value* grib_parser_hash_array; extern grib_context* grib_parser_context; extern grib_rule* grib_parser_rules; -static grib_concept_value* reverse(grib_concept_value* r); -static grib_concept_value *reverse_concept(grib_concept_value *r,grib_concept_value *s); +static grib_concept_value* reverse_concept(grib_concept_value* r); +static grib_concept_value *_reverse_concept(grib_concept_value *r,grib_concept_value *s); +static grib_hash_array_value* reverse_hash_array(grib_hash_array_value* r); +static grib_hash_array_value *_reverse_hash_array(grib_hash_array_value *r,grib_hash_array_value *s); /* typedef int (*testp_proc)(long,long); */ /* typedef long (*grib_op_proc)(long,long); */ @@ -92,7 +95,7 @@ static grib_concept_value *reverse_concept(grib_concept_value *r,grib_concept_va /* Line 189 of yacc.c */ -#line 96 "y.tab.c" +#line 99 "y.tab.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -124,92 +127,110 @@ static grib_concept_value *reverse_concept(grib_concept_value *r,grib_concept_va IF_TRANSIENT = 260, ELSE = 261, END = 262, - UNSIGNED = 263, - TEMPLATE = 264, - TEMPLATE_NOFAIL = 265, - TRIGGER = 266, - ASCII = 267, - KSEC1EXPVER = 268, - LABEL = 269, - LIST = 270, - WHILE = 271, - IBMFLOAT = 272, - SIGNED = 273, - BYTE = 274, - CODETABLE = 275, - COMPLEX_CODETABLE = 276, - LOOKUP = 277, - ALIAS = 278, - UNALIAS = 279, - META = 280, - POS = 281, - INTCONST = 282, - TRANS = 283, - FLAGBIT = 284, - CONCEPT = 285, - GETENV = 286, - CONCEPT_NOFAIL = 287, - NIL = 288, - DUMMY = 289, - MODIFY = 290, - READ_ONLY = 291, - STRING_TYPE = 292, - LONG_TYPE = 293, - DOUBLE_TYPE = 294, - NO_COPY = 295, - DUMP = 296, - NO_FAIL = 297, - EDITION_SPECIFIC = 298, - OVERRIDE = 299, - HIDDEN = 300, - CAN_BE_MISSING = 301, - MISSING = 302, - CONSTRAINT = 303, - COPY_OK = 304, - WHEN = 305, - SET = 306, - SET_NOFAIL = 307, - WRITE = 308, - APPEND = 309, - PRINT = 310, - EXPORT = 311, - REMOVE = 312, - SKIP = 313, - PAD = 314, - SECTION_PADDING = 315, - MESSAGE = 316, - PADTO = 317, - PADTOEVEN = 318, - PADTOMULTIPLE = 319, - G1_HALF_BYTE = 320, - G1_MESSAGE_LENGTH = 321, - G1_SECTION4_LENGTH = 322, - SECTION_LENGTH = 323, - FLAG = 324, - ITERATOR = 325, - NEAREST = 326, - BOX = 327, - KSEC = 328, - ASSERT = 329, - CASE = 330, - SWITCH = 331, - DEFAULT = 332, - EQ = 333, - NE = 334, - GE = 335, - LE = 336, - LT = 337, - GT = 338, - BIT = 339, - BITOFF = 340, - AND = 341, - OR = 342, - NOT = 343, - IS = 344, - IDENT = 345, - STRING = 346, - INTEGER = 347, - FLOAT = 348 + CLOSE = 263, + UNSIGNED = 264, + TEMPLATE = 265, + TEMPLATE_NOFAIL = 266, + TRIGGER = 267, + ASCII = 268, + GROUP = 269, + NON_ALPHA = 270, + KSEC1EXPVER = 271, + LABEL = 272, + LIST = 273, + IS_IN_LIST = 274, + IS_IN_DICT = 275, + IS_INTEGER = 276, + TO_INTEGER = 277, + TO_STRING = 278, + SEX2DEC = 279, + 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 }; #endif /* Tokens. */ @@ -218,92 +239,110 @@ static grib_concept_value *reverse_concept(grib_concept_value *r,grib_concept_va #define IF_TRANSIENT 260 #define ELSE 261 #define END 262 -#define UNSIGNED 263 -#define TEMPLATE 264 -#define TEMPLATE_NOFAIL 265 -#define TRIGGER 266 -#define ASCII 267 -#define KSEC1EXPVER 268 -#define LABEL 269 -#define LIST 270 -#define WHILE 271 -#define IBMFLOAT 272 -#define SIGNED 273 -#define BYTE 274 -#define CODETABLE 275 -#define COMPLEX_CODETABLE 276 -#define LOOKUP 277 -#define ALIAS 278 -#define UNALIAS 279 -#define META 280 -#define POS 281 -#define INTCONST 282 -#define TRANS 283 -#define FLAGBIT 284 -#define CONCEPT 285 -#define GETENV 286 -#define CONCEPT_NOFAIL 287 -#define NIL 288 -#define DUMMY 289 -#define MODIFY 290 -#define READ_ONLY 291 -#define STRING_TYPE 292 -#define LONG_TYPE 293 -#define DOUBLE_TYPE 294 -#define NO_COPY 295 -#define DUMP 296 -#define NO_FAIL 297 -#define EDITION_SPECIFIC 298 -#define OVERRIDE 299 -#define HIDDEN 300 -#define CAN_BE_MISSING 301 -#define MISSING 302 -#define CONSTRAINT 303 -#define COPY_OK 304 -#define WHEN 305 -#define SET 306 -#define SET_NOFAIL 307 -#define WRITE 308 -#define APPEND 309 -#define PRINT 310 -#define EXPORT 311 -#define REMOVE 312 -#define SKIP 313 -#define PAD 314 -#define SECTION_PADDING 315 -#define MESSAGE 316 -#define PADTO 317 -#define PADTOEVEN 318 -#define PADTOMULTIPLE 319 -#define G1_HALF_BYTE 320 -#define G1_MESSAGE_LENGTH 321 -#define G1_SECTION4_LENGTH 322 -#define SECTION_LENGTH 323 -#define FLAG 324 -#define ITERATOR 325 -#define NEAREST 326 -#define BOX 327 -#define KSEC 328 -#define ASSERT 329 -#define CASE 330 -#define SWITCH 331 -#define DEFAULT 332 -#define EQ 333 -#define NE 334 -#define GE 335 -#define LE 336 -#define LT 337 -#define GT 338 -#define BIT 339 -#define BITOFF 340 -#define AND 341 -#define OR 342 -#define NOT 343 -#define IS 344 -#define IDENT 345 -#define STRING 346 -#define INTEGER 347 -#define FLOAT 348 +#define CLOSE 263 +#define UNSIGNED 264 +#define TEMPLATE 265 +#define TEMPLATE_NOFAIL 266 +#define TRIGGER 267 +#define ASCII 268 +#define GROUP 269 +#define NON_ALPHA 270 +#define KSEC1EXPVER 271 +#define LABEL 272 +#define LIST 273 +#define IS_IN_LIST 274 +#define IS_IN_DICT 275 +#define IS_INTEGER 276 +#define TO_INTEGER 277 +#define TO_STRING 278 +#define SEX2DEC 279 +#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 @@ -313,7 +352,7 @@ typedef union YYSTYPE { /* Line 214 of yacc.c */ -#line 34 "griby.y" +#line 37 "griby.y" char *str; long lval; @@ -325,6 +364,7 @@ typedef union YYSTYPE grib_expression *exp; grib_concept_condition *concept_condition; grib_concept_value *concept_value; + grib_hash_array_value *hash_array_value; grib_case *case_value; grib_rule *rules; grib_rule_entry *rule_entry; @@ -332,7 +372,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 336 "y.tab.c" +#line 376 "y.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define grib_yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -344,7 +384,7 @@ typedef union YYSTYPE /* Line 264 of yacc.c */ -#line 348 "y.tab.c" +#line 388 "y.tab.c" #ifdef short # undef short @@ -557,22 +597,22 @@ union grib_yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 162 +#define YYFINAL 184 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1307 +#define YYLAST 1562 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 111 +#define YYNTOKENS 129 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 45 +#define YYNNTS 49 /* YYNRULES -- Number of rules. */ -#define YYNRULES 217 +#define YYNRULES 248 /* YYNRULES -- Number of states. */ -#define YYNSTATES 689 +#define YYNSTATES 820 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 348 +#define YYMAXUTOK 366 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? grib_yytranslate[YYX] : YYUNDEFTOK) @@ -583,16 +623,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, 109, 2, 2, - 98, 99, 107, 110, 94, 105, 101, 108, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 104, 95, - 2, 100, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 96, 2, 97, 106, 2, 2, 2, 2, 2, + 2, 114, 2, 115, 124, 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, 102, 2, 103, 2, 2, 2, 2, + 2, 2, 2, 120, 2, 121, 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, @@ -614,7 +654,9 @@ static const grib_yytype_uint8 grib_yytranslate[] = 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93 + 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 }; #if YYDEBUG @@ -622,174 +664,198 @@ static const grib_yytype_uint8 grib_yytranslate[] = YYRHS. */ static const grib_yytype_uint16 grib_yyprhs[] = { - 0, 0, 3, 5, 7, 9, 11, 13, 14, 16, - 20, 22, 26, 28, 31, 35, 38, 41, 43, 45, - 47, 49, 51, 53, 55, 57, 60, 62, 64, 66, - 70, 72, 80, 91, 99, 110, 118, 126, 134, 145, - 153, 161, 172, 180, 191, 200, 213, 224, 233, 242, - 253, 262, 272, 280, 283, 286, 291, 298, 306, 309, - 315, 321, 326, 333, 341, 344, 350, 359, 368, 372, - 378, 384, 390, 396, 403, 407, 411, 415, 421, 424, - 432, 437, 446, 457, 463, 469, 475, 481, 484, 489, - 493, 498, 503, 510, 515, 518, 520, 526, 531, 534, - 536, 542, 547, 550, 556, 558, 566, 578, 586, 598, - 605, 613, 625, 630, 635, 638, 642, 644, 647, 649, - 652, 654, 658, 660, 662, 664, 666, 668, 670, 672, - 674, 676, 678, 680, 682, 684, 686, 688, 697, 705, - 713, 720, 730, 743, 758, 769, 784, 797, 806, 818, - 825, 835, 848, 859, 874, 887, 896, 908, 910, 913, - 915, 918, 923, 934, 944, 952, 958, 964, 970, 976, - 978, 981, 986, 988, 990, 992, 994, 996, 998, 1000, - 1004, 1007, 1011, 1016, 1020, 1022, 1026, 1030, 1034, 1038, - 1042, 1044, 1048, 1052, 1054, 1058, 1062, 1066, 1070, 1074, - 1078, 1082, 1085, 1087, 1091, 1093, 1097, 1099, 1101, 1103, - 1105, 1110, 1113, 1115, 1118, 1120, 1128, 1130 + 0, 0, 3, 5, 7, 9, 11, 13, 15, 16, + 18, 22, 24, 28, 30, 34, 36, 39, 43, 46, + 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, + 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, + 643, 651, 663, 671, 683, 690, 698, 710, 715, 720, + 723, 727, 729, 732, 734, 737, 739, 743, 745, 747, + 749, 751, 753, 755, 757, 759, 761, 763, 765, 767, + 769, 771, 773, 775, 777, 786, 794, 802, 809, 819, + 832, 847, 858, 873, 886, 895, 907, 914, 924, 937, + 948, 963, 976, 985, 997, 999, 1002, 1004, 1007, 1014, + 1027, 1029, 1032, 1037, 1048, 1058, 1066, 1072, 1078, 1084, + 1090, 1092, 1095, 1100, 1106, 1112, 1121, 1123, 1132, 1134, + 1136, 1138, 1140, 1142, 1144, 1148, 1151, 1155, 1160, 1164, + 1166, 1170, 1174, 1178, 1182, 1186, 1188, 1193, 1200, 1207, + 1214, 1223, 1228, 1232, 1236, 1238, 1242, 1246, 1250, 1254, + 1258, 1262, 1266, 1269, 1271, 1275, 1277, 1281, 1283, 1285, + 1287, 1289, 1294, 1297, 1299, 1302, 1304, 1312, 1314 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const grib_yytype_int16 grib_yyrhs[] = { - 112, 0, -1, 113, -1, 134, -1, 115, -1, 155, - -1, 1, -1, -1, 93, -1, 114, 94, 93, -1, - 92, -1, 114, 94, 92, -1, 116, -1, 116, 115, - -1, 116, 95, 115, -1, 116, 95, -1, 121, 95, - -1, 122, -1, 130, -1, 131, -1, 132, -1, 133, - -1, 123, -1, 137, -1, 95, -1, 117, 95, -1, - 113, -1, 119, -1, 120, -1, 120, 94, 119, -1, - 149, -1, 8, 96, 92, 97, 90, 126, 127, -1, - 8, 96, 92, 97, 90, 96, 118, 97, 126, 127, - -1, 8, 98, 92, 99, 90, 126, 127, -1, 8, - 98, 92, 99, 90, 96, 118, 97, 126, 127, -1, - 12, 96, 92, 97, 90, 126, 127, -1, 12, 96, - 92, 97, 91, 126, 127, -1, 19, 96, 92, 97, - 90, 126, 127, -1, 19, 96, 92, 97, 90, 96, - 118, 97, 126, 127, -1, 13, 96, 92, 97, 90, - 126, 127, -1, 18, 96, 92, 97, 90, 126, 127, - -1, 18, 96, 92, 97, 90, 96, 118, 97, 126, - 127, -1, 18, 98, 92, 99, 90, 126, 127, -1, - 18, 98, 92, 99, 90, 96, 118, 97, 126, 127, - -1, 20, 96, 92, 97, 90, 120, 126, 127, -1, - 20, 96, 92, 97, 90, 120, 126, 51, 98, 90, - 99, 127, -1, 20, 96, 92, 97, 90, 98, 118, - 99, 126, 127, -1, 90, 100, 31, 98, 118, 99, - 126, 127, -1, 21, 96, 92, 97, 90, 120, 126, - 127, -1, 21, 96, 92, 97, 90, 98, 118, 99, - 126, 127, -1, 69, 96, 92, 97, 90, 120, 126, - 127, -1, 22, 96, 92, 97, 90, 98, 118, 99, - 127, -1, 29, 90, 98, 118, 99, 126, 127, -1, - 14, 90, -1, 14, 91, -1, 17, 90, 126, 127, - -1, 17, 90, 101, 90, 126, 127, -1, 17, 90, - 96, 120, 97, 126, 127, -1, 26, 90, -1, 27, - 90, 100, 120, 127, -1, 28, 90, 100, 120, 127, - -1, 93, 90, 126, 127, -1, 93, 90, 101, 90, - 126, 127, -1, 93, 90, 96, 120, 97, 126, 127, - -1, 65, 90, -1, 68, 96, 92, 97, 90, -1, - 66, 96, 92, 97, 90, 98, 118, 99, -1, 67, - 96, 92, 97, 90, 98, 118, 99, -1, 73, 90, - 120, -1, 59, 90, 98, 118, 99, -1, 62, 90, - 98, 118, 99, -1, 63, 90, 98, 118, 99, -1, - 64, 90, 98, 118, 99, -1, 61, 96, 92, 97, - 90, 127, -1, 60, 90, 127, -1, 9, 90, 91, - -1, 10, 90, 91, -1, 23, 90, 100, 90, 127, - -1, 24, 90, -1, 23, 90, 101, 90, 100, 90, - 127, -1, 24, 90, 101, 90, -1, 25, 90, 90, - 98, 118, 99, 126, 127, -1, 25, 90, 101, 90, - 90, 98, 118, 99, 126, 127, -1, 70, 90, 98, - 118, 99, -1, 71, 90, 98, 118, 99, -1, 72, - 90, 98, 118, 99, -1, 56, 90, 98, 118, 99, - -1, 57, 118, -1, 74, 98, 149, 99, -1, 35, - 90, 127, -1, 51, 90, 100, 47, -1, 51, 90, - 100, 149, -1, 51, 90, 100, 102, 114, 103, -1, - 52, 90, 100, 149, -1, 53, 91, -1, 53, -1, - 53, 98, 92, 99, 91, -1, 53, 98, 92, 99, - -1, 54, 91, -1, 54, -1, 54, 98, 92, 99, - 91, -1, 54, 98, 92, 99, -1, 55, 91, -1, - 55, 98, 91, 99, 91, -1, 55, -1, 4, 98, - 149, 99, 102, 115, 103, -1, 4, 98, 149, 99, - 102, 115, 103, 6, 102, 115, 103, -1, 5, 98, - 149, 99, 102, 115, 103, -1, 5, 98, 149, 99, - 102, 115, 103, 6, 102, 115, 103, -1, 50, 98, - 149, 99, 124, 117, -1, 50, 98, 149, 99, 102, - 125, 103, -1, 50, 98, 149, 99, 102, 125, 103, - 6, 102, 125, 103, -1, 51, 90, 100, 149, -1, - 52, 90, 100, 149, -1, 124, 117, -1, 125, 124, - 117, -1, 113, -1, 100, 118, -1, 113, -1, 104, - 128, -1, 129, -1, 128, 94, 129, -1, 36, -1, - 3, -1, 41, -1, 40, -1, 42, -1, 45, -1, - 43, -1, 46, -1, 48, -1, 44, -1, 49, -1, - 28, -1, 37, -1, 38, -1, 39, -1, 90, 15, - 98, 149, 99, 102, 115, 103, -1, 16, 98, 149, - 99, 102, 115, 103, -1, 11, 98, 118, 99, 102, - 115, 103, -1, 30, 90, 102, 134, 103, 127, -1, - 30, 90, 98, 90, 99, 102, 134, 103, 127, -1, - 30, 90, 98, 90, 94, 91, 94, 90, 94, 90, - 99, 127, -1, 30, 90, 98, 90, 94, 91, 94, - 90, 94, 90, 94, 90, 99, 127, -1, 30, 90, - 98, 90, 94, 91, 94, 90, 99, 127, -1, 30, - 90, 101, 90, 98, 90, 94, 91, 94, 90, 94, - 90, 99, 127, -1, 30, 90, 101, 90, 98, 90, - 94, 91, 94, 90, 99, 127, -1, 30, 90, 101, - 90, 102, 134, 103, 127, -1, 30, 90, 101, 90, - 98, 90, 99, 102, 134, 103, 127, -1, 32, 90, - 102, 134, 103, 127, -1, 32, 90, 98, 90, 99, - 102, 134, 103, 127, -1, 32, 90, 98, 90, 94, - 91, 94, 90, 94, 90, 99, 127, -1, 32, 90, - 98, 90, 94, 91, 94, 90, 99, 127, -1, 32, - 90, 101, 90, 98, 90, 94, 91, 94, 90, 94, - 90, 99, 127, -1, 32, 90, 101, 90, 98, 90, - 94, 91, 94, 90, 99, 127, -1, 32, 90, 101, - 90, 102, 134, 103, 127, -1, 32, 90, 101, 90, - 98, 90, 99, 102, 134, 103, 127, -1, 138, -1, - 134, 138, -1, 136, -1, 135, 136, -1, 75, 119, - 104, 115, -1, 76, 98, 118, 99, 102, 135, 77, - 104, 115, 103, -1, 76, 98, 118, 99, 102, 135, - 77, 104, 103, -1, 76, 98, 118, 99, 102, 135, - 103, -1, 91, 100, 102, 139, 103, -1, 90, 100, - 102, 139, 103, -1, 92, 100, 102, 139, 103, -1, - 93, 100, 102, 139, 103, -1, 140, -1, 140, 139, - -1, 90, 100, 149, 95, -1, 90, -1, 91, -1, - 141, -1, 92, -1, 93, -1, 33, -1, 34, -1, - 98, 149, 99, -1, 105, 142, -1, 90, 98, 99, - -1, 90, 98, 118, 99, -1, 142, 106, 143, -1, - 142, -1, 144, 107, 143, -1, 144, 108, 143, -1, - 144, 109, 143, -1, 144, 84, 143, -1, 144, 85, - 143, -1, 143, -1, 145, 110, 144, -1, 145, 105, - 144, -1, 144, -1, 146, 83, 145, -1, 146, 78, - 145, -1, 146, 82, 145, -1, 146, 80, 145, -1, - 146, 81, 145, -1, 146, 79, 145, -1, 141, 89, - 141, -1, 88, 146, -1, 145, -1, 147, 86, 146, - -1, 146, -1, 148, 87, 147, -1, 147, -1, 148, - -1, 153, -1, 154, -1, 90, 100, 149, 95, -1, - 58, 95, -1, 151, -1, 151, 152, -1, 151, -1, - 4, 98, 149, 99, 102, 152, 103, -1, 150, -1, - 150, 155, -1 + 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, 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 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const grib_yytype_uint16 grib_yyrline[] = { - 0, 210, 210, 211, 212, 213, 215, 218, 221, 222, - 223, 224, 226, 227, 228, 229, 232, 233, 234, 235, - 236, 237, 238, 239, 243, 244, 247, 248, 251, 252, - 255, 259, 262, 265, 268, 271, 275, 278, 281, 284, - 287, 290, 293, 296, 299, 302, 306, 309, 312, 315, - 318, 321, 324, 327, 330, 333, 336, 339, 342, 345, - 348, 351, 354, 357, 360, 363, 366, 369, 372, 375, - 378, 381, 384, 387, 390, 392, 394, 397, 400, 403, - 407, 411, 414, 417, 429, 441, 453, 456, 459, 462, - 465, 466, 467, 469, 472, 473, 474, 475, 476, 477, - 478, 479, 481, 482, 483, 487, 488, 489, 490, 494, - 495, 496, 499, 500, 503, 504, 508, 509, 512, 513, - 516, 517, 520, 521, 522, 523, 524, 525, 526, 527, - 528, 529, 530, 531, 532, 533, 534, 537, 540, 543, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 566, 567, 570, - 571, 574, 578, 579, 580, 583, 585, 587, 589, 593, - 594, 597, 600, 601, 604, 605, 606, 608, 609, 610, - 611, 612, 613, 617, 618, 621, 622, 623, 624, 625, - 626, 629, 630, 631, 634, 636, 637, 638, 639, 640, - 641, 646, 647, 650, 651, 654, 655, 658, 664, 665, - 668, 669, 672, 673, 676, 680, 683, 684 + 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, + 553, 554, 555, 556, 560, 561, 562, 565, 566, 569, + 570, 574, 575, 578, 579, 582, 583, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 602, 605, 608, 611, 614, 615, 616, + 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, + 627, 628, 629, 630, 634, 635, 638, 639, 642, 643, + 646, 647, 650, 654, 655, 656, 659, 661, 663, 665, + 669, 670, 673, 677, 679, 683, 684, 685, 686, 689, + 690, 691, 693, 694, 695, 696, 697, 698, 702, 703, + 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, + 716, 717, 720, 721, 722, 725, 727, 728, 729, 730, + 731, 732, 737, 738, 741, 742, 745, 746, 749, 755, + 756, 759, 760, 763, 764, 767, 771, 774, 775 }; #endif @@ -799,30 +865,35 @@ static const grib_yytype_uint16 grib_yyrline[] = static const char *const grib_yytname[] = { "$end", "error", "$undefined", "LOWERCASE", "IF", "IF_TRANSIENT", - "ELSE", "END", "UNSIGNED", "TEMPLATE", "TEMPLATE_NOFAIL", "TRIGGER", - "ASCII", "KSEC1EXPVER", "LABEL", "LIST", "WHILE", "IBMFLOAT", "SIGNED", - "BYTE", "CODETABLE", "COMPLEX_CODETABLE", "LOOKUP", "ALIAS", "UNALIAS", - "META", "POS", "INTCONST", "TRANS", "FLAGBIT", "CONCEPT", "GETENV", - "CONCEPT_NOFAIL", "NIL", "DUMMY", "MODIFY", "READ_ONLY", "STRING_TYPE", - "LONG_TYPE", "DOUBLE_TYPE", "NO_COPY", "DUMP", "NO_FAIL", - "EDITION_SPECIFIC", "OVERRIDE", "HIDDEN", "CAN_BE_MISSING", "MISSING", - "CONSTRAINT", "COPY_OK", "WHEN", "SET", "SET_NOFAIL", "WRITE", "APPEND", - "PRINT", "EXPORT", "REMOVE", "SKIP", "PAD", "SECTION_PADDING", "MESSAGE", + "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", "FLAG", - "ITERATOR", "NEAREST", "BOX", "KSEC", "ASSERT", "CASE", "SWITCH", - "DEFAULT", "EQ", "NE", "GE", "LE", "LT", "GT", "BIT", "BITOFF", "AND", - "OR", "NOT", "IS", "IDENT", "STRING", "INTEGER", "FLOAT", "','", "';'", - "'['", "']'", "'('", "')'", "'='", "'.'", "'{'", "'}'", "':'", "'-'", - "'^'", "'*'", "'/'", "'%'", "'+'", "$accept", "all", "empty", "dvalues", - "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", "case_list", + "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", "string_or_ident", "atom", "power", "factor", - "term", "condition", "conjonction", "disjonction", "expression", "rule", - "rule_entry", "rule_entries", "fact", "conditional_rule", "rules", 0 + "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 @@ -840,64 +911,71 @@ static const grib_yytype_uint16 grib_yytoknum[] = 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 44, 59, 91, 93, 40, 41, - 61, 46, 123, 125, 58, 45, 94, 42, 47, 37, - 43 + 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 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const grib_yytype_uint8 grib_yyr1[] = { - 0, 111, 112, 112, 112, 112, 112, 113, 114, 114, - 114, 114, 115, 115, 115, 115, 116, 116, 116, 116, - 116, 116, 116, 116, 117, 117, 118, 118, 119, 119, - 120, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 122, 122, 122, 122, 123, - 123, 123, 124, 124, 125, 125, 126, 126, 127, 127, - 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 130, 131, 132, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 134, 134, 135, - 135, 136, 137, 137, 137, 138, 138, 138, 138, 139, - 139, 140, 141, 141, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 143, 143, 144, 144, 144, 144, 144, - 144, 145, 145, 145, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 147, 147, 148, 148, 149, 150, 150, - 151, 151, 152, 152, 153, 154, 155, 155 + 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, + 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 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const grib_yytype_uint8 grib_yyr2[] = { - 0, 2, 1, 1, 1, 1, 1, 0, 1, 3, - 1, 3, 1, 2, 3, 2, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, - 1, 7, 10, 7, 10, 7, 7, 7, 10, 7, - 7, 10, 7, 10, 8, 12, 10, 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, 5, 2, 7, - 4, 8, 10, 5, 5, 5, 5, 2, 4, 3, - 4, 4, 6, 4, 2, 1, 5, 4, 2, 1, - 5, 4, 2, 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, 8, 7, 7, - 6, 9, 12, 14, 10, 14, 12, 8, 11, 6, - 9, 12, 10, 14, 12, 8, 11, 1, 2, 1, - 2, 4, 10, 9, 7, 5, 5, 5, 5, 1, - 2, 4, 1, 1, 1, 1, 1, 1, 1, 3, - 2, 3, 4, 3, 1, 3, 3, 3, 3, 3, - 1, 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 + 0, 2, 1, 1, 1, 1, 1, 1, 0, 1, + 3, 1, 3, 1, 3, 1, 2, 3, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 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, 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, 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 @@ -905,446 +983,524 @@ static const grib_yytype_uint8 grib_yyr2[] = means the default is an error. */ static const grib_yytype_uint8 grib_yydefact[] = { - 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 95, 99, 104, 0, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 109, 113, 119, 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, 0, 0, 0, 2, - 4, 12, 0, 17, 22, 18, 19, 20, 21, 3, - 23, 157, 216, 214, 208, 209, 5, 0, 0, 0, - 0, 0, 0, 7, 0, 0, 53, 54, 0, 7, - 0, 0, 0, 0, 0, 0, 0, 78, 0, 58, - 0, 0, 0, 0, 0, 7, 0, 0, 0, 94, - 0, 98, 0, 102, 0, 0, 177, 178, 0, 172, - 173, 175, 176, 0, 0, 26, 87, 27, 28, 174, - 184, 190, 193, 202, 204, 206, 207, 30, 211, 0, - 7, 0, 0, 0, 0, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, - 7, 0, 1, 0, 0, 0, 15, 13, 16, 0, - 0, 158, 0, 0, 217, 0, 0, 0, 0, 75, - 76, 0, 0, 0, 0, 0, 7, 0, 116, 7, + 0, 0, 0, 0, 0, 0, 2, 5, 15, 0, + 20, 26, 21, 22, 23, 24, 3, 4, 25, 27, + 174, 176, 247, 245, 239, 240, 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, 202, 203, 0, 0, 0, 196, + 198, 200, 201, 0, 0, 30, 100, 31, 32, 199, + 209, 215, 224, 233, 235, 237, 238, 34, 0, 242, + 0, 8, 0, 8, 0, 0, 0, 76, 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, 175, 0, 0, 177, 0, 0, + 248, 0, 0, 0, 0, 0, 88, 89, 0, 0, + 8, 8, 131, 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, 133, 103, 0, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 232, 0, + 0, 199, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, - 0, 118, 89, 0, 0, 0, 0, 0, 0, 7, - 201, 0, 0, 174, 180, 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, 7, 74, 0, 7, 7, 7, 0, - 0, 0, 0, 7, 7, 7, 68, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 117, 7, 55, 0, 0, 0, - 0, 0, 0, 7, 0, 80, 7, 0, 7, 7, - 0, 0, 0, 0, 0, 0, 0, 123, 133, 122, - 134, 135, 136, 125, 124, 126, 128, 131, 127, 129, - 130, 132, 119, 120, 0, 90, 0, 91, 93, 97, - 101, 0, 0, 181, 0, 179, 29, 172, 200, 183, - 188, 189, 185, 186, 187, 192, 191, 195, 199, 197, - 198, 196, 194, 203, 205, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, - 7, 0, 0, 169, 210, 0, 0, 0, 7, 61, - 0, 0, 0, 0, 0, 7, 7, 0, 7, 7, - 7, 0, 7, 7, 7, 7, 7, 0, 0, 0, - 77, 0, 0, 0, 59, 60, 7, 0, 0, 0, - 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 10, 8, 0, 96, 100, 103, 86, 182, - 69, 7, 70, 71, 72, 0, 0, 65, 0, 83, - 84, 85, 0, 0, 0, 0, 166, 170, 165, 167, - 7, 7, 168, 0, 0, 0, 0, 212, 0, 0, - 7, 7, 7, 7, 0, 7, 7, 7, 0, 7, - 56, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, - 140, 0, 0, 0, 0, 149, 121, 0, 0, 0, - 0, 24, 109, 0, 92, 73, 7, 7, 7, 0, - 0, 159, 0, 7, 0, 7, 62, 0, 0, 0, - 105, 213, 215, 107, 0, 31, 0, 33, 139, 35, - 36, 39, 138, 57, 0, 40, 0, 42, 0, 37, - 0, 30, 7, 0, 7, 0, 79, 7, 0, 52, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, - 0, 0, 114, 110, 0, 25, 11, 9, 0, 0, - 7, 0, 0, 164, 160, 0, 7, 171, 63, 0, - 0, 7, 7, 7, 7, 7, 7, 0, 44, 7, - 48, 7, 81, 7, 0, 7, 0, 0, 147, 0, - 7, 0, 0, 155, 112, 113, 0, 115, 66, 67, - 50, 0, 0, 137, 47, 0, 0, 7, 7, 7, - 7, 7, 7, 0, 7, 51, 7, 0, 7, 141, - 0, 0, 0, 7, 150, 0, 0, 0, 161, 163, - 0, 0, 0, 32, 34, 41, 43, 38, 46, 0, - 49, 82, 0, 144, 0, 7, 0, 152, 0, 7, - 0, 162, 106, 108, 7, 0, 7, 0, 7, 148, - 7, 0, 7, 156, 111, 45, 0, 142, 0, 146, - 151, 0, 154, 7, 7, 7, 143, 145, 153 + 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, + 0, 0, 132, 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, 138, 150, 137, 151, 152, 153, 142, + 139, 140, 141, 143, 145, 148, 144, 146, 147, 149, + 134, 135, 0, 104, 0, 105, 107, 111, 115, 0, + 0, 0, 0, 0, 0, 0, 0, 206, 0, 204, + 33, 196, 231, 208, 213, 214, 210, 211, 212, 223, + 222, 226, 230, 228, 229, 227, 225, 234, 236, 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, 190, 241, 0, 0, 0, 0, + 8, 73, 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, 118, 99, 0, 0, 0, 221, 216, + 0, 0, 207, 0, 81, 8, 82, 83, 84, 0, + 0, 77, 0, 96, 97, 98, 0, 0, 0, 0, + 0, 0, 0, 0, 194, 0, 187, 191, 193, 186, + 188, 8, 8, 189, 0, 0, 0, 0, 243, 0, + 0, 8, 8, 8, 8, 0, 8, 8, 8, 8, + 0, 8, 68, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, + 0, 0, 0, 157, 0, 178, 0, 0, 0, 0, + 166, 136, 0, 0, 0, 0, 28, 124, 0, 106, + 0, 0, 0, 0, 0, 101, 85, 8, 8, 8, + 0, 0, 180, 0, 8, 8, 8, 8, 8, 14, + 0, 8, 74, 0, 0, 0, 120, 244, 246, 122, + 0, 35, 0, 37, 156, 39, 46, 41, 49, 155, + 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, 129, 125, 0, 29, 12, 10, 217, 218, 0, + 219, 0, 0, 0, 0, 8, 0, 0, 185, 181, + 0, 42, 44, 43, 8, 8, 192, 75, 0, 0, + 8, 8, 8, 8, 8, 8, 0, 54, 8, 60, + 8, 94, 8, 0, 8, 0, 0, 164, 0, 0, + 8, 0, 0, 172, 127, 128, 0, 130, 0, 0, + 0, 78, 79, 62, 0, 0, 154, 58, 59, 0, + 0, 8, 8, 8, 8, 8, 8, 0, 8, 63, + 8, 0, 8, 158, 0, 0, 0, 0, 8, 167, + 0, 0, 0, 220, 195, 197, 182, 184, 0, 0, + 0, 36, 38, 51, 53, 48, 56, 0, 61, 95, + 0, 161, 0, 8, 0, 0, 169, 0, 8, 0, + 183, 121, 123, 8, 0, 8, 0, 8, 165, 8, + 8, 0, 8, 173, 126, 55, 0, 159, 0, 163, + 179, 168, 0, 171, 8, 8, 8, 160, 162, 170 }; /* YYDEFGOTO[NTERM-NUM]. */ static const grib_yytype_int16 grib_yydefgoto[] = { - -1, 58, 211, 424, 456, 61, 502, 126, 127, 128, - 62, 63, 64, 499, 500, 189, 212, 322, 323, 65, - 66, 67, 68, 69, 510, 511, 70, 71, 372, 373, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 72, - 457, 458, 74, 75, 76 + -1, 65, 244, 500, 441, 547, 68, 597, 146, 147, + 148, 69, 70, 71, 594, 595, 213, 245, 380, 381, + 72, 73, 74, 75, 76, 77, 78, 611, 612, 79, + 80, 443, 444, 81, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 82, 548, 549, 84, 85, 86 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -489 +#define YYPACT_NINF -581 static const grib_yytype_int16 grib_yypact[] = { - 945, -489, -33, -31, -50, -52, 5, -14, 9, 28, - -8, 4, 61, -41, 58, 73, 100, 109, 71, 99, - 125, 137, 140, 155, 168, 176, 193, 195, 189, 214, - 215, -47, -23, -21, 222, 179, 219, 223, 225, 221, - 229, 230, 231, 232, 235, 237, 242, 255, 234, 249, - 262, 263, 269, 270, -7, 227, 261, -57, 369, -489, - -489, 1035, 277, -489, -489, -489, -489, -489, -489, 206, - -489, -489, 1, -489, -489, -489, -489, 179, 179, 281, - 282, 284, 287, 179, 289, 290, -489, -489, 179, 19, - 291, 294, 297, 302, 306, 308, 121, 278, -64, -489, - 307, 309, 310, 105, 139, 311, 179, 316, 317, -489, - 319, -489, 327, -489, 330, 324, -489, -489, 179, 331, - -489, -489, -489, 179, 183, -489, -489, -489, 342, 358, - 343, -489, -45, -39, 363, 364, 365, -489, -489, 353, - 311, 366, 357, 361, 370, -489, 371, 372, 384, 385, - 381, 391, 395, 179, 179, 179, 396, 16, 354, 359, - 72, 360, -489, 400, -6, 393, 1214, -489, -489, 399, - 401, -489, 402, 409, -489, 411, 412, 419, 418, -489, - -489, 420, 421, 431, 432, 179, 179, 440, -489, 311, - 435, 447, 437, 452, 453, 454, 462, 463, 464, 458, - 467, 179, 179, 179, 468, 469, 206, 471, 472, 206, - 499, -489, -489, 465, 141, 179, 466, 470, 474, 179, - 363, 65, 475, -489, -489, 179, 145, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 179, 179, 179, -489, 473, 179, 179, 179, 478, - 479, 482, 483, 179, 179, 179, -489, 485, 486, 179, - 484, 476, 491, 476, 476, 179, 477, 311, 476, 179, - 532, -489, 492, 179, 179, 493, 495, 481, 497, 500, - 166, 509, 501, 504, -489, 505, -489, 514, 516, 517, - 518, 519, 520, 311, 513, -489, 179, 524, 311, 311, - 521, -25, -67, 20, -13, -1, 88, -489, -489, -489, - -489, -489, -489, -489, -489, -489, -489, -489, -489, -489, - -489, -489, 487, -489, -22, -489, 172, -489, -489, 526, - 528, 530, 523, -489, 525, -489, -489, -489, -489, -489, - -489, -489, -489, -489, -489, -45, -45, -39, -39, -39, - -39, -39, -39, 363, 364, 527, 533, 536, 538, 539, - 535, 537, 541, 550, 543, 545, 547, -489, 546, 551, - 179, 529, 548, 476, -489, 552, 554, 556, 505, -489, - 558, 555, 560, 1127, 1214, 90, 124, 1214, 505, 505, - 505, 1214, 505, 311, 142, 163, 182, 218, 257, 565, - -489, 575, 568, 570, -489, -489, 505, 579, 569, 582, - 206, 311, 583, 571, 585, 206, 311, 499, 586, 587, - 228, 584, -489, -489, -49, -489, -489, -489, -489, -489, - -489, 311, -489, -489, -489, 580, 588, -489, 179, -489, - -489, -489, 605, 581, 589, 179, -489, -489, -489, -489, - 505, 311, -489, 591, 592, 3, 578, -34, 593, 594, - 179, 311, 179, 311, 595, 311, 311, 311, 596, 311, - -489, 179, 311, 179, 311, 179, 311, 179, 505, 179, - 505, 179, 311, 505, 179, 311, 590, 206, 23, 92, - -489, 601, 206, 49, 108, -489, -489, 600, 602, 584, - -30, -489, 606, 201, -489, -489, 179, 179, 505, 179, - -43, -489, 1214, 505, 608, 311, -489, 1214, -34, 54, - 562, -489, -489, 679, 607, -489, 609, -489, -489, -489, - -489, -489, -489, -489, 610, -489, 611, -489, 613, -489, - 614, 475, -32, 616, 311, 617, -489, 311, 618, -489, - 597, 251, 598, 603, 311, 622, 267, 599, 620, 311, - 179, 179, 606, 712, 584, -489, -489, -489, 621, 624, - 311, 615, 623, -489, -489, 625, 311, -489, -489, 627, - 628, 505, 505, 505, 505, 505, 505, 626, -489, 505, - -489, 311, -489, 505, 66, 311, 631, 206, -489, 77, - 311, 637, 206, -489, -489, -489, 630, 606, -489, -489, - -489, 1214, 849, -489, -489, 1214, 1214, 311, 311, 311, - 311, 311, 311, 643, 311, -489, 311, 644, 311, -489, - 645, 273, 646, 311, -489, 648, 334, 228, -489, -489, - 636, 638, 639, -489, -489, -489, -489, -489, -489, 641, - -489, -489, 93, -489, 103, 311, 647, -489, 120, 311, - -24, -489, -489, -489, 311, 654, 311, 655, 311, -489, - 311, 657, 311, -489, -489, -489, 649, -489, 650, -489, - -489, 651, -489, 311, 311, 311, -489, -489, -489 + 1077, -581, -98, -84, -76, -29, 16, 52, -18, 2, + 98, 112, 114, 62, 129, 125, 177, 137, 197, 170, + 205, 230, 178, 242, 251, 259, 261, 269, 278, 288, + 293, 299, 301, 154, 308, 312, -21, -10, -9, 314, + 498, 307, 317, 323, 324, 311, 325, 334, 340, 341, + 342, 337, 338, 339, 343, 346, 354, 355, 364, 358, + 366, 3, 362, 365, -24, 484, -581, -581, 1165, 372, + -581, -581, -581, -581, -581, -581, 224, 150, -581, -581, + -581, -581, 9, -581, -581, -581, -581, 498, 498, 378, + 379, 380, 382, 383, 498, 384, 73, 375, 385, -581, + -581, 498, 55, 386, 387, 388, 389, 390, 392, 393, + 207, 381, -64, -581, 394, 396, 395, 6, 172, 43, + 398, 498, 397, 403, -581, 412, -581, 413, -581, 400, + 408, 409, 410, 411, -581, -581, 414, 415, 498, 416, + -581, -581, -581, 498, 220, -581, -581, -581, 417, 421, + 418, -581, -65, -5, 217, 401, 428, -581, 426, -581, + 419, 398, 427, 398, 420, 422, 423, -581, 430, 431, + 435, 437, 432, 434, 436, 498, 498, 498, 440, 130, + -11, 433, 64, 438, -581, 444, 10, 443, 1363, -581, + -581, 445, 446, 447, -581, 448, 449, -581, 452, 451, + -581, 453, 455, 459, 464, 471, -581, -581, 472, 476, + 498, 498, -581, 398, 398, 479, 480, 498, 454, 398, + 481, 482, 483, 488, 498, 490, 495, 503, 504, 510, + 506, 511, 498, 498, 498, 512, 516, 224, 519, 150, + 520, 521, 224, 145, -581, -581, 513, 262, 498, 514, + 515, 517, 498, 525, 527, 528, 535, 266, 217, 723, + 529, -581, -581, 498, -50, 220, 220, 220, 220, 220, + 220, 4, 4, 4, 4, 4, 4, 4, 4, 498, + 498, 532, 498, -581, 533, -581, 498, 498, 498, 536, + 537, 538, 539, 498, 498, 498, -581, 530, 540, 498, + 542, 543, 545, 547, 552, 546, 563, 560, 546, 563, + 563, 498, 567, 398, 563, 498, 23, -581, 557, 558, + 541, 566, 498, 498, 561, 564, -581, 577, 579, 569, + 272, 573, -581, -581, -581, 583, 572, 578, 375, -581, + 586, 587, 588, 589, 581, 591, 592, 398, 584, -581, + 498, 593, 398, 398, 590, 69, 204, -38, 594, -45, + 75, 235, -31, -581, -581, -581, -581, -581, -581, -581, + -581, -581, -581, -581, -581, -581, -581, -581, -581, -581, + 602, -581, -39, -581, 273, -581, -581, 596, 606, 609, + 604, 607, 613, 97, 611, 614, 618, -581, 615, -581, + -581, -581, -581, -581, -581, -581, -581, -581, -581, -65, + -65, -5, -5, -5, -5, -5, -5, 217, 401, 623, + 616, 628, 620, 621, 624, 638, 639, 640, 641, 633, + 634, 636, -581, 635, 637, 498, 498, 498, 498, 498, + -581, 164, 643, 644, 563, -581, 264, 645, 646, 647, + 375, -581, 650, 642, 660, 1275, 1363, -62, 191, 1363, + 375, 375, 375, 375, 1363, 375, 398, 239, 247, 248, + 753, 375, 1439, 648, -581, 670, 665, 667, -581, -581, + 375, 649, 664, 677, 224, 398, 680, 398, 681, 671, + 684, 224, 398, 145, 686, 687, 347, 683, -581, -581, + -20, -581, -581, -581, -581, 688, 691, 694, -581, -581, + 695, 696, -581, 690, -581, 398, -581, -581, -581, 685, + 693, -581, 498, -581, -581, -581, 663, 692, 697, 699, + 700, 702, 703, 701, -581, 498, -581, -581, -581, -581, + -581, 375, 398, -581, 704, 705, 11, 689, -51, 706, + 709, 498, 398, 498, 398, 714, 398, 398, 398, 398, + 715, 398, -581, 498, 398, 498, 398, 498, 398, 498, + 375, 398, 498, 375, 498, 398, 375, 498, 398, 711, + 224, 104, 47, -581, 725, -581, 729, 224, 117, 56, + -581, -581, 708, 724, 683, -35, -581, 731, 304, -581, + 730, 738, 118, 736, 745, -581, -581, 498, 498, 375, + 498, -52, -581, 1363, 398, 398, 398, 375, 375, -581, + 752, 398, -581, 1363, -51, 318, 807, -581, -581, 815, + 755, -581, 756, -581, -581, -581, -581, -581, -581, -581, + -581, 757, -581, 758, -581, 759, -581, 750, 529, -48, + -581, 751, 398, 760, -581, 398, 761, -581, 767, 102, + 770, 762, 398, 772, 773, 116, 774, 764, 398, 498, + 498, 731, 879, 683, -581, -581, -581, -581, -581, 776, + -581, 777, 778, 775, 780, 398, 768, 771, -581, -581, + 779, -581, -581, -581, 398, 398, -581, -581, 769, 782, + 375, 375, 375, 375, 375, 375, 783, -581, 375, -581, + 398, -581, 375, 131, 398, 786, 224, -581, 792, 140, + 398, 794, 224, -581, -581, -581, 789, 731, 795, 796, + 797, -581, -581, -581, 1363, 929, -581, -581, -581, 1363, + 1363, 398, 398, 398, 398, 398, 398, 787, 398, -581, + 398, 803, 398, -581, 808, 153, 809, 810, 398, -581, + 811, 189, 347, -581, -581, -581, -581, -581, 799, 800, + 804, -581, -581, -581, -581, -581, -581, 798, -581, -581, + 156, -581, 160, 398, 818, 819, -581, 168, 398, -30, + -581, -581, -581, 398, 839, 398, 840, 398, -581, 398, + 398, 841, 398, -581, -581, -581, 833, -581, 834, -581, + -581, -581, 835, -581, 398, 398, 398, -581, -581, -581 }; /* YYPGOTO[NTERM-NUM]. */ static const grib_yytype_int16 grib_yypgoto[] = { - -489, -489, 7, -489, 0, -489, -488, 185, -223, -149, - -489, -489, -489, -323, 114, -60, 167, -489, 335, -489, - -489, -489, -489, -192, -489, 244, -489, -59, -248, -489, - -99, 629, 243, 68, 268, -115, 515, -489, -65, -489, - 6, 298, -489, -489, 684 + -581, -581, 8, -581, 619, 0, -581, -580, 493, -262, + -166, -581, -581, -581, -378, 132, -63, 108, -581, 460, + -581, -581, -581, -581, -235, 721, -581, -581, 315, -581, + -73, -298, -581, -72, -134, 827, 123, 147, 162, -132, + 698, -581, -68, -581, 15, 429, -581, -581, 892 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -8 +#define YYTABLE_NINF -9 static const grib_yytype_int16 grib_yytable[] = { - 60, 421, 336, 220, 256, 172, 73, 59, 156, 156, - 171, 562, 175, 176, 303, 375, 376, 306, 156, 587, - 380, 418, 419, 184, 36, 223, 199, 418, 419, 418, - 419, 409, 509, 160, 572, 410, 283, 200, 81, 228, - 229, 213, 125, 161, 109, 503, 79, 260, 80, 116, - 117, 110, 298, 299, 504, 90, 173, 91, 222, 36, - 573, 167, 230, 231, 232, 77, 233, 78, 111, 407, - 113, 234, 210, 563, 408, 112, 607, 114, 73, 674, - 420, 412, 86, 87, 83, 260, 413, 116, 117, 257, - 125, 173, 262, 157, 270, 82, 188, 414, 116, 117, - 267, 415, 88, 519, 118, 84, 119, 120, 121, 122, - 169, 55, 56, 170, 123, 185, 377, 552, 261, 186, - 187, 124, 553, 411, 85, 447, 353, 338, 223, 223, - 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 118, 557, 119, 120, 121, 122, 558, 327, - 328, 89, 123, 118, 92, 119, 120, 121, 122, 124, - 627, 96, 125, 123, 333, 628, 271, 188, 265, 93, - 124, 632, 186, 266, 116, 117, 633, 564, 169, 55, - 56, 170, 169, 55, 56, 170, 460, 665, 325, 97, - 186, 416, 666, 125, 369, 554, 94, 667, 169, 55, - 56, 170, 668, 204, 381, 95, 205, 206, 382, 262, - 125, 559, 116, 117, 671, 98, 116, 117, 489, 672, - 462, 196, 197, 494, 186, 393, 125, 99, 125, 118, - 100, 119, 120, 121, 122, 337, 120, 207, 471, 123, - 208, 209, 186, 326, 171, 101, 124, 171, 478, 480, - 125, 116, 117, 125, 125, 125, 388, 389, 102, 473, - 125, 125, 125, 186, 422, 423, 103, 118, 181, 119, - 120, 121, 122, 119, 120, 121, 122, 123, 475, 418, - 419, 123, 186, 104, 124, 105, 571, 106, 124, 508, - 116, 117, 188, 566, 567, 551, 169, 55, 56, 170, - 556, 345, 346, 125, 107, 108, 118, 244, 119, 120, - 121, 122, 115, 139, 138, 140, 477, 141, 451, 142, - 143, 144, 145, 124, 150, 461, 463, 158, 465, 466, - 467, 146, 469, 147, 472, 474, 476, 564, 148, 151, - 258, 169, 55, 56, 170, 118, 485, 119, 120, 121, - 122, 149, 152, 153, 595, 479, 286, 169, 55, 56, - 170, 159, 124, 169, 55, 56, 170, 154, 155, 162, - 600, 284, 168, 177, 178, 179, 655, 125, 180, 198, - 514, 182, 183, 190, 459, 188, 191, 464, 300, 192, - 515, 468, 188, 188, 193, 188, 188, 188, 194, 188, - 195, 188, 188, 188, 332, 631, 334, 201, 203, 202, - 636, 216, 541, 188, 541, 210, 214, 215, 542, 217, - 544, 218, 219, 547, 169, 55, 56, 170, 355, 221, - 171, 357, 358, 359, 379, 171, 225, 659, 364, 365, - 366, 235, 236, 237, 238, 239, 240, 226, 570, 227, - 241, 243, 242, 576, 262, 246, 263, 188, 245, 247, - 400, 264, 268, 249, 250, 404, 405, 125, 248, 125, - 339, 340, 341, 342, 343, 344, 251, 252, 125, 253, - 125, 402, 125, 160, 125, 188, 125, 188, 125, 254, - 188, 125, 171, 255, 259, 604, 605, 171, 269, 272, - 273, 161, 307, 347, 348, 349, 350, 351, 352, 274, - 275, 276, 575, 125, 125, 188, 277, 278, 280, 279, - 188, 617, 618, 619, 620, 621, 622, 308, 281, 624, - 285, 282, 287, 626, 289, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 288, 320, 321, 290, - 291, 292, 293, 294, 295, 444, 296, 297, 301, 302, - 470, 304, 305, 260, 324, 329, 371, 378, 579, 330, - 356, 385, 171, 331, 335, 360, 361, 171, 490, 362, - 363, 417, 370, 495, 367, 368, 374, 386, 188, 188, - 188, 188, 188, 188, 261, 383, 188, 384, 505, 390, - 188, 392, 387, 391, 394, 186, 395, 396, 397, 398, - 399, 638, 640, 401, 403, 641, 642, 425, 516, 426, - 406, 427, 428, 431, 429, 435, 430, 436, 525, 445, - 527, 437, 529, 530, 531, 432, 533, 433, 434, 535, - 438, 537, 439, 539, 440, 524, 441, 526, 442, 546, - 443, 446, 549, 450, 453, 448, 534, 449, 536, 454, - 538, 452, 540, 481, 543, 482, 545, 483, 484, 548, - 486, 487, 488, 492, 491, 493, 497, 498, 506, 501, - 509, 520, 578, 512, 550, 580, 507, 594, 513, 596, - 601, 568, 569, 517, 518, 555, 522, 523, 528, 532, - 560, 565, 561, 577, 581, 597, 582, 583, 584, 588, - 585, 590, 599, 586, 592, 589, 591, 593, 606, 611, - 608, 598, 602, 609, 623, 630, 603, 612, 613, 615, - 616, 635, 637, 649, 652, 654, 656, 610, 658, 661, - 664, 662, 663, 614, 676, 678, 670, 681, 683, 684, - 685, 660, 496, 224, 574, 521, 174, 354, 625, 0, - 0, 0, 629, 0, 0, 0, 0, 634, 0, 0, + 67, 400, 357, 194, 497, 197, 258, 362, 66, 296, + 261, 447, 448, 198, 671, 83, 452, 706, 87, 201, + 202, 178, 42, 131, 132, 133, 494, 495, 178, 178, + 494, 495, 88, 216, 214, 494, 495, 266, 267, 219, + 89, 610, 137, 687, 230, 300, 301, 302, 145, 134, + 135, 337, 551, 246, 303, 231, 211, 199, 401, 140, + 268, 269, 270, 195, 196, 304, 352, 353, 189, 688, + 191, 192, 63, 193, 243, 260, 487, 191, 192, 63, + 193, 496, 42, 485, 182, 90, 672, 91, 124, 136, + 492, 804, 598, 727, 183, 125, 137, 83, 94, 126, + 128, 599, 145, 308, 212, 212, 127, 129, 297, 309, + 212, 307, 139, 140, 141, 142, 95, 199, 271, 313, + 143, 179, 235, 272, 92, 236, 237, 144, 316, 625, + 402, 261, 261, 261, 261, 261, 261, 261, 261, 261, + 261, 261, 261, 261, 261, 449, 537, 417, 363, 131, + 132, 133, 300, 301, 302, 191, 192, 63, 193, 240, + 93, 303, 241, 242, 191, 192, 63, 193, 662, 217, + 99, 100, 304, 211, 218, 134, 135, 668, 311, 385, + 386, 481, 211, 312, 364, 145, 482, 488, 317, 210, + 212, 211, 489, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 96, 378, 379, 507, + 191, 192, 63, 193, 508, 136, 660, 673, 145, 145, + 97, 661, 137, 714, 191, 192, 63, 193, 98, 666, + 679, 434, 145, 102, 667, 680, 138, 720, 139, 140, + 141, 142, 145, 751, 305, 101, 143, 453, 752, 582, + 306, 105, 757, 144, 454, 307, 589, 758, 195, 196, + 145, 191, 192, 63, 193, 134, 135, 145, 794, 283, + 121, 285, 796, 795, 783, 466, 533, 797, 107, 534, + 801, 131, 132, 133, 194, 802, 110, 197, 238, 194, + 145, 103, 239, 104, 145, 145, 145, 191, 192, 63, + 193, 145, 145, 145, 570, 553, 573, 134, 135, 211, + 788, 106, 137, 273, 274, 275, 276, 277, 278, 108, + 483, 333, 334, 383, 484, 227, 228, 339, 139, 140, + 141, 142, 191, 192, 63, 193, 143, 131, 132, 133, + 300, 301, 302, 144, 109, 659, 212, 136, 686, 303, + 111, 490, 665, 563, 137, 491, 609, 211, 145, 112, + 304, 565, 567, 134, 135, 211, 211, 113, 138, 114, + 139, 140, 141, 142, 395, 396, 533, 115, 143, 538, + 460, 461, 384, 498, 499, 144, 116, 542, 403, 404, + 405, 406, 407, 408, 552, 554, 117, 556, 557, 558, + 559, 118, 561, 136, 564, 566, 568, 119, 571, 120, + 137, 673, 494, 495, 675, 676, 122, 578, 409, 410, + 123, 451, 130, 158, 138, 162, 139, 140, 141, 142, + 159, 160, 161, 163, 143, 411, 412, 413, 414, 415, + 416, 144, 164, 145, 145, 145, 145, 145, 165, 166, + 167, 168, 169, 170, 172, 474, 550, 171, 212, 555, + 478, 479, 173, 174, 560, 212, 212, 620, 212, 212, + 212, 212, 175, 212, 176, 212, 212, 212, 621, 212, + 180, 755, 177, 181, 184, 190, 203, 761, 212, 204, + 205, 206, 207, 211, 209, 215, 220, 221, 222, 223, + 229, 648, 225, 226, 648, 279, 224, 649, 251, 194, + 652, 234, 232, 655, 233, 247, 194, 131, 132, 133, + 243, 248, 249, 250, 252, 253, 254, 255, 264, 263, + 256, 257, 259, 280, 281, 282, 286, 284, 287, 288, + 289, 290, 265, 134, 135, 291, 685, 292, 293, 212, + 294, 182, 295, 310, 694, 695, 299, 307, 314, 145, + 315, 145, 338, 318, 319, 183, 320, 321, 322, 323, + 324, 145, 325, 145, 562, 145, 326, 145, 212, 327, + 145, 212, 145, 136, 212, 145, 194, 208, 328, 329, + 137, 330, 194, 583, 335, 585, 340, 336, 342, 341, + 590, 724, 725, 343, 138, 345, 139, 140, 141, 142, + 346, 347, 348, 690, 143, 145, 145, 212, 349, 351, + 355, 144, 350, 606, 356, 212, 212, 358, 360, 361, + 382, 387, 388, 391, 389, 392, 393, 741, 742, 743, + 744, 745, 746, 394, 419, 748, 399, 432, 421, 750, + 622, 425, 426, 427, 428, 305, 440, 433, 435, 436, + 631, 437, 633, 438, 635, 636, 637, 638, 439, 640, + 298, 442, 642, 445, 644, 450, 646, 306, 309, 650, + 308, 455, 194, 654, 456, 457, 657, 458, 194, 459, + 462, 463, 464, 465, 467, 468, 469, 470, 471, 472, + 473, 477, 475, 331, 332, 501, 486, 480, 212, 212, + 212, 212, 212, 212, 493, 502, 212, 344, 503, 505, + 212, 504, 691, 692, 693, 506, 510, 354, 509, 697, + 511, 513, 512, 514, 766, 768, 515, 516, 517, 769, + 770, 518, 131, 132, 133, 390, 519, 520, 521, 522, + 523, 524, 398, 525, 527, 526, 610, 707, 579, 544, + 709, 535, 541, 711, 574, 536, 539, 540, 134, 135, + 717, 543, 131, 132, 133, 420, 723, 545, 575, 422, + 423, 424, 576, 577, 580, 581, 429, 430, 431, 584, + 586, 587, 588, 733, 592, 593, 596, 600, 134, 135, + 601, 607, 737, 738, 602, 603, 604, 605, 136, 608, + 626, 619, 613, 698, 614, 137, 615, 616, 749, 617, + 618, 699, 753, 658, 623, 624, 669, 628, 759, 138, + 629, 139, 140, 141, 142, 634, 639, 663, 136, 143, + 397, 664, 670, 476, 674, 137, 144, 677, 681, 771, + 772, 773, 774, 775, 776, 678, 778, 682, 779, 138, + 781, 139, 140, 141, 142, 696, 786, 705, 708, 569, + 700, 701, 702, 703, 704, 713, 144, 710, 712, 715, + 718, 719, 716, 721, 722, 726, 728, 729, 730, 739, + 734, 798, 731, 735, 789, 777, 803, 732, 754, 747, + 736, 805, 740, 807, 756, 809, 760, 810, 811, 762, + 813, 780, 763, 764, 765, 793, 782, 784, 785, 787, + 790, 791, 817, 818, 819, 792, 689, 446, 528, 529, + 530, 531, 532, 185, 3, 799, 800, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 806, 808, 812, + 814, 815, 816, 591, 14, 15, 16, 17, 18, 19, + 359, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 262, 30, 31, 200, 0, 32, 627, 418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 643, 644, 645, 646, 647, 648, - 0, 650, 0, 651, 0, 653, 0, 0, 0, 0, - 657, 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, 0, 0, 630, 0, 632, 0, 0, 0, + 767, 0, 0, 0, 0, 0, 641, 0, 643, 0, + 645, 0, 647, 0, 0, 651, 0, 653, 0, 0, + 656, 0, 0, 0, 0, 0, 0, -8, 1, 0, + 0, 2, 3, 0, 0, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, + 683, 684, 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, 0, 669, 0, 0, 0, 673, 0, 0, 0, - 0, 675, 0, 677, 0, 679, 0, 680, 0, 682, + 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, 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, - 686, 687, 688, 163, 3, 0, 0, 4, 5, 6, - 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 0, 26, 0, 0, 27, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, - 29, 30, 31, 32, 33, 34, 35, 0, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 0, 53, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, - 0, 0, 165, 0, 0, -7, 1, 0, 0, 2, - 3, 0, 639, 4, 5, 6, 7, 8, 9, 10, - 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 0, 26, 0, 0, - 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 54, 55, 56, 57, 163, + 0, 0, 0, 186, 0, 0, 187, 0, 188, 185, 3, 0, 0, 4, 5, 6, 7, 8, 9, 10, - 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 0, 26, 0, 0, - 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 28, 29, 30, 31, 32, - 33, 34, 35, 0, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 164, 0, 0, 165, 0, - 166, 163, 3, 0, 0, 4, 5, 6, 7, 8, - 9, 10, 0, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 0, 26, - 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 0, 53, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 455, 163, 3, - 165, 0, 4, 5, 6, 7, 8, 9, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 0, 26, 0, 0, 27, + 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, 546, 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, 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, 0, 0, 0, + 0, 186, 0, 0, 187, 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, 28, 29, 30, 31, 32, 33, - 34, 35, 0, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, - 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 164, 0, 0, 165 + 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 138, 0, 139, 140, 141, + 142, 0, 0, 0, 0, 572, 0, 0, 0, 0, + 0, 0, 144 }; static const grib_yytype_int16 grib_yycheck[] = { - 0, 324, 225, 118, 153, 4, 0, 0, 15, 15, - 69, 499, 77, 78, 206, 263, 264, 209, 15, 51, - 268, 51, 52, 88, 58, 124, 90, 51, 52, 51, - 52, 98, 75, 90, 77, 102, 185, 101, 90, 84, - 85, 106, 35, 100, 91, 94, 96, 31, 98, 33, - 34, 98, 201, 202, 103, 96, 90, 98, 123, 58, - 103, 61, 107, 108, 109, 98, 105, 98, 91, 94, - 91, 110, 104, 103, 99, 98, 564, 98, 72, 103, - 102, 94, 90, 91, 98, 31, 99, 33, 34, 154, - 83, 90, 157, 100, 100, 90, 89, 98, 33, 34, - 160, 102, 98, 100, 88, 96, 90, 91, 92, 93, - 90, 91, 92, 93, 98, 96, 265, 94, 102, 100, - 101, 105, 99, 103, 96, 373, 241, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 88, 94, 90, 91, 92, 93, 99, 214, - 215, 90, 98, 88, 96, 90, 91, 92, 93, 105, - 94, 90, 155, 98, 99, 99, 166, 160, 96, 96, - 105, 94, 100, 101, 33, 34, 99, 500, 90, 91, - 92, 93, 90, 91, 92, 93, 96, 94, 47, 90, - 100, 103, 99, 186, 259, 103, 96, 94, 90, 91, - 92, 93, 99, 98, 269, 96, 101, 102, 273, 274, - 203, 103, 33, 34, 94, 90, 33, 34, 410, 99, - 96, 100, 101, 415, 100, 285, 219, 90, 221, 88, - 90, 90, 91, 92, 93, 90, 91, 98, 96, 98, - 101, 102, 100, 102, 303, 90, 105, 306, 397, 398, - 243, 33, 34, 246, 247, 248, 90, 91, 90, 96, - 253, 254, 255, 100, 92, 93, 90, 88, 83, 90, - 91, 92, 93, 90, 91, 92, 93, 98, 96, 51, - 52, 98, 100, 90, 105, 90, 509, 98, 105, 438, - 33, 34, 285, 92, 93, 487, 90, 91, 92, 93, - 492, 233, 234, 296, 90, 90, 88, 140, 90, 91, - 92, 93, 90, 90, 95, 90, 98, 96, 378, 90, - 90, 90, 90, 105, 90, 385, 386, 100, 388, 389, - 390, 96, 392, 96, 394, 395, 396, 660, 96, 90, - 155, 90, 91, 92, 93, 88, 406, 90, 91, 92, - 93, 96, 90, 90, 103, 98, 189, 90, 91, 92, - 93, 100, 105, 90, 91, 92, 93, 98, 98, 0, - 103, 186, 95, 92, 92, 91, 103, 370, 91, 101, - 445, 92, 92, 92, 384, 378, 92, 387, 203, 92, - 450, 391, 385, 386, 92, 388, 389, 390, 92, 392, - 92, 394, 395, 396, 219, 597, 221, 100, 98, 100, - 602, 92, 477, 406, 479, 104, 100, 100, 478, 92, - 480, 91, 98, 483, 90, 91, 92, 93, 243, 98, - 489, 246, 247, 248, 267, 494, 94, 103, 253, 254, - 255, 78, 79, 80, 81, 82, 83, 89, 508, 106, - 86, 98, 87, 513, 519, 98, 102, 450, 92, 98, - 293, 102, 102, 92, 92, 298, 299, 460, 98, 462, - 227, 228, 229, 230, 231, 232, 92, 92, 471, 98, - 473, 296, 475, 90, 477, 478, 479, 480, 481, 98, - 483, 484, 551, 98, 98, 560, 561, 556, 98, 100, - 98, 100, 3, 235, 236, 237, 238, 239, 240, 100, - 99, 99, 512, 506, 507, 508, 97, 99, 97, 99, - 513, 581, 582, 583, 584, 585, 586, 28, 97, 589, - 90, 99, 97, 593, 97, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 99, 48, 49, 97, - 97, 97, 90, 90, 90, 370, 98, 90, 90, 90, - 393, 90, 90, 31, 99, 99, 90, 90, 6, 99, - 97, 90, 631, 99, 99, 97, 97, 636, 411, 97, - 97, 94, 98, 416, 99, 99, 95, 90, 581, 582, - 583, 584, 585, 586, 102, 102, 589, 102, 431, 90, - 593, 97, 102, 102, 90, 100, 90, 90, 90, 90, - 90, 611, 612, 100, 90, 615, 616, 91, 451, 91, - 99, 91, 99, 90, 99, 90, 99, 90, 461, 100, - 463, 90, 465, 466, 467, 99, 469, 99, 99, 472, - 90, 474, 99, 476, 99, 460, 99, 462, 102, 482, - 99, 103, 485, 97, 99, 103, 471, 103, 473, 99, - 475, 103, 477, 98, 479, 90, 481, 99, 98, 484, - 91, 102, 90, 102, 91, 90, 90, 90, 98, 95, - 75, 103, 515, 102, 94, 6, 98, 90, 99, 91, - 91, 506, 507, 102, 102, 94, 103, 103, 103, 103, - 100, 95, 100, 95, 97, 102, 97, 97, 97, 542, - 97, 544, 90, 99, 547, 99, 99, 99, 6, 104, - 99, 554, 102, 99, 98, 94, 559, 104, 103, 102, - 102, 94, 102, 90, 90, 90, 90, 570, 90, 103, - 99, 103, 103, 576, 90, 90, 99, 90, 99, 99, - 99, 637, 417, 124, 510, 457, 72, 242, 591, -1, - -1, -1, 595, -1, -1, -1, -1, 600, -1, -1, + 0, 263, 237, 76, 382, 77, 138, 242, 0, 175, + 144, 309, 310, 4, 594, 0, 314, 65, 116, 87, + 88, 18, 73, 19, 20, 21, 65, 66, 18, 18, + 65, 66, 116, 101, 97, 65, 66, 102, 103, 102, + 116, 93, 92, 95, 108, 22, 23, 24, 40, 45, + 46, 217, 114, 121, 31, 119, 118, 108, 108, 109, + 125, 126, 127, 108, 109, 42, 232, 233, 68, 121, + 108, 109, 110, 111, 122, 143, 121, 108, 109, 110, + 111, 120, 73, 121, 108, 114, 121, 116, 109, 85, + 121, 121, 112, 673, 118, 116, 92, 82, 116, 109, + 109, 121, 94, 114, 96, 97, 116, 116, 176, 120, + 102, 179, 108, 109, 110, 111, 114, 108, 123, 182, + 116, 118, 116, 128, 108, 119, 120, 123, 118, 118, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 311, 444, 279, 3, 19, + 20, 21, 22, 23, 24, 108, 109, 110, 111, 116, + 108, 31, 119, 120, 108, 109, 110, 111, 121, 114, + 108, 109, 42, 118, 119, 45, 46, 121, 114, 247, + 248, 112, 118, 119, 39, 177, 117, 112, 188, 116, + 182, 118, 117, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 108, 62, 63, 112, + 108, 109, 110, 111, 117, 85, 112, 595, 210, 211, + 108, 117, 92, 121, 108, 109, 110, 111, 114, 112, + 112, 299, 224, 108, 117, 117, 106, 121, 108, 109, + 110, 111, 234, 112, 114, 116, 116, 315, 117, 484, + 120, 114, 112, 123, 322, 323, 491, 117, 108, 109, + 252, 108, 109, 110, 111, 45, 46, 259, 112, 161, + 116, 163, 112, 117, 121, 338, 112, 117, 108, 115, + 112, 19, 20, 21, 357, 117, 108, 359, 116, 362, + 282, 114, 120, 116, 286, 287, 288, 108, 109, 110, + 111, 293, 294, 295, 470, 114, 472, 45, 46, 118, + 121, 114, 92, 96, 97, 98, 99, 100, 101, 114, + 116, 213, 214, 61, 120, 118, 119, 219, 108, 109, + 110, 111, 108, 109, 110, 111, 116, 19, 20, 21, + 22, 23, 24, 123, 114, 580, 338, 85, 610, 31, + 108, 116, 587, 114, 92, 120, 522, 118, 350, 108, + 42, 114, 114, 45, 46, 118, 118, 108, 106, 108, + 108, 109, 110, 111, 108, 109, 112, 108, 116, 115, + 108, 109, 120, 110, 111, 123, 108, 450, 265, 266, + 267, 268, 269, 270, 457, 458, 108, 460, 461, 462, + 463, 108, 465, 85, 467, 468, 469, 108, 471, 108, + 92, 789, 65, 66, 110, 111, 108, 480, 271, 272, + 108, 313, 108, 116, 106, 114, 108, 109, 110, 111, + 113, 108, 108, 108, 116, 273, 274, 275, 276, 277, + 278, 123, 108, 435, 436, 437, 438, 439, 108, 108, + 108, 114, 114, 114, 108, 347, 456, 114, 450, 459, + 352, 353, 108, 108, 464, 457, 458, 535, 460, 461, + 462, 463, 108, 465, 116, 467, 468, 469, 541, 471, + 118, 716, 116, 118, 0, 113, 108, 722, 480, 110, + 110, 109, 109, 118, 110, 110, 110, 110, 110, 110, + 119, 569, 110, 110, 572, 104, 116, 570, 108, 582, + 573, 116, 118, 576, 118, 118, 589, 19, 20, 21, + 122, 118, 110, 110, 116, 116, 116, 116, 107, 112, + 116, 116, 116, 105, 108, 116, 116, 110, 116, 116, + 110, 110, 124, 45, 46, 110, 609, 110, 116, 541, + 116, 108, 116, 120, 617, 618, 116, 625, 120, 551, + 116, 553, 108, 118, 118, 118, 118, 118, 116, 118, + 117, 563, 117, 565, 466, 567, 117, 569, 570, 115, + 572, 573, 574, 85, 576, 577, 659, 94, 117, 117, + 92, 115, 665, 485, 115, 487, 115, 117, 115, 117, + 492, 669, 670, 115, 106, 115, 108, 109, 110, 111, + 115, 108, 108, 613, 116, 607, 608, 609, 108, 108, + 108, 123, 116, 515, 108, 617, 618, 108, 108, 108, + 117, 117, 117, 108, 117, 108, 108, 700, 701, 702, + 703, 704, 705, 108, 112, 708, 117, 117, 115, 712, + 542, 115, 115, 115, 115, 114, 110, 117, 116, 116, + 552, 116, 554, 116, 556, 557, 558, 559, 116, 561, + 177, 108, 564, 113, 566, 108, 568, 120, 120, 571, + 114, 120, 755, 575, 120, 108, 578, 108, 761, 120, + 117, 108, 120, 115, 108, 108, 108, 108, 117, 108, + 108, 108, 118, 210, 211, 109, 112, 117, 700, 701, + 702, 703, 704, 705, 112, 109, 708, 224, 109, 112, + 712, 117, 614, 615, 616, 112, 112, 234, 117, 621, + 112, 108, 117, 117, 734, 735, 108, 117, 117, 739, + 740, 117, 19, 20, 21, 252, 108, 108, 108, 108, + 117, 117, 259, 117, 117, 120, 93, 649, 109, 117, + 652, 118, 115, 655, 116, 121, 121, 121, 45, 46, + 662, 121, 19, 20, 21, 282, 668, 117, 108, 286, + 287, 288, 117, 116, 120, 108, 293, 294, 295, 109, + 109, 120, 108, 685, 108, 108, 113, 109, 45, 46, + 109, 116, 694, 695, 110, 110, 110, 117, 85, 116, + 121, 110, 120, 6, 117, 92, 117, 117, 710, 117, + 117, 6, 714, 112, 120, 120, 118, 121, 720, 106, + 121, 108, 109, 110, 111, 121, 121, 112, 85, 116, + 117, 112, 118, 350, 113, 92, 123, 117, 112, 741, + 742, 743, 744, 745, 746, 117, 748, 112, 750, 106, + 752, 108, 109, 110, 111, 113, 758, 117, 117, 116, + 115, 115, 115, 115, 115, 108, 123, 117, 117, 109, + 108, 108, 120, 109, 120, 6, 110, 110, 110, 120, + 122, 783, 117, 122, 762, 108, 788, 117, 112, 116, + 121, 793, 120, 795, 112, 797, 112, 799, 800, 120, + 802, 108, 117, 117, 117, 117, 108, 108, 108, 108, + 121, 121, 814, 815, 816, 121, 611, 308, 435, 436, + 437, 438, 439, 4, 5, 117, 117, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 108, 108, 108, + 117, 117, 117, 493, 25, 26, 27, 28, 29, 30, + 239, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 144, 43, 44, 82, -1, 47, 548, 280, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 617, 618, 619, 620, 621, 622, - -1, 624, -1, 626, -1, 628, -1, -1, -1, -1, - 633, -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, -1, -1, 551, -1, 553, -1, -1, -1, + 121, -1, -1, -1, -1, -1, 563, -1, 565, -1, + 567, -1, 569, -1, -1, 572, -1, 574, -1, -1, + 577, -1, -1, -1, -1, -1, -1, 0, 1, -1, + -1, 4, 5, -1, -1, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, -1, -1, -1, -1, -1, + 607, 608, 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, -1, 655, -1, -1, -1, 659, -1, -1, -1, - -1, 664, -1, 666, -1, 668, -1, 670, -1, 672, + -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, -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, - 683, 684, 685, 4, 5, -1, -1, 8, 9, 10, - 11, 12, 13, 14, -1, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - -1, 32, -1, -1, 35, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, - 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, -1, 76, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, - -1, -1, 93, -1, -1, 0, 1, -1, -1, 4, - 5, -1, 103, 8, 9, 10, 11, 12, 13, 14, - -1, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, -1, 32, -1, -1, - 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 90, 91, 92, 93, 4, + -1, -1, -1, 108, -1, -1, 111, -1, 113, 4, 5, -1, -1, 8, 9, 10, 11, 12, 13, 14, - -1, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, -1, 32, -1, -1, - 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 50, 51, 52, 53, 54, - 55, 56, 57, -1, 59, 60, 61, 62, 63, 64, + 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, - -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 90, -1, -1, 93, -1, - 95, 4, 5, -1, -1, 8, 9, 10, 11, 12, - 13, 14, -1, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, - -1, -1, 35, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, -1, 76, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 90, 4, 5, - 93, -1, 8, 9, 10, 11, 12, 13, 14, -1, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, -1, 32, -1, -1, 35, + 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, -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, -1, -1, -1, + -1, 108, -1, -1, 111, -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, 50, 51, 52, 53, 54, 55, - 56, 57, -1, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, - 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 90, -1, -1, 93 + -1, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 106, -1, 108, 109, 110, + 111, -1, -1, -1, -1, 116, -1, -1, -1, -1, + -1, -1, 123 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1352,74 +1508,87 @@ static const grib_yytype_int16 grib_yycheck[] = static const grib_yytype_uint8 grib_yystos[] = { 0, 1, 4, 5, 8, 9, 10, 11, 12, 13, - 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 32, 35, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 76, 90, 91, 92, 93, 112, 113, - 115, 116, 121, 122, 123, 130, 131, 132, 133, 134, - 137, 138, 150, 151, 153, 154, 155, 98, 98, 96, - 98, 90, 90, 98, 96, 96, 90, 91, 98, 90, - 96, 98, 96, 96, 96, 96, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 98, 90, 90, 91, - 98, 91, 98, 91, 98, 90, 33, 34, 88, 90, - 91, 92, 93, 98, 105, 113, 118, 119, 120, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 95, 90, - 90, 96, 90, 90, 90, 90, 96, 96, 96, 96, - 90, 90, 90, 90, 98, 98, 15, 100, 100, 100, - 90, 100, 0, 4, 90, 93, 95, 115, 95, 90, - 93, 138, 4, 90, 155, 149, 149, 92, 92, 91, - 91, 118, 92, 92, 149, 96, 100, 101, 113, 126, - 92, 92, 92, 92, 92, 92, 100, 101, 101, 90, - 101, 100, 100, 98, 98, 101, 102, 98, 101, 102, - 104, 113, 127, 149, 100, 100, 92, 92, 91, 98, - 146, 98, 149, 141, 142, 94, 89, 106, 84, 85, - 107, 108, 109, 105, 110, 78, 79, 80, 81, 82, - 83, 86, 87, 98, 127, 92, 98, 98, 98, 92, - 92, 92, 92, 98, 98, 98, 120, 149, 118, 98, - 31, 102, 149, 102, 102, 96, 101, 126, 102, 98, - 100, 115, 100, 98, 100, 99, 99, 97, 99, 99, - 97, 97, 99, 120, 118, 90, 127, 97, 99, 97, - 97, 97, 97, 90, 90, 90, 98, 90, 120, 120, - 118, 90, 90, 134, 90, 90, 134, 3, 28, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 48, 49, 128, 129, 99, 47, 102, 149, 149, 99, - 99, 99, 118, 99, 118, 99, 119, 90, 141, 143, - 143, 143, 143, 143, 143, 144, 144, 145, 145, 145, - 145, 145, 145, 146, 147, 118, 97, 118, 118, 118, - 97, 97, 97, 97, 118, 118, 118, 99, 99, 149, - 98, 90, 139, 140, 95, 139, 139, 120, 90, 127, - 139, 149, 149, 102, 102, 90, 90, 102, 90, 91, - 90, 102, 97, 126, 90, 90, 90, 90, 90, 90, - 127, 100, 118, 90, 127, 127, 99, 94, 99, 98, - 102, 103, 94, 99, 98, 102, 103, 94, 51, 52, - 102, 124, 92, 93, 114, 91, 91, 91, 99, 99, - 99, 90, 99, 99, 99, 90, 90, 90, 90, 99, - 99, 99, 102, 99, 118, 100, 103, 139, 103, 103, - 97, 126, 103, 99, 99, 90, 115, 151, 152, 115, - 96, 126, 96, 126, 115, 126, 126, 126, 115, 126, - 127, 96, 126, 96, 126, 96, 126, 98, 120, 98, - 120, 98, 90, 99, 98, 126, 91, 102, 90, 134, - 127, 91, 102, 90, 134, 127, 129, 90, 90, 124, - 125, 95, 117, 94, 103, 127, 98, 98, 120, 75, - 135, 136, 102, 99, 149, 126, 127, 102, 102, 100, - 103, 152, 103, 103, 118, 127, 118, 127, 103, 127, - 127, 127, 103, 127, 118, 127, 118, 127, 118, 127, - 118, 149, 126, 118, 126, 118, 127, 126, 118, 127, - 94, 134, 94, 99, 103, 94, 134, 94, 99, 103, - 100, 100, 117, 103, 124, 95, 92, 93, 118, 118, - 126, 119, 77, 103, 136, 115, 126, 95, 127, 6, - 6, 97, 97, 97, 97, 97, 99, 51, 127, 99, - 127, 99, 127, 99, 90, 103, 91, 102, 127, 90, - 103, 91, 102, 127, 149, 149, 6, 117, 99, 99, - 127, 104, 104, 103, 127, 102, 102, 126, 126, 126, - 126, 126, 126, 98, 126, 127, 126, 94, 99, 127, - 94, 134, 94, 99, 127, 94, 134, 102, 115, 103, - 115, 115, 115, 127, 127, 127, 127, 127, 127, 90, - 127, 127, 90, 127, 90, 103, 90, 127, 90, 103, - 125, 103, 103, 103, 99, 94, 99, 94, 99, 127, - 99, 94, 99, 127, 103, 127, 90, 127, 90, 127, - 127, 90, 127, 99, 99, 99, 127, 127, 127 + 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, 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, + 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, 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 }; #define grib_yyerrok (grib_yyerrstatus = 0) @@ -2233,485 +2402,571 @@ grib_yyreduce: case 2: /* Line 1455 of yacc.c */ -#line 210 "griby.y" - { grib_parser_all_actions = 0;grib_parser_concept=0; grib_parser_rules=0; } +#line 237 "griby.y" + { grib_parser_all_actions = 0;grib_parser_concept=0; + grib_parser_hash_array=0;grib_parser_rules=0; } break; case 3: /* Line 1455 of yacc.c */ -#line 211 "griby.y" - { grib_parser_concept = reverse((grib_yyvsp[(1) - (1)].concept_value)); } +#line 239 "griby.y" + { grib_parser_concept = reverse_concept((grib_yyvsp[(1) - (1)].concept_value)); } break; case 4: /* Line 1455 of yacc.c */ -#line 212 "griby.y" - { grib_parser_all_actions = (grib_yyvsp[(1) - (1)].act); } +#line 240 "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 213 "griby.y" - { grib_parser_rules = (grib_yyvsp[(1) - (1)].rules); } +#line 241 "griby.y" + { grib_parser_all_actions = (grib_yyvsp[(1) - (1)].act); } break; case 6: /* Line 1455 of yacc.c */ -#line 215 "griby.y" - { grib_parser_all_actions = 0; grib_parser_concept=0; grib_parser_rules=0; } +#line 242 "griby.y" + { grib_parser_rules = (grib_yyvsp[(1) - (1)].rules); } break; - case 8: + case 7: /* Line 1455 of yacc.c */ -#line 221 "griby.y" - { (grib_yyval.dvalue)=grib_darray_push(0,0,(grib_yyvsp[(1) - (1)].dval));} +#line 244 "griby.y" + { grib_parser_all_actions = 0; grib_parser_concept=0; + grib_parser_hash_array=0; grib_parser_rules=0; } break; case 9: /* Line 1455 of yacc.c */ -#line 222 "griby.y" - { (grib_yyval.dvalue)=grib_darray_push(0,(grib_yyvsp[(1) - (3)].dvalue),(grib_yyvsp[(3) - (3)].dval));} +#line 251 "griby.y" + { (grib_yyval.dvalue)=grib_darray_push(0,0,(grib_yyvsp[(1) - (1)].dval));} break; case 10: /* Line 1455 of yacc.c */ -#line 223 "griby.y" - { (grib_yyval.dvalue)=grib_darray_push(0,0,(grib_yyvsp[(1) - (1)].lval));} +#line 252 "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 224 "griby.y" +#line 253 "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" { (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 227 "griby.y" - { (grib_yyvsp[(1) - (2)].act)->next = (grib_yyvsp[(2) - (2)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (2)].act); } +#line 257 "griby.y" + { (grib_yyval.ivalue)=grib_iarray_push(0,(grib_yyvsp[(1) - (1)].lval));} break; case 14: /* Line 1455 of yacc.c */ -#line 228 "griby.y" +#line 258 "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" + { (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" { (grib_yyvsp[(1) - (3)].act)->next = (grib_yyvsp[(3) - (3)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (3)].act); } break; - case 15: + case 18: /* Line 1455 of yacc.c */ -#line 229 "griby.y" +#line 264 "griby.y" { (grib_yyval.act) = (grib_yyvsp[(1) - (2)].act);} break; - case 26: - -/* Line 1455 of yacc.c */ -#line 247 "griby.y" - { (grib_yyval.explist) = 0; } - break; - - case 29: - -/* Line 1455 of yacc.c */ -#line 252 "griby.y" - { (grib_yyvsp[(1) - (3)].explist)->next = (grib_yyvsp[(3) - (3)].explist); (grib_yyval.explist) = (grib_yyvsp[(1) - (3)].explist); } - break; - case 30: /* Line 1455 of yacc.c */ -#line 255 "griby.y" - { (grib_yyval.explist) = grib_arguments_new(grib_parser_context,(grib_yyvsp[(1) - (1)].exp),NULL); } - break; - - case 31: - -/* Line 1455 of yacc.c */ -#line 260 "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 32: - -/* Line 1455 of yacc.c */ -#line 263 "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)); } +#line 283 "griby.y" + { (grib_yyval.explist) = 0; } break; case 33: /* Line 1455 of yacc.c */ -#line 266 "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)); } +#line 288 "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 269 "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)); } +#line 291 "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 272 "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)); } +#line 296 "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 276 "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)); } +#line 299 "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 279 "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)); } +#line 302 "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 282 "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)); } +#line 305 "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 285 "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)); } +#line 308 "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 288 "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)); } +#line 311 "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 291 "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)); } +#line 314 "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 294 "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)); } +#line 317 "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 297 "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)); } +#line 320 "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 300 "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)); } +#line 323 "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 303 "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)); } +#line 326 "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 307 "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)); } +#line 330 "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 310 "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)); } +#line 333 "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 313 "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)); } +#line 336 "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 316 "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)); } +#line 339 "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 319 "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)); } +#line 342 "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 322 "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)); } +#line 345 "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 325 "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)); } +#line 348 "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 328 "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)); } +#line 351 "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 331 "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)); } +#line 354 "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 334 "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)); } +#line 357 "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; case 56: /* Line 1455 of yacc.c */ -#line 337 "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 361 "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 340 "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 364 "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 343 "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 367 "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 346 "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 370 "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 349 "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 373 "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 352 "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 376 "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 355 "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 379 "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 358 "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 382 "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 361 "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 385 "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 364 "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 388 "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 367 "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 391 "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 370 "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 394 "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 373 "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 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)); } break; case 69: /* Line 1455 of yacc.c */ -#line 376 "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 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)); } break; case 70: /* Line 1455 of yacc.c */ -#line 379 "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 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)); } break; case 71: /* Line 1455 of yacc.c */ -#line 382 "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 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)); } break; case 72: /* Line 1455 of yacc.c */ -#line 385 "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 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)); } break; case 73: /* Line 1455 of yacc.c */ -#line 388 "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 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)); } break; case 74: /* Line 1455 of yacc.c */ -#line 391 "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 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));} break; case 75: /* Line 1455 of yacc.c */ -#line 393 "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 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)); } break; case 76: /* Line 1455 of yacc.c */ -#line 395 "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 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)); } break; case 77: /* Line 1455 of yacc.c */ -#line 398 "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 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)); } break; case 78: /* Line 1455 of yacc.c */ -#line 401 "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 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)); } break; case 79: /* Line 1455 of yacc.c */ -#line 404 "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 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)); } break; case 80: /* Line 1455 of yacc.c */ -#line 408 "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 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)); } break; case 81: /* Line 1455 of yacc.c */ -#line 412 "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 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)); } break; case 82: /* Line 1455 of yacc.c */ -#line 415 "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 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)); } break; case 83: /* Line 1455 of yacc.c */ -#line 418 "griby.y" +#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)); } + 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)); } + 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)); } + 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)); } + 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)); } + 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));} + 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));} + 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)); } + 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)); } + 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)); + } + 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)); + } + 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));} + 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));} + break; + + case 96: + +/* Line 1455 of yacc.c */ +#line 481 "griby.y" { grib_arguments* a = grib_arguments_new( grib_parser_context, - new_accessor_expression(grib_parser_context,(grib_yyvsp[(2) - (5)].str)), + new_accessor_expression(grib_parser_context,(grib_yyvsp[(2) - (5)].str),0,0), NULL ); a->next=(grib_yyvsp[(4) - (5)].explist); @@ -2721,14 +2976,14 @@ grib_yyreduce: } break; - case 84: + case 97: /* Line 1455 of yacc.c */ -#line 430 "griby.y" +#line 493 "griby.y" { grib_arguments* a = grib_arguments_new( grib_parser_context, - new_accessor_expression(grib_parser_context,(grib_yyvsp[(2) - (5)].str)), + new_accessor_expression(grib_parser_context,(grib_yyvsp[(2) - (5)].str),0,0), NULL ); a->next=(grib_yyvsp[(4) - (5)].explist); @@ -2738,14 +2993,14 @@ grib_yyreduce: } break; - case 85: + case 98: /* Line 1455 of yacc.c */ -#line 442 "griby.y" +#line 505 "griby.y" { grib_arguments* a = grib_arguments_new( grib_parser_context, - new_accessor_expression(grib_parser_context,(grib_yyvsp[(2) - (5)].str)), + new_accessor_expression(grib_parser_context,(grib_yyvsp[(2) - (5)].str),0,0), NULL ); a->next=(grib_yyvsp[(4) - (5)].explist); @@ -2755,819 +3010,940 @@ grib_yyreduce: } break; - case 86: - -/* Line 1455 of yacc.c */ -#line 454 "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 87: - -/* Line 1455 of yacc.c */ -#line 457 "griby.y" - { (grib_yyval.act) = grib_action_create_remove(grib_parser_context,(grib_yyvsp[(2) - (2)].explist));} - break; - - case 88: - -/* Line 1455 of yacc.c */ -#line 460 "griby.y" - { (grib_yyval.act) = grib_action_create_assert(grib_parser_context,(grib_yyvsp[(3) - (4)].exp));} - break; - - case 89: - -/* Line 1455 of yacc.c */ -#line 463 "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 90: - -/* Line 1455 of yacc.c */ -#line 465 "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 91: - -/* Line 1455 of yacc.c */ -#line 466 "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 92: - -/* Line 1455 of yacc.c */ -#line 467 "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 93: - -/* Line 1455 of yacc.c */ -#line 469 "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 94: - -/* Line 1455 of yacc.c */ -#line 472 "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 95: - -/* Line 1455 of yacc.c */ -#line 473 "griby.y" - { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,0); } - break; - - case 96: - -/* Line 1455 of yacc.c */ -#line 474 "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 97: - -/* Line 1455 of yacc.c */ -#line 475 "griby.y" - { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,(grib_yyvsp[(3) - (4)].lval)); } - break; - - case 98: - -/* Line 1455 of yacc.c */ -#line 476 "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 99: /* Line 1455 of yacc.c */ -#line 477 "griby.y" - { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,0); } +#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 478 "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 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 479 "griby.y" - { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,(grib_yyvsp[(3) - (4)].lval)); } +#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 481 "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 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 482 "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 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 483 "griby.y" - { (grib_yyval.act) = grib_action_create_print(grib_parser_context,"",0); } +#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 487 "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 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 488 "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 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 489 "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 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 490 "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 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 494 "griby.y" - { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (6)].exp),(grib_yyvsp[(5) - (6)].act),NULL); } +#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 495 "griby.y" - { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),NULL); } +#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 496 "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 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 499 "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 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 500 "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 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));} break; case 115: /* Line 1455 of yacc.c */ -#line 504 "griby.y" - { (grib_yyvsp[(1) - (3)].act)->next = (grib_yyvsp[(2) - (3)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (3)].act); } +#line 544 "griby.y" + { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,(grib_yyvsp[(3) - (4)].lval)); } break; case 116: /* Line 1455 of yacc.c */ -#line 508 "griby.y" - { (grib_yyval.explist) = NULL ;} +#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));} break; case 117: /* Line 1455 of yacc.c */ -#line 509 "griby.y" - { (grib_yyval.explist) = (grib_yyvsp[(2) - (2)].explist) ;} +#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)); } break; case 118: /* Line 1455 of yacc.c */ -#line 512 "griby.y" - { (grib_yyval.lval) = 0 ; } +#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));} break; case 119: /* Line 1455 of yacc.c */ -#line 513 "griby.y" - { (grib_yyval.lval) = (grib_yyvsp[(2) - (2)].lval); } +#line 549 "griby.y" + { (grib_yyval.act) = grib_action_create_print(grib_parser_context,"",0); } + break; + + case 120: + +/* Line 1455 of yacc.c */ +#line 553 "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 121: /* Line 1455 of yacc.c */ -#line 517 "griby.y" - { (grib_yyval.lval) = (grib_yyvsp[(1) - (3)].lval) | (grib_yyvsp[(3) - (3)].lval); } +#line 554 "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 122: /* Line 1455 of yacc.c */ -#line 520 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_READ_ONLY; } +#line 555 "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 123: /* Line 1455 of yacc.c */ -#line 521 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LOWERCASE; } +#line 556 "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 124: /* Line 1455 of yacc.c */ -#line 522 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DUMP; } +#line 560 "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 125: /* Line 1455 of yacc.c */ -#line 523 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_COPY; } +#line 561 "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 126: /* Line 1455 of yacc.c */ -#line 524 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_FAIL; } +#line 562 "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 127: /* Line 1455 of yacc.c */ -#line 525 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_HIDDEN; } +#line 565 "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 128: /* Line 1455 of yacc.c */ -#line 526 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; } - break; - - case 129: - -/* Line 1455 of yacc.c */ -#line 527 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CAN_BE_MISSING; } +#line 566 "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 130: /* Line 1455 of yacc.c */ -#line 528 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CONSTRAINT; } +#line 570 "griby.y" + { (grib_yyvsp[(1) - (3)].act)->next = (grib_yyvsp[(2) - (3)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (3)].act); } break; case 131: /* Line 1455 of yacc.c */ -#line 529 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_OVERRIDE; } +#line 574 "griby.y" + { (grib_yyval.explist) = NULL ;} break; case 132: /* Line 1455 of yacc.c */ -#line 530 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_COPY_OK; } +#line 575 "griby.y" + { (grib_yyval.explist) = (grib_yyvsp[(2) - (2)].explist) ;} break; case 133: /* Line 1455 of yacc.c */ -#line 531 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_TRANSIENT; } +#line 578 "griby.y" + { (grib_yyval.lval) = 0 ; } break; case 134: /* Line 1455 of yacc.c */ -#line 532 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_STRING_TYPE; } - break; - - case 135: - -/* Line 1455 of yacc.c */ -#line 533 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LONG_TYPE; } +#line 579 "griby.y" + { (grib_yyval.lval) = (grib_yyvsp[(2) - (2)].lval); } break; case 136: /* Line 1455 of yacc.c */ -#line 534 "griby.y" - { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DOUBLE_TYPE; } +#line 583 "griby.y" + { (grib_yyval.lval) = (grib_yyvsp[(1) - (3)].lval) | (grib_yyvsp[(3) - (3)].lval); } break; case 137: /* Line 1455 of yacc.c */ -#line 537 "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 586 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_READ_ONLY; } break; case 138: /* Line 1455 of yacc.c */ -#line 540 "griby.y" - { (grib_yyval.act) = grib_action_create_while(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act)); } +#line 587 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LOWERCASE; } break; case 139: /* Line 1455 of yacc.c */ -#line 543 "griby.y" - { (grib_yyval.act) = grib_action_create_trigger(grib_parser_context,(grib_yyvsp[(3) - (7)].explist),(grib_yyvsp[(6) - (7)].act)); } +#line 588 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DUMP; } break; case 140: /* Line 1455 of yacc.c */ -#line 546 "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 589 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_JSON; } break; case 141: /* Line 1455 of yacc.c */ -#line 547 "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 590 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_XML; } break; case 142: /* Line 1455 of yacc.c */ -#line 548 "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 591 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_COPY; } break; case 143: /* Line 1455 of yacc.c */ -#line 549 "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 592 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_FAIL; } break; case 144: /* Line 1455 of yacc.c */ -#line 550 "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 593 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_HIDDEN; } break; case 145: /* Line 1455 of yacc.c */ -#line 551 "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[(2) - (14)].str));} +#line 594 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; } break; case 146: /* Line 1455 of yacc.c */ -#line 552 "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 595 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CAN_BE_MISSING; } break; case 147: /* Line 1455 of yacc.c */ -#line 553 "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 596 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CONSTRAINT; } break; case 148: /* Line 1455 of yacc.c */ -#line 554 "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 597 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_OVERRIDE; } break; case 149: /* Line 1455 of yacc.c */ -#line 555 "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 598 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_COPY_OK; } break; case 150: /* Line 1455 of yacc.c */ -#line 556 "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 599 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_TRANSIENT; } break; case 151: /* Line 1455 of yacc.c */ -#line 557 "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 600 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_STRING_TYPE; } break; case 152: /* Line 1455 of yacc.c */ -#line 558 "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 601 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LONG_TYPE; } break; case 153: /* Line 1455 of yacc.c */ -#line 559 "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 602 "griby.y" + { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DOUBLE_TYPE; } break; case 154: /* Line 1455 of yacc.c */ -#line 560 "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 605 "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 155: /* Line 1455 of yacc.c */ -#line 561 "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 608 "griby.y" + { (grib_yyval.act) = grib_action_create_while(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act)); } break; case 156: /* Line 1455 of yacc.c */ -#line 562 "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 611 "griby.y" + { (grib_yyval.act) = grib_action_create_trigger(grib_parser_context,(grib_yyvsp[(3) - (7)].explist),(grib_yyvsp[(6) - (7)].act)); } + break; + + case 157: + +/* Line 1455 of yacc.c */ +#line 614 "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 158: /* Line 1455 of yacc.c */ -#line 567 "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 615 "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 159: + +/* Line 1455 of yacc.c */ +#line 616 "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 160: /* Line 1455 of yacc.c */ -#line 571 "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 617 "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 161: /* Line 1455 of yacc.c */ -#line 574 "griby.y" - { (grib_yyval.case_value) = grib_case_new(grib_parser_context,(grib_yyvsp[(2) - (4)].explist),(grib_yyvsp[(4) - (4)].act)); } +#line 618 "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 162: /* Line 1455 of yacc.c */ -#line 578 "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 619 "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[(2) - (14)].str));} break; case 163: /* Line 1455 of yacc.c */ -#line 579 "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 620 "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 164: /* Line 1455 of yacc.c */ -#line 580 "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 621 "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 165: /* Line 1455 of yacc.c */ -#line 583 "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 622 "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 166: /* Line 1455 of yacc.c */ -#line 585 "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 623 "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 167: /* Line 1455 of yacc.c */ -#line 587 "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 624 "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 168: /* Line 1455 of yacc.c */ -#line 589 "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));} +#line 625 "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 169: + +/* Line 1455 of yacc.c */ +#line 626 "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 170: /* Line 1455 of yacc.c */ -#line 594 "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 627 "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 171: /* Line 1455 of yacc.c */ -#line 597 "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 628 "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 172: /* Line 1455 of yacc.c */ -#line 600 "griby.y" - { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].str)); free((grib_yyvsp[(1) - (1)].str)); } +#line 629 "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 173: /* Line 1455 of yacc.c */ -#line 601 "griby.y" - { (grib_yyval.exp) = new_string_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].str)); free((grib_yyvsp[(1) - (1)].str)); } +#line 630 "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 175: /* Line 1455 of yacc.c */ -#line 605 "griby.y" - { (grib_yyval.exp) = new_long_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].lval)); } - break; - - case 176: - -/* Line 1455 of yacc.c */ -#line 606 "griby.y" - { (grib_yyval.exp) = new_double_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].dval)); /* TODO: change to new_float_expression*/} +#line 635 "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 177: /* Line 1455 of yacc.c */ -#line 608 "griby.y" - { (grib_yyval.exp) = NULL; } +#line 639 "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 178: /* Line 1455 of yacc.c */ -#line 609 "griby.y" - { (grib_yyval.exp) = new_true_expression(grib_parser_context); } +#line 642 "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 179: /* Line 1455 of yacc.c */ -#line 610 "griby.y" - { (grib_yyval.exp) = (grib_yyvsp[(2) - (3)].exp); } - break; - - case 180: - -/* Line 1455 of yacc.c */ -#line 611 "griby.y" - { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_neg,&grib_op_neg_d,(grib_yyvsp[(2) - (2)].exp)); } +#line 643 "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 181: /* Line 1455 of yacc.c */ -#line 612 "griby.y" - { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[(1) - (3)].str),NULL); free((grib_yyvsp[(1) - (3)].str));} +#line 647 "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 182: /* Line 1455 of yacc.c */ -#line 613 "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 650 "griby.y" + { (grib_yyval.case_value) = grib_case_new(grib_parser_context,(grib_yyvsp[(2) - (4)].explist),(grib_yyvsp[(4) - (4)].act)); } break; case 183: /* Line 1455 of yacc.c */ -#line 617 "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 654 "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 184: + +/* Line 1455 of yacc.c */ +#line 655 "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 185: /* Line 1455 of yacc.c */ -#line 621 "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 656 "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 186: /* Line 1455 of yacc.c */ -#line 622 "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 659 "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 187: /* Line 1455 of yacc.c */ -#line 623 "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 661 "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 188: /* Line 1455 of yacc.c */ -#line 624 "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 663 "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 189: /* Line 1455 of yacc.c */ -#line 625 "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 665 "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 191: /* Line 1455 of yacc.c */ -#line 629 "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 670 "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 192: /* Line 1455 of yacc.c */ -#line 630 "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 673 "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 193: + +/* Line 1455 of yacc.c */ +#line 677 "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 194: /* Line 1455 of yacc.c */ -#line 634 "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 679 "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 195: /* Line 1455 of yacc.c */ -#line 636 "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 683 "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 196: /* Line 1455 of yacc.c */ -#line 637 "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 684 "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 197: /* Line 1455 of yacc.c */ -#line 638 "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 685 "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 198: /* Line 1455 of yacc.c */ -#line 639 "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 199: - -/* Line 1455 of yacc.c */ -#line 640 "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 686 "griby.y" + { (grib_yyval.exp) = new_string_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].str)); free((grib_yyvsp[(1) - (1)].str)); } break; case 200: /* Line 1455 of yacc.c */ -#line 641 "griby.y" - { (grib_yyval.exp) = new_string_compare_expression(grib_parser_context,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } +#line 690 "griby.y" + { (grib_yyval.exp) = new_long_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].lval)); } break; case 201: /* Line 1455 of yacc.c */ -#line 646 "griby.y" - { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_not,NULL,(grib_yyvsp[(2) - (2)].exp)); } +#line 691 "griby.y" + { (grib_yyval.exp) = new_double_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].dval)); /* TODO: change to new_float_expression*/} + break; + + case 202: + +/* Line 1455 of yacc.c */ +#line 693 "griby.y" + { (grib_yyval.exp) = NULL; } break; case 203: /* Line 1455 of yacc.c */ -#line 650 "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 694 "griby.y" + { (grib_yyval.exp) = new_true_expression(grib_parser_context); } + break; + + case 204: + +/* Line 1455 of yacc.c */ +#line 695 "griby.y" + { (grib_yyval.exp) = (grib_yyvsp[(2) - (3)].exp); } break; case 205: /* Line 1455 of yacc.c */ -#line 654 "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 696 "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 206: + +/* Line 1455 of yacc.c */ +#line 697 "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 207: + +/* Line 1455 of yacc.c */ +#line 698 "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 208: + +/* Line 1455 of yacc.c */ +#line 702 "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 210: /* Line 1455 of yacc.c */ -#line 668 "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 706 "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 211: /* Line 1455 of yacc.c */ -#line 669 "griby.y" - { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,"skip",0);} +#line 707 "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 212: + +/* Line 1455 of yacc.c */ +#line 708 "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 213: /* Line 1455 of yacc.c */ -#line 673 "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 709 "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 214: /* Line 1455 of yacc.c */ -#line 676 "griby.y" - { (grib_yyval.rules) = grib_new_rule(grib_parser_context,NULL,(grib_yyvsp[(1) - (1)].rule_entry)); } +#line 710 "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 215: + case 216: /* Line 1455 of yacc.c */ -#line 680 "griby.y" - { (grib_yyval.rules) = grib_new_rule(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].rule_entry)); } +#line 712 "griby.y" + { (grib_yyval.exp) = new_length_expression(grib_parser_context,(grib_yyvsp[(3) - (4)].str)); free((grib_yyvsp[(3) - (4)].str));} break; case 217: /* Line 1455 of yacc.c */ -#line 684 "griby.y" +#line 713 "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 218: + +/* Line 1455 of yacc.c */ +#line 714 "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 219: + +/* Line 1455 of yacc.c */ +#line 715 "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 220: + +/* Line 1455 of yacc.c */ +#line 716 "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 221: + +/* Line 1455 of yacc.c */ +#line 717 "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 222: + +/* Line 1455 of yacc.c */ +#line 720 "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 223: + +/* Line 1455 of yacc.c */ +#line 721 "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 225: + +/* Line 1455 of yacc.c */ +#line 725 "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 226: + +/* Line 1455 of yacc.c */ +#line 727 "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 227: + +/* Line 1455 of yacc.c */ +#line 728 "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 228: + +/* Line 1455 of yacc.c */ +#line 729 "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 229: + +/* Line 1455 of yacc.c */ +#line 730 "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 230: + +/* Line 1455 of yacc.c */ +#line 731 "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 231: + +/* Line 1455 of yacc.c */ +#line 732 "griby.y" + { (grib_yyval.exp) = new_string_compare_expression(grib_parser_context,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); } + break; + + case 232: + +/* Line 1455 of yacc.c */ +#line 737 "griby.y" + { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_not,NULL,(grib_yyvsp[(2) - (2)].exp)); } + break; + + case 234: + +/* Line 1455 of yacc.c */ +#line 741 "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 236: + +/* Line 1455 of yacc.c */ +#line 745 "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 241: + +/* Line 1455 of yacc.c */ +#line 759 "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 242: + +/* Line 1455 of yacc.c */ +#line 760 "griby.y" + { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,"skip",0);} + break; + + case 244: + +/* Line 1455 of yacc.c */ +#line 764 "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 245: + +/* Line 1455 of yacc.c */ +#line 767 "griby.y" + { (grib_yyval.rules) = grib_new_rule(grib_parser_context,NULL,(grib_yyvsp[(1) - (1)].rule_entry)); } + break; + + case 246: + +/* Line 1455 of yacc.c */ +#line 771 "griby.y" + { (grib_yyval.rules) = grib_new_rule(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].rule_entry)); } + break; + + case 248: + +/* Line 1455 of yacc.c */ +#line 775 "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 3571 "y.tab.c" +#line 3947 "y.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", grib_yyr1[grib_yyn], &grib_yyval, &grib_yyloc); @@ -3779,10 +4155,10 @@ grib_yyreturn: /* Line 1675 of yacc.c */ -#line 688 "griby.y" +#line 779 "griby.y" -static grib_concept_value *reverse_concept(grib_concept_value *r,grib_concept_value *s) +static grib_concept_value *_reverse_concept(grib_concept_value *r,grib_concept_value *s) { grib_concept_value *v; @@ -3790,13 +4166,29 @@ static grib_concept_value *reverse_concept(grib_concept_value *r,grib_concept_va v = r->next; r->next = s; - return reverse_concept(v,r); + return _reverse_concept(v,r); } - -static grib_concept_value* reverse(grib_concept_value* r) +static grib_concept_value* reverse_concept(grib_concept_value* r) { - return reverse_concept(r,NULL); + return _reverse_concept(r,NULL); +} + +static grib_hash_array_value *_reverse_hash_array(grib_hash_array_value *r,grib_hash_array_value *s) +{ + grib_hash_array_value *v; + + if(r == NULL) return s; + + v = r->next; + r->next = s; + return _reverse_hash_array(v,r); +} + + +static grib_hash_array_value* reverse_hash_array(grib_hash_array_value* r) +{ + return _reverse_hash_array(r,NULL); } diff --git a/src/grib_yacc.h b/src/grib_yacc.h index e9705dfb6..e9e22b5fa 100644 --- a/src/grib_yacc.h +++ b/src/grib_yacc.h @@ -44,92 +44,110 @@ IF_TRANSIENT = 260, ELSE = 261, END = 262, - UNSIGNED = 263, - TEMPLATE = 264, - TEMPLATE_NOFAIL = 265, - TRIGGER = 266, - ASCII = 267, - KSEC1EXPVER = 268, - LABEL = 269, - LIST = 270, - WHILE = 271, - IBMFLOAT = 272, - SIGNED = 273, - BYTE = 274, - CODETABLE = 275, - COMPLEX_CODETABLE = 276, - LOOKUP = 277, - ALIAS = 278, - UNALIAS = 279, - META = 280, - POS = 281, - INTCONST = 282, - TRANS = 283, - FLAGBIT = 284, - CONCEPT = 285, - GETENV = 286, - CONCEPT_NOFAIL = 287, - NIL = 288, - DUMMY = 289, - MODIFY = 290, - READ_ONLY = 291, - STRING_TYPE = 292, - LONG_TYPE = 293, - DOUBLE_TYPE = 294, - NO_COPY = 295, - DUMP = 296, - NO_FAIL = 297, - EDITION_SPECIFIC = 298, - OVERRIDE = 299, - HIDDEN = 300, - CAN_BE_MISSING = 301, - MISSING = 302, - CONSTRAINT = 303, - COPY_OK = 304, - WHEN = 305, - SET = 306, - SET_NOFAIL = 307, - WRITE = 308, - APPEND = 309, - PRINT = 310, - EXPORT = 311, - REMOVE = 312, - SKIP = 313, - PAD = 314, - SECTION_PADDING = 315, - MESSAGE = 316, - PADTO = 317, - PADTOEVEN = 318, - PADTOMULTIPLE = 319, - G1_HALF_BYTE = 320, - G1_MESSAGE_LENGTH = 321, - G1_SECTION4_LENGTH = 322, - SECTION_LENGTH = 323, - FLAG = 324, - ITERATOR = 325, - NEAREST = 326, - BOX = 327, - KSEC = 328, - ASSERT = 329, - CASE = 330, - SWITCH = 331, - DEFAULT = 332, - EQ = 333, - NE = 334, - GE = 335, - LE = 336, - LT = 337, - GT = 338, - BIT = 339, - BITOFF = 340, - AND = 341, - OR = 342, - NOT = 343, - IS = 344, - IDENT = 345, - STRING = 346, - INTEGER = 347, - FLOAT = 348 + CLOSE = 263, + UNSIGNED = 264, + TEMPLATE = 265, + TEMPLATE_NOFAIL = 266, + TRIGGER = 267, + ASCII = 268, + GROUP = 269, + NON_ALPHA = 270, + KSEC1EXPVER = 271, + LABEL = 272, + LIST = 273, + IS_IN_LIST = 274, + IS_IN_DICT = 275, + IS_INTEGER = 276, + TO_INTEGER = 277, + TO_STRING = 278, + SEX2DEC = 279, + 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 }; #endif /* Tokens. */ @@ -138,92 +156,110 @@ #define IF_TRANSIENT 260 #define ELSE 261 #define END 262 -#define UNSIGNED 263 -#define TEMPLATE 264 -#define TEMPLATE_NOFAIL 265 -#define TRIGGER 266 -#define ASCII 267 -#define KSEC1EXPVER 268 -#define LABEL 269 -#define LIST 270 -#define WHILE 271 -#define IBMFLOAT 272 -#define SIGNED 273 -#define BYTE 274 -#define CODETABLE 275 -#define COMPLEX_CODETABLE 276 -#define LOOKUP 277 -#define ALIAS 278 -#define UNALIAS 279 -#define META 280 -#define POS 281 -#define INTCONST 282 -#define TRANS 283 -#define FLAGBIT 284 -#define CONCEPT 285 -#define GETENV 286 -#define CONCEPT_NOFAIL 287 -#define NIL 288 -#define DUMMY 289 -#define MODIFY 290 -#define READ_ONLY 291 -#define STRING_TYPE 292 -#define LONG_TYPE 293 -#define DOUBLE_TYPE 294 -#define NO_COPY 295 -#define DUMP 296 -#define NO_FAIL 297 -#define EDITION_SPECIFIC 298 -#define OVERRIDE 299 -#define HIDDEN 300 -#define CAN_BE_MISSING 301 -#define MISSING 302 -#define CONSTRAINT 303 -#define COPY_OK 304 -#define WHEN 305 -#define SET 306 -#define SET_NOFAIL 307 -#define WRITE 308 -#define APPEND 309 -#define PRINT 310 -#define EXPORT 311 -#define REMOVE 312 -#define SKIP 313 -#define PAD 314 -#define SECTION_PADDING 315 -#define MESSAGE 316 -#define PADTO 317 -#define PADTOEVEN 318 -#define PADTOMULTIPLE 319 -#define G1_HALF_BYTE 320 -#define G1_MESSAGE_LENGTH 321 -#define G1_SECTION4_LENGTH 322 -#define SECTION_LENGTH 323 -#define FLAG 324 -#define ITERATOR 325 -#define NEAREST 326 -#define BOX 327 -#define KSEC 328 -#define ASSERT 329 -#define CASE 330 -#define SWITCH 331 -#define DEFAULT 332 -#define EQ 333 -#define NE 334 -#define GE 335 -#define LE 336 -#define LT 337 -#define GT 338 -#define BIT 339 -#define BITOFF 340 -#define AND 341 -#define OR 342 -#define NOT 343 -#define IS 344 -#define IDENT 345 -#define STRING 346 -#define INTEGER 347 -#define FLOAT 348 +#define CLOSE 263 +#define UNSIGNED 264 +#define TEMPLATE 265 +#define TEMPLATE_NOFAIL 266 +#define TRIGGER 267 +#define ASCII 268 +#define GROUP 269 +#define NON_ALPHA 270 +#define KSEC1EXPVER 271 +#define LABEL 272 +#define LIST 273 +#define IS_IN_LIST 274 +#define IS_IN_DICT 275 +#define IS_INTEGER 276 +#define TO_INTEGER 277 +#define TO_STRING 278 +#define SEX2DEC 279 +#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 @@ -233,7 +269,7 @@ typedef union YYSTYPE { /* Line 1676 of yacc.c */ -#line 34 "griby.y" +#line 37 "griby.y" char *str; long lval; @@ -245,6 +281,7 @@ typedef union YYSTYPE grib_expression *exp; grib_concept_condition *concept_condition; grib_concept_value *concept_value; + grib_hash_array_value *hash_array_value; grib_case *case_value; grib_rule *rules; grib_rule_entry *rule_entry; @@ -252,7 +289,7 @@ typedef union YYSTYPE /* Line 1676 of yacc.c */ -#line 256 "y.tab.h" +#line 293 "y.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define grib_yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/tests.ecmwf/Makefile b/tests.ecmwf/Makefile deleted file mode 100644 index 5fb1ee2e9..000000000 --- a/tests.ecmwf/Makefile +++ /dev/null @@ -1,82 +0,0 @@ -DIR=. -MARS=../../../mars/client/main/src -MARS=. -PGI=/usr/local/apps/pgi/current -FORTRAN=-L$(PGI)/linux86/lib -lpgf90 -lpgf90_rpm1 -lpgf902 -lpgf90rtl -lpgftnrtl -lpghpf -lpgc -lpgf90 -lstd -Wl,-rpath $(PGI)/linux86/lib - - -CFLAGS=-I../src -I$(MARS) -g -Wall -Werror -m32 -#JASPER=/usr/lib/libjasper.a -# JASPER=/tmp/mab/degrib/src/jpeg2000/src/libjasper/.libs/libjasper.a -JASPER=-ljasper -lpng -EMOSLIB=-lemos.new.R64.D64.I32 -EMOSLIB=/home/ma/maf/public/libemosR64.a -#FORTRAN=-lxlf90 -lxlf -lc -lm -EMOSLIB=/home/ma/emos/lib/$(ARCH)/000300/libemos.R64.D64.I32.a - -PROGS=values packing compatibility chemical sample1 # memory request -# filter read_any iterator -LIBS=../src/libgrib_api.a $(EMOSLIB) $(FORTRAN) -lm $(JASPER) - -# Netcdf -NCINCDIR=/home/ma/mac/netcdf/netcdf-3.6.1/include -NCLIBDIR=/home/ma/mac/netcdf/netcdf-3.6.1/lib - -start : all packing - -test tests: all - ./test.ksh - -fail: all - ./test.ksh -k - -all:: - cd ../src; make - -all:: $(PROGS) - -OBJ=compare.c - -iterator: $(OBJ) iterator.c ../src/libgrib_api.a - $(CC) -o iterator $(OBJ) iterator.c $(CFLAGS) $(LIBS) - -sample: $(OBJ) sample.c ../src/libgrib_api.a - $(CC) -o sample $(OBJ) sample.c $(CFLAGS) $(LIBS) - -sample1: $(OBJ) sample1.c ../src/libgrib_api.a - $(CC) -o sample1 $(OBJ) sample1.c $(CFLAGS) $(LIBS) - -chemical: $(OBJ) chemical.c ../src/libgrib_api.a - $(CC) -o chemical $(OBJ) chemical.c -I$(NCINCDIR) $(CFLAGS) $(LIBS) -L$(NCLIBDIR) -lnetcdf - -read_any: $(OBJ) read_any.c ../src/libgrib_api.a - $(CC) -o read_any $(OBJ) read_any.c $(CFLAGS) $(LIBS) - -values: $(OBJ) values.c ../src/libgrib_api.a - $(CC) -o values $(OBJ) values.c $(CFLAGS) $(LIBS) - -packing: $(OBJ) packing.c ../src/libgrib_api.a - $(CC) -o packing $(OBJ) packing.c $(CFLAGS) $(LIBS) - -memory: $(OBJ) memory.c ../src/libgrib_api.a - $(CC) -o memory $(OBJ) memory.c $(CFLAGS) $(LIBS) - -request: $(OBJ) request.c ../src/libgrib_api.a - $(CC) -o request $(OBJ) request.c $(CFLAGS) $(LIBS) - -dump: $(OBJ) dump.c ../src/libgrib_api.a - $(CC) -o dump $(OBJ) dump.c $(CFLAGS) $(LIBS) - -compatibility: $(OBJ) compatibility.c ../src/libgrib_api.a - $(CC) -o compatibility $(OBJ) compatibility.c $(CFLAGS) $(LIBS) - -compatibility_ex: $(OBJ) compatibility_ex.c ../src/libgrib_api.a - $(CC) -o compatibility_ex $(OBJ) compatibility_ex.c $(CFLAGS) $(LIBS) - -grib1to2: $(OBJ) grib1to2.c ../src/libgrib_api.a - $(CC) -o grib1to2 $(OBJ) grib1to2.c $(CFLAGS) $(LIBS) - -.PRECIOUS: fail - -clean: - rm -f *.o core $(PROGS)