# Copyright 2005-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
#
# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
#
include "parameters_version.def";
constant definitionFilesVersion="2.0.0.0" : hidden;
constant internalVersion=23 : hidden;
meta checkInternalVersion check_internal_version(internalVersion) : hidden;

UseEcmfConventions = getenv("GRIB_API_USE_ECMF_CONVENTIONS","1");

constant defaultTypeOfLevel="unknown" : hidden;

# GRIBEX special boustrophedonic mode. See GRIB-472
# If the environment variable is not defined, the key will be 0
GRIBEX_boustrophedonic = getenv("GRIB_API_GRIBEX_BOUSTROPHEDONIC","0");


constant zero=0 : hidden;
constant one=1 : hidden;
constant two=1 : hidden;
constant three=1 : hidden;
constant eight=8 : hidden;
constant hundred=100 : hidden;
constant eleven=11 : hidden;
constant true="true" :hidden;
constant false="false" : hidden;
transient truncateLaplacian=0 : hidden;
constant marsDir="mars" : no_copy,hidden;
constant present=1 : hidden;
constant epsPoint=1 : hidden;
constant epsContinous=11 : hidden;
constant epsStatisticsPoint=2 : hidden;
constant epsStatisticsContinous=12 : hidden;
alias epsStatistics=zero : hidden;

constant defaultParameter = 0 : hidden;
constant defaultName="unknown" :hidden;
constant defaultShortName="unknown" : hidden;
transient truncateDegrees=0 : hidden;
transient dummy = 1 :hidden;
constant unknown="unknown" : hidden;
constant oneConstant=1 : hidden;
constant thousand=1000;
constant hundred=100;
constant oneMillionConstant=1000000 : hidden;
constant grib1divider = 1000 : hidden;
meta offset offset_file() : hidden;
meta count count_file() : hidden;
meta countTotal count_total() : hidden;
transient file="unknown" : hidden;
transient changingPrecision=0 : hidden;
transient unitsFactor=1 : hidden;
transient unitsBias=0 : hidden;
constant globalDomain = "g";
transient timeRangeIndicatorFromStepRange=-1 : hidden;

# GRIB-802
transient override_large_constant_fields = 0 : hidden;

meta libraryVersion library_version() : hidden;

lookup[4] kindOfProduct       (0,identifier) : hidden;
# grib templates
# `ABCD` is a number, each letter being a byte

if(kindOfProduct == `GRIB`){
 lookup[1] GRIBEditionNumber  (7,editionNumber)  : edition_specific  ;
 template      GRIB "grib[GRIBEditionNumber:l]/boot.def" ;
}

if(kindOfProduct == `BUDG`){
 template      BUDG "budg/boot.def" ;
}

if(kindOfProduct == `TIDE`){
 template      TIDE "tide/boot.def" ;
}

if(kindOfProduct == `BUFR`){
 template      BUFR "bufr/boot.def" ;
 constant  BUFRstr="BUFR";
 alias ls.identifier=BUFRstr;
}

if(kindOfProduct == `CDFX`){
 template      CDF "cdf/boot.def" ;
 constant  CDFstr="netCDF";
 alias ls.identifier=CDFstr;
}

if(kindOfProduct == 17632522 ){
 template      GTS "gts/boot.def" ;
 constant GTSstr="GTS";
 alias ls.identifier=GTSstr;
}

if(kindOfProduct == 2303214662){
 template      HDF5 "hdf5/boot.def" ;
 constant  HDF5str="HDF5";
 alias ls.identifier=HDF5str;
}

if(kindOfProduct == `WRAP`){
 template      WRAP "wrap/boot.def" ;
 constant  WRAPstr="WRAP";
 alias ls.identifier=WRAPstr;
}
