# (C) Copyright 2005- ECMWF.

# TEMPLATE 7.51, Spherical harmonics - complex packing

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";
