# Copyright 2005-2018 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.
#

# TEMPLATE 7.51, Spherical harmonics - complex packing
# Octets 6-(5+I*TS) : Data values from the unpacked subset
# (IEEE floating-point values on I octets)
# ????          data_values_from_the_unpacked_subset

constant GRIBEXShBugPresent = 0;
constant sphericalHarmonics = 1;
constant complexPacking = 1;

meta codedValues data_g2complex_packing(
          section7Length,
          offsetBeforeData,
          offsetSection7,

          unitsFactor,
      	  unitsBias,
          changingPrecision,
          numberOfValues,
          bitsPerValue,
          referenceValue,
          binaryScaleFactor,
          decimalScaleFactor,
          optimizeScaleFactor,

          GRIBEXShBugPresent,
          unpackedSubsetPrecision,

          laplacianOperatorIsSet,
          laplacianOperator,

          subSetJ,
          subSetK,
          subSetM,

          pentagonalResolutionParameterJ,
          pentagonalResolutionParameterK,
          pentagonalResolutionParameterM,

          numberOfValues
      ): read_only;

 meta data.packedValues data_sh_packed(
          section7Length,
          offsetBeforeData,
          offsetSection7,

          unitsFactor,
          unitsBias,
          changingPrecision,
          numberOfValues,
          bitsPerValue,
          referenceValue,
          binaryScaleFactor,
          decimalScaleFactor,
          optimizeScaleFactor,

          GRIBEXShBugPresent,
          unpackedSubsetPrecision,

          laplacianOperatorIsSet,
          laplacianOperator,

          subSetJ,
          subSetK,
          subSetM,

          pentagonalResolutionParameterJ,
          pentagonalResolutionParameterK,
          pentagonalResolutionParameterM
 ) : read_only;

 meta data.unpackedValues data_sh_unpacked(
          section7Length,
          offsetBeforeData,
          offsetSection7,

          unitsFactor,
          unitsBias,
          changingPrecision,
          numberOfValues,
          bitsPerValue,
          referenceValue,
          binaryScaleFactor,
          decimalScaleFactor,
          optimizeScaleFactor,

          GRIBEXShBugPresent,
          unpackedSubsetPrecision,

          laplacianOperatorIsSet,
          laplacianOperator,

          subSetJ,
          subSetK,
          subSetM,

          pentagonalResolutionParameterJ,
          pentagonalResolutionParameterK,
          pentagonalResolutionParameterM
 ) : read_only;

meta packingError simple_packing_error(bitsPerValue,binaryScaleFactor,decimalScaleFactor,referenceValue,ieee) : no_copy;
meta unpackedError simple_packing_error(zero,binaryScaleFactor,decimalScaleFactor,referenceValue,ieee) : no_copy;

meta values data_apply_bitmap(codedValues,
                                bitmap,
                                missingValue,
                                binaryScaleFactor,
                                numberOfDataPoints,
                                numberOfValues) : dump;

template statistics "common/statistics_spectral.def";
