////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
// All rights reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: Parameter Parser V7.4.1 (8cca6579792b9fcef3bc725ff070c5ec453c7c85)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  tf_2_0_1.cpp
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "tf_2_0_1.h"
#include "parametersetmanager.h"

TF_2_0_1_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// SetValue/GetValue Functions
/// Gets or sets the requested value
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool mod_tf20_pass_reserve_dataType::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "pass_trigger") == 0)
    {
        ParameterUtils::DoubleToString((double)(UINT32)pass_trigger, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "pass_data") == 0)
    {
        __result = pass_data.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool mod_tf20_pass_reserve_dataType::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "pass_trigger") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            pass_trigger = (ispglobalelements::trigger_pass)(UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "pass_data") == 0)
    {
        __result = pass_data.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool mod_tf20_pass_reserve_dataType::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // pass_trigger
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("pass_trigger", ParameterParserDataType::Enum, (double)(UINT32)pass_trigger, 0));
    }
    else if (PARAMETER_STRCMP(__name, "pass_trigger") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Enum, (double)(UINT32)pass_trigger, 0));
    }

    // pass_data
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("pass_data", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "pass_data") == 0)
    {
        __result = pass_data.GetInfo(&__path[__pos], __info);
    }

    return __result;
}

bool mod_tf20_pass_reserve_dataType::pass_dataStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "blending_mode") == 0)
    {
        ParameterUtils::DoubleToString((double)blending_mode, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "is_anr_strength_blender_mode") == 0)
    {
        ParameterUtils::DoubleToString((double)is_anr_strength_blender_mode, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "disable_luma_ghost_detection") == 0)
    {
        ParameterUtils::DoubleToString((double)disable_luma_ghost_detection, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "disable_chroma_ghost_detection") == 0)
    {
        ParameterUtils::DoubleToString((double)disable_chroma_ghost_detection, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "enable_lnr") == 0)
    {
        ParameterUtils::DoubleToString((double)enable_lnr, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_uv_limit") == 0)
    {
        ParameterUtils::DoubleToString((double)noise_params_y_uv_limit, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_uv_limit") == 0)
    {
        ParameterUtils::DoubleToString((double)noise_params_cb_uv_limit, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_uv_limit") == 0)
    {
        ParameterUtils::DoubleToString((double)noise_params_cr_uv_limit, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "use_anr_for_decisions_y") == 0)
    {
        ParameterUtils::DoubleToString((double)use_anr_for_decisions_y, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "use_anr_for_decisions_c") == 0)
    {
        ParameterUtils::DoubleToString((double)use_anr_for_decisions_c, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "enable_noise_est_by_luma") == 0)
    {
        ParameterUtils::DoubleToString((double)enable_noise_est_by_luma, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "enable_noise_est_by_chroma") == 0)
    {
        ParameterUtils::DoubleToString((double)enable_noise_est_by_chroma, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "padding_by_reflection_override") == 0)
    {
        ParameterUtils::DoubleToString((double)padding_by_reflection_override, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "padding_by_reflection") == 0)
    {
        ParameterUtils::DoubleToString((double)padding_by_reflection, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "morph_erode_en") == 0)
    {
        ParameterUtils::DoubleToString((double)morph_erode_en, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "morph_dilate_en") == 0)
    {
        ParameterUtils::DoubleToString((double)morph_dilate_en, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "smear_inputs_for_decisions") == 0)
    {
        ParameterUtils::DoubleToString((double)smear_inputs_for_decisions, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "indications_premultiply_factor") == 0)
    {
        ParameterUtils::DoubleToString((double)indications_premultiply_factor, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "invert_temporal_blending_weights") == 0)
    {
        ParameterUtils::DoubleToString((double)invert_temporal_blending_weights, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool mod_tf20_pass_reserve_dataType::pass_dataStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "blending_mode") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            blending_mode = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "is_anr_strength_blender_mode") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            is_anr_strength_blender_mode = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "disable_luma_ghost_detection") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            disable_luma_ghost_detection = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "disable_chroma_ghost_detection") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            disable_chroma_ghost_detection = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "enable_lnr") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable_lnr = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_uv_limit") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            noise_params_y_uv_limit = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_uv_limit") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            noise_params_cb_uv_limit = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_uv_limit") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            noise_params_cr_uv_limit = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "use_anr_for_decisions_y") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            use_anr_for_decisions_y = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "use_anr_for_decisions_c") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            use_anr_for_decisions_c = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "enable_noise_est_by_luma") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable_noise_est_by_luma = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "enable_noise_est_by_chroma") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable_noise_est_by_chroma = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "padding_by_reflection_override") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            padding_by_reflection_override = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "padding_by_reflection") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            padding_by_reflection = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "morph_erode_en") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            morph_erode_en = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "morph_dilate_en") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            morph_dilate_en = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "smear_inputs_for_decisions") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            smear_inputs_for_decisions = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "indications_premultiply_factor") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            indications_premultiply_factor = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "invert_temporal_blending_weights") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            invert_temporal_blending_weights = (UINT32)dblValue; 
        }
    }

    return __result;
}

bool mod_tf20_pass_reserve_dataType::pass_dataStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // blending_mode
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("blending_mode", ParameterParserDataType::UInt32, (double)blending_mode, 0));
    }
    else if (PARAMETER_STRCMP(__name, "blending_mode") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)blending_mode, 0));
    }

    // is_anr_strength_blender_mode
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("is_anr_strength_blender_mode", ParameterParserDataType::UInt32, (double)is_anr_strength_blender_mode, 0));
    }
    else if (PARAMETER_STRCMP(__name, "is_anr_strength_blender_mode") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)is_anr_strength_blender_mode, 0));
    }

    // disable_luma_ghost_detection
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("disable_luma_ghost_detection", ParameterParserDataType::UInt32, (double)disable_luma_ghost_detection, 0));
    }
    else if (PARAMETER_STRCMP(__name, "disable_luma_ghost_detection") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)disable_luma_ghost_detection, 0));
    }

    // disable_chroma_ghost_detection
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("disable_chroma_ghost_detection", ParameterParserDataType::UInt32, (double)disable_chroma_ghost_detection, 0));
    }
    else if (PARAMETER_STRCMP(__name, "disable_chroma_ghost_detection") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)disable_chroma_ghost_detection, 0));
    }

    // enable_lnr
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("enable_lnr", ParameterParserDataType::UInt32, (double)enable_lnr, 0));
    }
    else if (PARAMETER_STRCMP(__name, "enable_lnr") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)enable_lnr, 0));
    }

    // noise_params_y_uv_limit
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_y_uv_limit", ParameterParserDataType::UInt32, (double)noise_params_y_uv_limit, 0));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_uv_limit") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)noise_params_y_uv_limit, 0));
    }

    // noise_params_cb_uv_limit
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cb_uv_limit", ParameterParserDataType::UInt32, (double)noise_params_cb_uv_limit, 0));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_uv_limit") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)noise_params_cb_uv_limit, 0));
    }

    // noise_params_cr_uv_limit
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cr_uv_limit", ParameterParserDataType::UInt32, (double)noise_params_cr_uv_limit, 0));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_uv_limit") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)noise_params_cr_uv_limit, 0));
    }

    // use_anr_for_decisions_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("use_anr_for_decisions_y", ParameterParserDataType::UInt32, (double)use_anr_for_decisions_y, 0));
    }
    else if (PARAMETER_STRCMP(__name, "use_anr_for_decisions_y") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)use_anr_for_decisions_y, 0));
    }

    // use_anr_for_decisions_c
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("use_anr_for_decisions_c", ParameterParserDataType::UInt32, (double)use_anr_for_decisions_c, 0));
    }
    else if (PARAMETER_STRCMP(__name, "use_anr_for_decisions_c") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)use_anr_for_decisions_c, 0));
    }

    // enable_noise_est_by_luma
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("enable_noise_est_by_luma", ParameterParserDataType::UInt32, (double)enable_noise_est_by_luma, 0));
    }
    else if (PARAMETER_STRCMP(__name, "enable_noise_est_by_luma") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)enable_noise_est_by_luma, 0));
    }

    // enable_noise_est_by_chroma
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("enable_noise_est_by_chroma", ParameterParserDataType::UInt32, (double)enable_noise_est_by_chroma, 0));
    }
    else if (PARAMETER_STRCMP(__name, "enable_noise_est_by_chroma") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)enable_noise_est_by_chroma, 0));
    }

    // padding_by_reflection_override
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("padding_by_reflection_override", ParameterParserDataType::UInt32, (double)padding_by_reflection_override, 0));
    }
    else if (PARAMETER_STRCMP(__name, "padding_by_reflection_override") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)padding_by_reflection_override, 0));
    }

    // padding_by_reflection
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("padding_by_reflection", ParameterParserDataType::UInt32, (double)padding_by_reflection, 0));
    }
    else if (PARAMETER_STRCMP(__name, "padding_by_reflection") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)padding_by_reflection, 0));
    }

    // morph_erode_en
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("morph_erode_en", ParameterParserDataType::UInt32, (double)morph_erode_en, 0));
    }
    else if (PARAMETER_STRCMP(__name, "morph_erode_en") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)morph_erode_en, 0));
    }

    // morph_dilate_en
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("morph_dilate_en", ParameterParserDataType::UInt32, (double)morph_dilate_en, 0));
    }
    else if (PARAMETER_STRCMP(__name, "morph_dilate_en") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)morph_dilate_en, 0));
    }

    // smear_inputs_for_decisions
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("smear_inputs_for_decisions", ParameterParserDataType::UInt32, (double)smear_inputs_for_decisions, 0));
    }
    else if (PARAMETER_STRCMP(__name, "smear_inputs_for_decisions") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)smear_inputs_for_decisions, 0));
    }

    // indications_premultiply_factor
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("indications_premultiply_factor", ParameterParserDataType::UInt32, (double)indications_premultiply_factor, 0));
    }
    else if (PARAMETER_STRCMP(__name, "indications_premultiply_factor") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)indications_premultiply_factor, 0));
    }

    // invert_temporal_blending_weights
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("invert_temporal_blending_weights", ParameterParserDataType::UInt32, (double)invert_temporal_blending_weights, 0));
    }
    else if (PARAMETER_STRCMP(__name, "invert_temporal_blending_weights") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)invert_temporal_blending_weights, 0));
    }

    return __result;
}

bool chromatix_tf20_reserveType::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "mod_tf20_pass_reserve_data") == 0)
    {
        if (__index < mod_tf20_pass_reserve_dataFixedCount)
        {
            __result = mod_tf20_pass_reserve_data[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool chromatix_tf20_reserveType::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "mod_tf20_pass_reserve_data") == 0)
    {
        if (__index < mod_tf20_pass_reserve_dataFixedCount)
        {
            __result = mod_tf20_pass_reserve_data[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool chromatix_tf20_reserveType::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // mod_tf20_pass_reserve_data
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("mod_tf20_pass_reserve_data", ParameterParserDataType::Structure, true, false, mod_tf20_pass_reserve_dataFixedCount));
    }
    else if (PARAMETER_STRCMP(__name, "mod_tf20_pass_reserve_data") == 0)
    {
        if (__index < mod_tf20_pass_reserve_dataFixedCount)
        {
            __result = mod_tf20_pass_reserve_data[__index].GetInfo(&__path[__pos], __info);
        }
        else
        {
            __result = true;
            __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Structure, true, false, mod_tf20_pass_reserve_dataFixedCount));
        }
    }

    return __result;
}

bool tf20_rgn_dataType::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "en") == 0)
    {
        ParameterUtils::DoubleToString((double)en, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_ytb_tab") == 0)
    {
        __result = noise_params_y_ytb_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_ctb_tab") == 0)
    {
        __result = noise_params_y_ctb_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_top_lim") == 0)
    {
        ParameterUtils::DoubleToString((double)noise_params_y_top_lim, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_bot_lim") == 0)
    {
        ParameterUtils::DoubleToString((double)noise_params_y_bot_lim, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_ytb_tab") == 0)
    {
        __result = noise_params_cb_ytb_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_ctb_tab") == 0)
    {
        __result = noise_params_cb_ctb_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_top_lim") == 0)
    {
        ParameterUtils::DoubleToString((double)noise_params_cb_top_lim, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_bot_lim") == 0)
    {
        ParameterUtils::DoubleToString((double)noise_params_cb_bot_lim, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_ytb_tab") == 0)
    {
        __result = noise_params_cr_ytb_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_ctb_tab") == 0)
    {
        __result = noise_params_cr_ctb_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_top_lim") == 0)
    {
        ParameterUtils::DoubleToString((double)noise_params_cr_top_lim, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_bot_lim") == 0)
    {
        ParameterUtils::DoubleToString((double)noise_params_cr_bot_lim, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a2_max_y") == 0)
    {
        ParameterUtils::DoubleToString((double)a2_max_y, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a2_min_y") == 0)
    {
        ParameterUtils::DoubleToString((double)a2_min_y, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a2_slope_y") == 0)
    {
        ParameterUtils::DoubleToString((double)a2_slope_y, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a2_max_c") == 0)
    {
        ParameterUtils::DoubleToString((double)a2_max_c, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a2_min_c") == 0)
    {
        ParameterUtils::DoubleToString((double)a2_min_c, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a2_slope_c") == 0)
    {
        ParameterUtils::DoubleToString((double)a2_slope_c, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "is_same_blending_for_all_frequencies") == 0)
    {
        ParameterUtils::DoubleToString((double)is_same_blending_for_all_frequencies, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fs_to_a1_map_y_tab") == 0)
    {
        __result = fs_to_a1_map_y_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fs_to_a1_map_c_tab") == 0)
    {
        __result = fs_to_a1_map_c_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fs_to_a4_map_y_tab") == 0)
    {
        __result = fs_to_a4_map_y_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fs_to_a4_map_c_tab") == 0)
    {
        __result = fs_to_a4_map_c_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "dither_y") == 0)
    {
        ParameterUtils::DoubleToString((double)dither_y, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "dither_cb") == 0)
    {
        ParameterUtils::DoubleToString((double)dither_cb, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "dither_cr") == 0)
    {
        ParameterUtils::DoubleToString((double)dither_cr, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lnr_lut_y_tab") == 0)
    {
        __result = lnr_lut_y_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "lnr_lut_c_tab") == 0)
    {
        __result = lnr_lut_c_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "lnr_opt_center_x") == 0)
    {
        ParameterUtils::DoubleToString((double)lnr_opt_center_x, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lnr_opt_center_y") == 0)
    {
        ParameterUtils::DoubleToString((double)lnr_opt_center_y, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lnr_ellipses_bounding_rect_w") == 0)
    {
        ParameterUtils::DoubleToString((double)lnr_ellipses_bounding_rect_w, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lnr_ellipses_bounding_rect_h") == 0)
    {
        ParameterUtils::DoubleToString((double)lnr_ellipses_bounding_rect_h, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c1_tab") == 0)
    {
        __result = fs_decision_params_y_c1_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c2_tab") == 0)
    {
        __result = fs_decision_params_y_c2_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c3_tab") == 0)
    {
        __result = fs_decision_params_y_c3_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c4_tab") == 0)
    {
        __result = fs_decision_params_y_c4_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_y_c1") == 0)
    {
        ParameterUtils::DoubleToString((double)fs_decision_params_oof_y_c1, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_y_c2") == 0)
    {
        ParameterUtils::DoubleToString((double)fs_decision_params_oof_y_c2, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_y_c3") == 0)
    {
        ParameterUtils::DoubleToString((double)fs_decision_params_oof_y_c3, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_y_c4") == 0)
    {
        ParameterUtils::DoubleToString((double)fs_decision_params_oof_y_c4, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c1_tab") == 0)
    {
        __result = fs_decision_params_c_c1_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c2_tab") == 0)
    {
        __result = fs_decision_params_c_c2_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c3_tab") == 0)
    {
        __result = fs_decision_params_c_c3_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c4_tab") == 0)
    {
        __result = fs_decision_params_c_c4_tab.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_c_c1") == 0)
    {
        ParameterUtils::DoubleToString((double)fs_decision_params_oof_c_c1, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_c_c2") == 0)
    {
        ParameterUtils::DoubleToString((double)fs_decision_params_oof_c_c2, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_c_c3") == 0)
    {
        ParameterUtils::DoubleToString((double)fs_decision_params_oof_c_c3, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_c_c4") == 0)
    {
        ParameterUtils::DoubleToString((double)fs_decision_params_oof_c_c4, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "apply_fs_rank_filter") == 0)
    {
        ParameterUtils::DoubleToString((double)apply_fs_rank_filter, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "apply_fs_lpf") == 0)
    {
        ParameterUtils::DoubleToString((double)apply_fs_lpf, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "sad_y_calc_mode") == 0)
    {
        ParameterUtils::DoubleToString((double)sad_y_calc_mode, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "sad_c_calc_mode") == 0)
    {
        ParameterUtils::DoubleToString((double)sad_c_calc_mode, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "use_indications") == 0)
    {
        ParameterUtils::DoubleToString((double)use_indications, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "indications_affect_fs_decision_also_directly") == 0)
    {
        ParameterUtils::DoubleToString((double)indications_affect_fs_decision_also_directly, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "morph_erode_size") == 0)
    {
        ParameterUtils::DoubleToString((double)morph_erode_size, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "morph_dilate_size") == 0)
    {
        ParameterUtils::DoubleToString((double)morph_dilate_size, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "tr_enable") == 0)
    {
        ParameterUtils::DoubleToString((double)tr_enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "tr_block_num_x") == 0)
    {
        ParameterUtils::DoubleToString((double)tr_block_num_x, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "tr_block_num_y") == 0)
    {
        ParameterUtils::DoubleToString((double)tr_block_num_y, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "tr_fs_threshold") == 0)
    {
        ParameterUtils::DoubleToString((double)tr_fs_threshold, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "tr_dead_zone") == 0)
    {
        ParameterUtils::DoubleToString((double)tr_dead_zone, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "tr_count_percentage_threshold") == 0)
    {
        ParameterUtils::DoubleToString((double)tr_count_percentage_threshold, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "out_of_frame_pixels_confidence") == 0)
    {
        ParameterUtils::DoubleToString((double)out_of_frame_pixels_confidence, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "is_dci_mode") == 0)
    {
        ParameterUtils::DoubleToString((double)is_dci_mode, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a3_t1_scale_y") == 0)
    {
        ParameterUtils::DoubleToString((double)a3_t1_scale_y, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a3_t1_offs_y") == 0)
    {
        ParameterUtils::DoubleToString((double)a3_t1_offs_y, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a3_t2_scale_y") == 0)
    {
        ParameterUtils::DoubleToString((double)a3_t2_scale_y, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a3_t2_offs_y") == 0)
    {
        ParameterUtils::DoubleToString((double)a3_t2_offs_y, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a3_t1_scale_c") == 0)
    {
        ParameterUtils::DoubleToString((double)a3_t1_scale_c, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a3_t1_offs_c") == 0)
    {
        ParameterUtils::DoubleToString((double)a3_t1_offs_c, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a3_t2_scale_c") == 0)
    {
        ParameterUtils::DoubleToString((double)a3_t2_scale_c, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "a3_t2_offs_c") == 0)
    {
        ParameterUtils::DoubleToString((double)a3_t2_offs_c, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "constant_blending_factor_y") == 0)
    {
        ParameterUtils::DoubleToString((double)constant_blending_factor_y, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "constant_blending_factor_c") == 0)
    {
        ParameterUtils::DoubleToString((double)constant_blending_factor_c, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "video_first_frame_spatial_nr_percentage") == 0)
    {
        ParameterUtils::DoubleToString((double)video_first_frame_spatial_nr_percentage, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "scene_cut_recovery_time") == 0)
    {
        ParameterUtils::DoubleToString((double)scene_cut_recovery_time, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_luma_min_strength_high_freq") == 0)
    {
        ParameterUtils::DoubleToString((double)anr_final_blender_luma_min_strength_high_freq, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_luma_min_strength_low_freq") == 0)
    {
        ParameterUtils::DoubleToString((double)anr_final_blender_luma_min_strength_low_freq, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_chroma_min_strength_high_freq") == 0)
    {
        ParameterUtils::DoubleToString((double)anr_final_blender_chroma_min_strength_high_freq, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_chroma_min_strength_low_freq") == 0)
    {
        ParameterUtils::DoubleToString((double)anr_final_blender_chroma_min_strength_low_freq, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_strength_decision_ythr_low") == 0)
    {
        ParameterUtils::DoubleToString((double)anr_final_blender_strength_decision_ythr_low, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_strength_decision_ythr_high") == 0)
    {
        ParameterUtils::DoubleToString((double)anr_final_blender_strength_decision_ythr_high, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_strength_decision_cthr_low") == 0)
    {
        ParameterUtils::DoubleToString((double)anr_final_blender_strength_decision_cthr_low, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_strength_decision_cthr_high") == 0)
    {
        ParameterUtils::DoubleToString((double)anr_final_blender_strength_decision_cthr_high, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lmc_enable") == 0)
    {
        ParameterUtils::DoubleToString((double)lmc_enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lmc_default_sad_c1") == 0)
    {
        ParameterUtils::DoubleToString((double)lmc_default_sad_c1, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lmc_default_sad_c2") == 0)
    {
        ParameterUtils::DoubleToString((double)lmc_default_sad_c2, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lmc_sad_c1") == 0)
    {
        ParameterUtils::DoubleToString((double)lmc_sad_c1, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lmc_sad_c2") == 0)
    {
        ParameterUtils::DoubleToString((double)lmc_sad_c2, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lmc_smoothness_m") == 0)
    {
        ParameterUtils::DoubleToString((double)lmc_smoothness_m, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lmc_smoothness_a") == 0)
    {
        ParameterUtils::DoubleToString((double)lmc_smoothness_a, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lmc_max_x") == 0)
    {
        ParameterUtils::DoubleToString((double)lmc_max_x, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lmc_max_y") == 0)
    {
        ParameterUtils::DoubleToString((double)lmc_max_y, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lmc_conf") == 0)
    {
        ParameterUtils::DoubleToString((double)lmc_conf, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lmc_irreg") == 0)
    {
        ParameterUtils::DoubleToString((double)lmc_irreg, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lmc_mv_diff_thr") == 0)
    {
        ParameterUtils::DoubleToString((double)lmc_mv_diff_thr, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool tf20_rgn_dataType::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "en") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            en = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_ytb_tab") == 0)
    {
        __result = noise_params_y_ytb_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_ctb_tab") == 0)
    {
        __result = noise_params_y_ctb_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_top_lim") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            noise_params_y_top_lim = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_bot_lim") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            noise_params_y_bot_lim = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_ytb_tab") == 0)
    {
        __result = noise_params_cb_ytb_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_ctb_tab") == 0)
    {
        __result = noise_params_cb_ctb_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_top_lim") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            noise_params_cb_top_lim = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_bot_lim") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            noise_params_cb_bot_lim = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_ytb_tab") == 0)
    {
        __result = noise_params_cr_ytb_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_ctb_tab") == 0)
    {
        __result = noise_params_cr_ctb_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_top_lim") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            noise_params_cr_top_lim = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_bot_lim") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            noise_params_cr_bot_lim = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a2_max_y") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a2_max_y = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a2_min_y") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a2_min_y = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a2_slope_y") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a2_slope_y = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a2_max_c") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a2_max_c = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a2_min_c") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a2_min_c = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a2_slope_c") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a2_slope_c = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "is_same_blending_for_all_frequencies") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            is_same_blending_for_all_frequencies = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fs_to_a1_map_y_tab") == 0)
    {
        __result = fs_to_a1_map_y_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fs_to_a1_map_c_tab") == 0)
    {
        __result = fs_to_a1_map_c_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fs_to_a4_map_y_tab") == 0)
    {
        __result = fs_to_a4_map_y_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fs_to_a4_map_c_tab") == 0)
    {
        __result = fs_to_a4_map_c_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "dither_y") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            dither_y = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "dither_cb") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            dither_cb = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "dither_cr") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            dither_cr = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lnr_lut_y_tab") == 0)
    {
        __result = lnr_lut_y_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "lnr_lut_c_tab") == 0)
    {
        __result = lnr_lut_c_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "lnr_opt_center_x") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lnr_opt_center_x = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lnr_opt_center_y") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lnr_opt_center_y = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lnr_ellipses_bounding_rect_w") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lnr_ellipses_bounding_rect_w = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lnr_ellipses_bounding_rect_h") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lnr_ellipses_bounding_rect_h = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c1_tab") == 0)
    {
        __result = fs_decision_params_y_c1_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c2_tab") == 0)
    {
        __result = fs_decision_params_y_c2_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c3_tab") == 0)
    {
        __result = fs_decision_params_y_c3_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c4_tab") == 0)
    {
        __result = fs_decision_params_y_c4_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_y_c1") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fs_decision_params_oof_y_c1 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_y_c2") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fs_decision_params_oof_y_c2 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_y_c3") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fs_decision_params_oof_y_c3 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_y_c4") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fs_decision_params_oof_y_c4 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c1_tab") == 0)
    {
        __result = fs_decision_params_c_c1_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c2_tab") == 0)
    {
        __result = fs_decision_params_c_c2_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c3_tab") == 0)
    {
        __result = fs_decision_params_c_c3_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c4_tab") == 0)
    {
        __result = fs_decision_params_c_c4_tab.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_c_c1") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fs_decision_params_oof_c_c1 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_c_c2") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fs_decision_params_oof_c_c2 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_c_c3") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fs_decision_params_oof_c_c3 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_c_c4") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fs_decision_params_oof_c_c4 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "apply_fs_rank_filter") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            apply_fs_rank_filter = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "apply_fs_lpf") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            apply_fs_lpf = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "sad_y_calc_mode") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            sad_y_calc_mode = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "sad_c_calc_mode") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            sad_c_calc_mode = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "use_indications") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            use_indications = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "indications_affect_fs_decision_also_directly") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            indications_affect_fs_decision_also_directly = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "morph_erode_size") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            morph_erode_size = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "morph_dilate_size") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            morph_dilate_size = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "tr_enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            tr_enable = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "tr_block_num_x") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            tr_block_num_x = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "tr_block_num_y") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            tr_block_num_y = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "tr_fs_threshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            tr_fs_threshold = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "tr_dead_zone") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            tr_dead_zone = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "tr_count_percentage_threshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            tr_count_percentage_threshold = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "out_of_frame_pixels_confidence") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            out_of_frame_pixels_confidence = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "is_dci_mode") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            is_dci_mode = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a3_t1_scale_y") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a3_t1_scale_y = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a3_t1_offs_y") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a3_t1_offs_y = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a3_t2_scale_y") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a3_t2_scale_y = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a3_t2_offs_y") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a3_t2_offs_y = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a3_t1_scale_c") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a3_t1_scale_c = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a3_t1_offs_c") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a3_t1_offs_c = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a3_t2_scale_c") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a3_t2_scale_c = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "a3_t2_offs_c") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            a3_t2_offs_c = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "constant_blending_factor_y") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            constant_blending_factor_y = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "constant_blending_factor_c") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            constant_blending_factor_c = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "video_first_frame_spatial_nr_percentage") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            video_first_frame_spatial_nr_percentage = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "scene_cut_recovery_time") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            scene_cut_recovery_time = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_luma_min_strength_high_freq") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            anr_final_blender_luma_min_strength_high_freq = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_luma_min_strength_low_freq") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            anr_final_blender_luma_min_strength_low_freq = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_chroma_min_strength_high_freq") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            anr_final_blender_chroma_min_strength_high_freq = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_chroma_min_strength_low_freq") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            anr_final_blender_chroma_min_strength_low_freq = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_strength_decision_ythr_low") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            anr_final_blender_strength_decision_ythr_low = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_strength_decision_ythr_high") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            anr_final_blender_strength_decision_ythr_high = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_strength_decision_cthr_low") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            anr_final_blender_strength_decision_cthr_low = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_strength_decision_cthr_high") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            anr_final_blender_strength_decision_cthr_high = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lmc_enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lmc_enable = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lmc_default_sad_c1") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lmc_default_sad_c1 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lmc_default_sad_c2") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lmc_default_sad_c2 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lmc_sad_c1") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lmc_sad_c1 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lmc_sad_c2") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lmc_sad_c2 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lmc_smoothness_m") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lmc_smoothness_m = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lmc_smoothness_a") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lmc_smoothness_a = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lmc_max_x") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lmc_max_x = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lmc_max_y") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lmc_max_y = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lmc_conf") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lmc_conf = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lmc_irreg") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lmc_irreg = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lmc_mv_diff_thr") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lmc_mv_diff_thr = (float)dblValue; 
        }
    }

    return __result;
}

bool tf20_rgn_dataType::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // en
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("en", ParameterParserDataType::UInt32, (double)en, 0));
    }
    else if (PARAMETER_STRCMP(__name, "en") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)en, 0));
    }

    // noise_params_y_ytb_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_y_ytb_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_ytb_tab") == 0)
    {
        __result = noise_params_y_ytb_tab.GetInfo(&__path[__pos], __info);
    }

    // noise_params_y_ctb_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_y_ctb_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_ctb_tab") == 0)
    {
        __result = noise_params_y_ctb_tab.GetInfo(&__path[__pos], __info);
    }

    // noise_params_y_top_lim
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_y_top_lim", ParameterParserDataType::UInt32, (double)noise_params_y_top_lim, 0));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_top_lim") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)noise_params_y_top_lim, 0));
    }

    // noise_params_y_bot_lim
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_y_bot_lim", ParameterParserDataType::UInt32, (double)noise_params_y_bot_lim, 0));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_y_bot_lim") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)noise_params_y_bot_lim, 0));
    }

    // noise_params_cb_ytb_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cb_ytb_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_ytb_tab") == 0)
    {
        __result = noise_params_cb_ytb_tab.GetInfo(&__path[__pos], __info);
    }

    // noise_params_cb_ctb_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cb_ctb_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_ctb_tab") == 0)
    {
        __result = noise_params_cb_ctb_tab.GetInfo(&__path[__pos], __info);
    }

    // noise_params_cb_top_lim
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cb_top_lim", ParameterParserDataType::UInt32, (double)noise_params_cb_top_lim, 0));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_top_lim") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)noise_params_cb_top_lim, 0));
    }

    // noise_params_cb_bot_lim
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cb_bot_lim", ParameterParserDataType::UInt32, (double)noise_params_cb_bot_lim, 0));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cb_bot_lim") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)noise_params_cb_bot_lim, 0));
    }

    // noise_params_cr_ytb_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cr_ytb_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_ytb_tab") == 0)
    {
        __result = noise_params_cr_ytb_tab.GetInfo(&__path[__pos], __info);
    }

    // noise_params_cr_ctb_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cr_ctb_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_ctb_tab") == 0)
    {
        __result = noise_params_cr_ctb_tab.GetInfo(&__path[__pos], __info);
    }

    // noise_params_cr_top_lim
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cr_top_lim", ParameterParserDataType::UInt32, (double)noise_params_cr_top_lim, 0));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_top_lim") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)noise_params_cr_top_lim, 0));
    }

    // noise_params_cr_bot_lim
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cr_bot_lim", ParameterParserDataType::UInt32, (double)noise_params_cr_bot_lim, 0));
    }
    else if (PARAMETER_STRCMP(__name, "noise_params_cr_bot_lim") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)noise_params_cr_bot_lim, 0));
    }

    // a2_max_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a2_max_y", ParameterParserDataType::UInt32, (double)a2_max_y, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a2_max_y") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a2_max_y, 0));
    }

    // a2_min_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a2_min_y", ParameterParserDataType::UInt32, (double)a2_min_y, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a2_min_y") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a2_min_y, 0));
    }

    // a2_slope_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a2_slope_y", ParameterParserDataType::UInt32, (double)a2_slope_y, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a2_slope_y") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a2_slope_y, 0));
    }

    // a2_max_c
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a2_max_c", ParameterParserDataType::UInt32, (double)a2_max_c, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a2_max_c") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a2_max_c, 0));
    }

    // a2_min_c
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a2_min_c", ParameterParserDataType::UInt32, (double)a2_min_c, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a2_min_c") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a2_min_c, 0));
    }

    // a2_slope_c
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a2_slope_c", ParameterParserDataType::UInt32, (double)a2_slope_c, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a2_slope_c") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a2_slope_c, 0));
    }

    // is_same_blending_for_all_frequencies
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("is_same_blending_for_all_frequencies", ParameterParserDataType::UInt32, (double)is_same_blending_for_all_frequencies, 0));
    }
    else if (PARAMETER_STRCMP(__name, "is_same_blending_for_all_frequencies") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)is_same_blending_for_all_frequencies, 0));
    }

    // fs_to_a1_map_y_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_to_a1_map_y_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "fs_to_a1_map_y_tab") == 0)
    {
        __result = fs_to_a1_map_y_tab.GetInfo(&__path[__pos], __info);
    }

    // fs_to_a1_map_c_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_to_a1_map_c_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "fs_to_a1_map_c_tab") == 0)
    {
        __result = fs_to_a1_map_c_tab.GetInfo(&__path[__pos], __info);
    }

    // fs_to_a4_map_y_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_to_a4_map_y_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "fs_to_a4_map_y_tab") == 0)
    {
        __result = fs_to_a4_map_y_tab.GetInfo(&__path[__pos], __info);
    }

    // fs_to_a4_map_c_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_to_a4_map_c_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "fs_to_a4_map_c_tab") == 0)
    {
        __result = fs_to_a4_map_c_tab.GetInfo(&__path[__pos], __info);
    }

    // dither_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("dither_y", ParameterParserDataType::UInt32, (double)dither_y, 0));
    }
    else if (PARAMETER_STRCMP(__name, "dither_y") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)dither_y, 0));
    }

    // dither_cb
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("dither_cb", ParameterParserDataType::UInt32, (double)dither_cb, 0));
    }
    else if (PARAMETER_STRCMP(__name, "dither_cb") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)dither_cb, 0));
    }

    // dither_cr
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("dither_cr", ParameterParserDataType::UInt32, (double)dither_cr, 0));
    }
    else if (PARAMETER_STRCMP(__name, "dither_cr") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)dither_cr, 0));
    }

    // lnr_lut_y_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lnr_lut_y_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "lnr_lut_y_tab") == 0)
    {
        __result = lnr_lut_y_tab.GetInfo(&__path[__pos], __info);
    }

    // lnr_lut_c_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lnr_lut_c_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "lnr_lut_c_tab") == 0)
    {
        __result = lnr_lut_c_tab.GetInfo(&__path[__pos], __info);
    }

    // lnr_opt_center_x
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lnr_opt_center_x", ParameterParserDataType::UInt32, (double)lnr_opt_center_x, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lnr_opt_center_x") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lnr_opt_center_x, 0));
    }

    // lnr_opt_center_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lnr_opt_center_y", ParameterParserDataType::UInt32, (double)lnr_opt_center_y, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lnr_opt_center_y") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lnr_opt_center_y, 0));
    }

    // lnr_ellipses_bounding_rect_w
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lnr_ellipses_bounding_rect_w", ParameterParserDataType::UInt32, (double)lnr_ellipses_bounding_rect_w, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lnr_ellipses_bounding_rect_w") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lnr_ellipses_bounding_rect_w, 0));
    }

    // lnr_ellipses_bounding_rect_h
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lnr_ellipses_bounding_rect_h", ParameterParserDataType::UInt32, (double)lnr_ellipses_bounding_rect_h, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lnr_ellipses_bounding_rect_h") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lnr_ellipses_bounding_rect_h, 0));
    }

    // fs_decision_params_y_c1_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_y_c1_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c1_tab") == 0)
    {
        __result = fs_decision_params_y_c1_tab.GetInfo(&__path[__pos], __info);
    }

    // fs_decision_params_y_c2_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_y_c2_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c2_tab") == 0)
    {
        __result = fs_decision_params_y_c2_tab.GetInfo(&__path[__pos], __info);
    }

    // fs_decision_params_y_c3_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_y_c3_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c3_tab") == 0)
    {
        __result = fs_decision_params_y_c3_tab.GetInfo(&__path[__pos], __info);
    }

    // fs_decision_params_y_c4_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_y_c4_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c4_tab") == 0)
    {
        __result = fs_decision_params_y_c4_tab.GetInfo(&__path[__pos], __info);
    }

    // fs_decision_params_oof_y_c1
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_oof_y_c1", ParameterParserDataType::UInt32, (double)fs_decision_params_oof_y_c1, 0));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_y_c1") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)fs_decision_params_oof_y_c1, 0));
    }

    // fs_decision_params_oof_y_c2
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_oof_y_c2", ParameterParserDataType::UInt32, (double)fs_decision_params_oof_y_c2, 0));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_y_c2") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)fs_decision_params_oof_y_c2, 0));
    }

    // fs_decision_params_oof_y_c3
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_oof_y_c3", ParameterParserDataType::UInt32, (double)fs_decision_params_oof_y_c3, 0));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_y_c3") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)fs_decision_params_oof_y_c3, 0));
    }

    // fs_decision_params_oof_y_c4
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_oof_y_c4", ParameterParserDataType::UInt32, (double)fs_decision_params_oof_y_c4, 0));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_y_c4") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)fs_decision_params_oof_y_c4, 0));
    }

    // fs_decision_params_c_c1_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_c_c1_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c1_tab") == 0)
    {
        __result = fs_decision_params_c_c1_tab.GetInfo(&__path[__pos], __info);
    }

    // fs_decision_params_c_c2_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_c_c2_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c2_tab") == 0)
    {
        __result = fs_decision_params_c_c2_tab.GetInfo(&__path[__pos], __info);
    }

    // fs_decision_params_c_c3_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_c_c3_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c3_tab") == 0)
    {
        __result = fs_decision_params_c_c3_tab.GetInfo(&__path[__pos], __info);
    }

    // fs_decision_params_c_c4_tab
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_c_c4_tab", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c4_tab") == 0)
    {
        __result = fs_decision_params_c_c4_tab.GetInfo(&__path[__pos], __info);
    }

    // fs_decision_params_oof_c_c1
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_oof_c_c1", ParameterParserDataType::UInt32, (double)fs_decision_params_oof_c_c1, 0));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_c_c1") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)fs_decision_params_oof_c_c1, 0));
    }

    // fs_decision_params_oof_c_c2
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_oof_c_c2", ParameterParserDataType::UInt32, (double)fs_decision_params_oof_c_c2, 0));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_c_c2") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)fs_decision_params_oof_c_c2, 0));
    }

    // fs_decision_params_oof_c_c3
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_oof_c_c3", ParameterParserDataType::UInt32, (double)fs_decision_params_oof_c_c3, 0));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_c_c3") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)fs_decision_params_oof_c_c3, 0));
    }

    // fs_decision_params_oof_c_c4
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_oof_c_c4", ParameterParserDataType::UInt32, (double)fs_decision_params_oof_c_c4, 0));
    }
    else if (PARAMETER_STRCMP(__name, "fs_decision_params_oof_c_c4") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)fs_decision_params_oof_c_c4, 0));
    }

    // apply_fs_rank_filter
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("apply_fs_rank_filter", ParameterParserDataType::UInt32, (double)apply_fs_rank_filter, 0));
    }
    else if (PARAMETER_STRCMP(__name, "apply_fs_rank_filter") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)apply_fs_rank_filter, 0));
    }

    // apply_fs_lpf
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("apply_fs_lpf", ParameterParserDataType::UInt32, (double)apply_fs_lpf, 0));
    }
    else if (PARAMETER_STRCMP(__name, "apply_fs_lpf") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)apply_fs_lpf, 0));
    }

    // sad_y_calc_mode
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("sad_y_calc_mode", ParameterParserDataType::UInt32, (double)sad_y_calc_mode, 0));
    }
    else if (PARAMETER_STRCMP(__name, "sad_y_calc_mode") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)sad_y_calc_mode, 0));
    }

    // sad_c_calc_mode
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("sad_c_calc_mode", ParameterParserDataType::UInt32, (double)sad_c_calc_mode, 0));
    }
    else if (PARAMETER_STRCMP(__name, "sad_c_calc_mode") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)sad_c_calc_mode, 0));
    }

    // use_indications
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("use_indications", ParameterParserDataType::UInt32, (double)use_indications, 0));
    }
    else if (PARAMETER_STRCMP(__name, "use_indications") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)use_indications, 0));
    }

    // indications_affect_fs_decision_also_directly
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("indications_affect_fs_decision_also_directly", ParameterParserDataType::UInt32, (double)indications_affect_fs_decision_also_directly, 0));
    }
    else if (PARAMETER_STRCMP(__name, "indications_affect_fs_decision_also_directly") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)indications_affect_fs_decision_also_directly, 0));
    }

    // morph_erode_size
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("morph_erode_size", ParameterParserDataType::UInt32, (double)morph_erode_size, 0));
    }
    else if (PARAMETER_STRCMP(__name, "morph_erode_size") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)morph_erode_size, 0));
    }

    // morph_dilate_size
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("morph_dilate_size", ParameterParserDataType::UInt32, (double)morph_dilate_size, 0));
    }
    else if (PARAMETER_STRCMP(__name, "morph_dilate_size") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)morph_dilate_size, 0));
    }

    // tr_enable
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("tr_enable", ParameterParserDataType::UInt32, (double)tr_enable, 0));
    }
    else if (PARAMETER_STRCMP(__name, "tr_enable") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)tr_enable, 0));
    }

    // tr_block_num_x
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("tr_block_num_x", ParameterParserDataType::UInt32, (double)tr_block_num_x, 0));
    }
    else if (PARAMETER_STRCMP(__name, "tr_block_num_x") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)tr_block_num_x, 0));
    }

    // tr_block_num_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("tr_block_num_y", ParameterParserDataType::UInt32, (double)tr_block_num_y, 0));
    }
    else if (PARAMETER_STRCMP(__name, "tr_block_num_y") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)tr_block_num_y, 0));
    }

    // tr_fs_threshold
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("tr_fs_threshold", ParameterParserDataType::UInt32, (double)tr_fs_threshold, 0));
    }
    else if (PARAMETER_STRCMP(__name, "tr_fs_threshold") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)tr_fs_threshold, 0));
    }

    // tr_dead_zone
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("tr_dead_zone", ParameterParserDataType::UInt32, (double)tr_dead_zone, 0));
    }
    else if (PARAMETER_STRCMP(__name, "tr_dead_zone") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)tr_dead_zone, 0));
    }

    // tr_count_percentage_threshold
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("tr_count_percentage_threshold", ParameterParserDataType::UInt32, (double)tr_count_percentage_threshold, 0));
    }
    else if (PARAMETER_STRCMP(__name, "tr_count_percentage_threshold") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)tr_count_percentage_threshold, 0));
    }

    // out_of_frame_pixels_confidence
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("out_of_frame_pixels_confidence", ParameterParserDataType::UInt32, (double)out_of_frame_pixels_confidence, 0));
    }
    else if (PARAMETER_STRCMP(__name, "out_of_frame_pixels_confidence") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)out_of_frame_pixels_confidence, 0));
    }

    // is_dci_mode
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("is_dci_mode", ParameterParserDataType::UInt32, (double)is_dci_mode, 0));
    }
    else if (PARAMETER_STRCMP(__name, "is_dci_mode") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)is_dci_mode, 0));
    }

    // a3_t1_scale_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a3_t1_scale_y", ParameterParserDataType::UInt32, (double)a3_t1_scale_y, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a3_t1_scale_y") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a3_t1_scale_y, 0));
    }

    // a3_t1_offs_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a3_t1_offs_y", ParameterParserDataType::UInt32, (double)a3_t1_offs_y, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a3_t1_offs_y") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a3_t1_offs_y, 0));
    }

    // a3_t2_scale_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a3_t2_scale_y", ParameterParserDataType::UInt32, (double)a3_t2_scale_y, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a3_t2_scale_y") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a3_t2_scale_y, 0));
    }

    // a3_t2_offs_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a3_t2_offs_y", ParameterParserDataType::UInt32, (double)a3_t2_offs_y, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a3_t2_offs_y") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a3_t2_offs_y, 0));
    }

    // a3_t1_scale_c
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a3_t1_scale_c", ParameterParserDataType::UInt32, (double)a3_t1_scale_c, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a3_t1_scale_c") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a3_t1_scale_c, 0));
    }

    // a3_t1_offs_c
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a3_t1_offs_c", ParameterParserDataType::UInt32, (double)a3_t1_offs_c, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a3_t1_offs_c") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a3_t1_offs_c, 0));
    }

    // a3_t2_scale_c
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a3_t2_scale_c", ParameterParserDataType::UInt32, (double)a3_t2_scale_c, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a3_t2_scale_c") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a3_t2_scale_c, 0));
    }

    // a3_t2_offs_c
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("a3_t2_offs_c", ParameterParserDataType::UInt32, (double)a3_t2_offs_c, 0));
    }
    else if (PARAMETER_STRCMP(__name, "a3_t2_offs_c") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)a3_t2_offs_c, 0));
    }

    // constant_blending_factor_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("constant_blending_factor_y", ParameterParserDataType::UInt32, (double)constant_blending_factor_y, 0));
    }
    else if (PARAMETER_STRCMP(__name, "constant_blending_factor_y") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)constant_blending_factor_y, 0));
    }

    // constant_blending_factor_c
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("constant_blending_factor_c", ParameterParserDataType::UInt32, (double)constant_blending_factor_c, 0));
    }
    else if (PARAMETER_STRCMP(__name, "constant_blending_factor_c") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)constant_blending_factor_c, 0));
    }

    // video_first_frame_spatial_nr_percentage
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("video_first_frame_spatial_nr_percentage", ParameterParserDataType::UInt32, (double)video_first_frame_spatial_nr_percentage, 0));
    }
    else if (PARAMETER_STRCMP(__name, "video_first_frame_spatial_nr_percentage") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)video_first_frame_spatial_nr_percentage, 0));
    }

    // scene_cut_recovery_time
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("scene_cut_recovery_time", ParameterParserDataType::UInt32, (double)scene_cut_recovery_time, 0));
    }
    else if (PARAMETER_STRCMP(__name, "scene_cut_recovery_time") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)scene_cut_recovery_time, 0));
    }

    // anr_final_blender_luma_min_strength_high_freq
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("anr_final_blender_luma_min_strength_high_freq", ParameterParserDataType::UInt32, (double)anr_final_blender_luma_min_strength_high_freq, 0));
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_luma_min_strength_high_freq") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)anr_final_blender_luma_min_strength_high_freq, 0));
    }

    // anr_final_blender_luma_min_strength_low_freq
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("anr_final_blender_luma_min_strength_low_freq", ParameterParserDataType::UInt32, (double)anr_final_blender_luma_min_strength_low_freq, 0));
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_luma_min_strength_low_freq") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)anr_final_blender_luma_min_strength_low_freq, 0));
    }

    // anr_final_blender_chroma_min_strength_high_freq
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("anr_final_blender_chroma_min_strength_high_freq", ParameterParserDataType::UInt32, (double)anr_final_blender_chroma_min_strength_high_freq, 0));
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_chroma_min_strength_high_freq") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)anr_final_blender_chroma_min_strength_high_freq, 0));
    }

    // anr_final_blender_chroma_min_strength_low_freq
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("anr_final_blender_chroma_min_strength_low_freq", ParameterParserDataType::UInt32, (double)anr_final_blender_chroma_min_strength_low_freq, 0));
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_chroma_min_strength_low_freq") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)anr_final_blender_chroma_min_strength_low_freq, 0));
    }

    // anr_final_blender_strength_decision_ythr_low
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("anr_final_blender_strength_decision_ythr_low", ParameterParserDataType::UInt32, (double)anr_final_blender_strength_decision_ythr_low, 0));
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_strength_decision_ythr_low") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)anr_final_blender_strength_decision_ythr_low, 0));
    }

    // anr_final_blender_strength_decision_ythr_high
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("anr_final_blender_strength_decision_ythr_high", ParameterParserDataType::UInt32, (double)anr_final_blender_strength_decision_ythr_high, 0));
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_strength_decision_ythr_high") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)anr_final_blender_strength_decision_ythr_high, 0));
    }

    // anr_final_blender_strength_decision_cthr_low
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("anr_final_blender_strength_decision_cthr_low", ParameterParserDataType::UInt32, (double)anr_final_blender_strength_decision_cthr_low, 0));
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_strength_decision_cthr_low") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)anr_final_blender_strength_decision_cthr_low, 0));
    }

    // anr_final_blender_strength_decision_cthr_high
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("anr_final_blender_strength_decision_cthr_high", ParameterParserDataType::UInt32, (double)anr_final_blender_strength_decision_cthr_high, 0));
    }
    else if (PARAMETER_STRCMP(__name, "anr_final_blender_strength_decision_cthr_high") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)anr_final_blender_strength_decision_cthr_high, 0));
    }

    // lmc_enable
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lmc_enable", ParameterParserDataType::UInt32, (double)lmc_enable, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lmc_enable") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lmc_enable, 0));
    }

    // lmc_default_sad_c1
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lmc_default_sad_c1", ParameterParserDataType::UInt32, (double)lmc_default_sad_c1, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lmc_default_sad_c1") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lmc_default_sad_c1, 0));
    }

    // lmc_default_sad_c2
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lmc_default_sad_c2", ParameterParserDataType::UInt32, (double)lmc_default_sad_c2, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lmc_default_sad_c2") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lmc_default_sad_c2, 0));
    }

    // lmc_sad_c1
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lmc_sad_c1", ParameterParserDataType::UInt32, (double)lmc_sad_c1, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lmc_sad_c1") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lmc_sad_c1, 0));
    }

    // lmc_sad_c2
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lmc_sad_c2", ParameterParserDataType::UInt32, (double)lmc_sad_c2, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lmc_sad_c2") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lmc_sad_c2, 0));
    }

    // lmc_smoothness_m
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lmc_smoothness_m", ParameterParserDataType::UInt32, (double)lmc_smoothness_m, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lmc_smoothness_m") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lmc_smoothness_m, 0));
    }

    // lmc_smoothness_a
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lmc_smoothness_a", ParameterParserDataType::UInt32, (double)lmc_smoothness_a, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lmc_smoothness_a") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lmc_smoothness_a, 0));
    }

    // lmc_max_x
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lmc_max_x", ParameterParserDataType::UInt32, (double)lmc_max_x, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lmc_max_x") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lmc_max_x, 0));
    }

    // lmc_max_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lmc_max_y", ParameterParserDataType::UInt32, (double)lmc_max_y, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lmc_max_y") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lmc_max_y, 0));
    }

    // lmc_conf
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lmc_conf", ParameterParserDataType::Float, (double)lmc_conf));
    }
    else if (PARAMETER_STRCMP(__name, "lmc_conf") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Float, (double)lmc_conf));
    }

    // lmc_irreg
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lmc_irreg", ParameterParserDataType::Float, (double)lmc_irreg));
    }
    else if (PARAMETER_STRCMP(__name, "lmc_irreg") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Float, (double)lmc_irreg));
    }

    // lmc_mv_diff_thr
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lmc_mv_diff_thr", ParameterParserDataType::UInt32, (double)lmc_mv_diff_thr, 0));
    }
    else if (PARAMETER_STRCMP(__name, "lmc_mv_diff_thr") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)lmc_mv_diff_thr, 0));
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_y_ytb_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "noise_params_y_ytb") == 0)
    {
        if (__index < noise_params_y_ytbFixedCount)
        {
            ParameterUtils::DoubleToString((double)noise_params_y_ytb[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < noise_params_y_ytbFixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)noise_params_y_ytb[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_y_ytb_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "noise_params_y_ytb") == 0)
    {
        if (__index < noise_params_y_ytbFixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                noise_params_y_ytb[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < noise_params_y_ytbFixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    noise_params_y_ytb[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_y_ytb_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // noise_params_y_ytb
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_y_ytb", ParameterParserDataType::UInt32, true, false, noise_params_y_ytbFixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_y_ctb_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "noise_params_y_ctb") == 0)
    {
        if (__index < noise_params_y_ctbFixedCount)
        {
            ParameterUtils::DoubleToString((double)noise_params_y_ctb[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < noise_params_y_ctbFixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)noise_params_y_ctb[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_y_ctb_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "noise_params_y_ctb") == 0)
    {
        if (__index < noise_params_y_ctbFixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                noise_params_y_ctb[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < noise_params_y_ctbFixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    noise_params_y_ctb[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_y_ctb_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // noise_params_y_ctb
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_y_ctb", ParameterParserDataType::Int32, true, false, noise_params_y_ctbFixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_cb_ytb_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "noise_params_cb_ytb") == 0)
    {
        if (__index < noise_params_cb_ytbFixedCount)
        {
            ParameterUtils::DoubleToString((double)noise_params_cb_ytb[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < noise_params_cb_ytbFixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)noise_params_cb_ytb[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_cb_ytb_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "noise_params_cb_ytb") == 0)
    {
        if (__index < noise_params_cb_ytbFixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                noise_params_cb_ytb[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < noise_params_cb_ytbFixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    noise_params_cb_ytb[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_cb_ytb_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // noise_params_cb_ytb
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cb_ytb", ParameterParserDataType::UInt32, true, false, noise_params_cb_ytbFixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_cb_ctb_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "noise_params_cb_ctb") == 0)
    {
        if (__index < noise_params_cb_ctbFixedCount)
        {
            ParameterUtils::DoubleToString((double)noise_params_cb_ctb[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < noise_params_cb_ctbFixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)noise_params_cb_ctb[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_cb_ctb_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "noise_params_cb_ctb") == 0)
    {
        if (__index < noise_params_cb_ctbFixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                noise_params_cb_ctb[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < noise_params_cb_ctbFixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    noise_params_cb_ctb[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_cb_ctb_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // noise_params_cb_ctb
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cb_ctb", ParameterParserDataType::Int32, true, false, noise_params_cb_ctbFixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_cr_ytb_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "noise_params_cr_ytb") == 0)
    {
        if (__index < noise_params_cr_ytbFixedCount)
        {
            ParameterUtils::DoubleToString((double)noise_params_cr_ytb[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < noise_params_cr_ytbFixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)noise_params_cr_ytb[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_cr_ytb_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "noise_params_cr_ytb") == 0)
    {
        if (__index < noise_params_cr_ytbFixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                noise_params_cr_ytb[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < noise_params_cr_ytbFixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    noise_params_cr_ytb[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_cr_ytb_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // noise_params_cr_ytb
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cr_ytb", ParameterParserDataType::UInt32, true, false, noise_params_cr_ytbFixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_cr_ctb_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "noise_params_cr_ctb") == 0)
    {
        if (__index < noise_params_cr_ctbFixedCount)
        {
            ParameterUtils::DoubleToString((double)noise_params_cr_ctb[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < noise_params_cr_ctbFixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)noise_params_cr_ctb[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_cr_ctb_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "noise_params_cr_ctb") == 0)
    {
        if (__index < noise_params_cr_ctbFixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                noise_params_cr_ctb[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < noise_params_cr_ctbFixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    noise_params_cr_ctb[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::noise_params_cr_ctb_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // noise_params_cr_ctb
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("noise_params_cr_ctb", ParameterParserDataType::Int32, true, false, noise_params_cr_ctbFixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::fs_to_a1_map_y_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_to_a1_map_y") == 0)
    {
        if (__index < fs_to_a1_map_yFixedCount)
        {
            ParameterUtils::DoubleToString((double)fs_to_a1_map_y[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < fs_to_a1_map_yFixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)fs_to_a1_map_y[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_to_a1_map_y_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_to_a1_map_y") == 0)
    {
        if (__index < fs_to_a1_map_yFixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                fs_to_a1_map_y[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < fs_to_a1_map_yFixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    fs_to_a1_map_y[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_to_a1_map_y_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // fs_to_a1_map_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_to_a1_map_y", ParameterParserDataType::UInt32, true, false, fs_to_a1_map_yFixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::fs_to_a1_map_c_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_to_a1_map_c") == 0)
    {
        if (__index < fs_to_a1_map_cFixedCount)
        {
            ParameterUtils::DoubleToString((double)fs_to_a1_map_c[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < fs_to_a1_map_cFixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)fs_to_a1_map_c[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_to_a1_map_c_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_to_a1_map_c") == 0)
    {
        if (__index < fs_to_a1_map_cFixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                fs_to_a1_map_c[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < fs_to_a1_map_cFixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    fs_to_a1_map_c[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_to_a1_map_c_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // fs_to_a1_map_c
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_to_a1_map_c", ParameterParserDataType::UInt32, true, false, fs_to_a1_map_cFixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::fs_to_a4_map_y_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_to_a4_map_y") == 0)
    {
        if (__index < fs_to_a4_map_yFixedCount)
        {
            ParameterUtils::DoubleToString((double)fs_to_a4_map_y[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < fs_to_a4_map_yFixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)fs_to_a4_map_y[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_to_a4_map_y_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_to_a4_map_y") == 0)
    {
        if (__index < fs_to_a4_map_yFixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                fs_to_a4_map_y[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < fs_to_a4_map_yFixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    fs_to_a4_map_y[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_to_a4_map_y_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // fs_to_a4_map_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_to_a4_map_y", ParameterParserDataType::UInt32, true, false, fs_to_a4_map_yFixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::fs_to_a4_map_c_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_to_a4_map_c") == 0)
    {
        if (__index < fs_to_a4_map_cFixedCount)
        {
            ParameterUtils::DoubleToString((double)fs_to_a4_map_c[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < fs_to_a4_map_cFixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)fs_to_a4_map_c[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_to_a4_map_c_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_to_a4_map_c") == 0)
    {
        if (__index < fs_to_a4_map_cFixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                fs_to_a4_map_c[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < fs_to_a4_map_cFixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    fs_to_a4_map_c[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_to_a4_map_c_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // fs_to_a4_map_c
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_to_a4_map_c", ParameterParserDataType::UInt32, true, false, fs_to_a4_map_cFixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::lnr_lut_y_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "lnr_lut_y") == 0)
    {
        if (__index < lnr_lut_yFixedCount)
        {
            ParameterUtils::DoubleToString((double)lnr_lut_y[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < lnr_lut_yFixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)lnr_lut_y[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::lnr_lut_y_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "lnr_lut_y") == 0)
    {
        if (__index < lnr_lut_yFixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                lnr_lut_y[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < lnr_lut_yFixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    lnr_lut_y[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::lnr_lut_y_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // lnr_lut_y
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lnr_lut_y", ParameterParserDataType::UInt32, true, false, lnr_lut_yFixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::lnr_lut_c_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "lnr_lut_c") == 0)
    {
        if (__index < lnr_lut_cFixedCount)
        {
            ParameterUtils::DoubleToString((double)lnr_lut_c[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < lnr_lut_cFixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)lnr_lut_c[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::lnr_lut_c_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "lnr_lut_c") == 0)
    {
        if (__index < lnr_lut_cFixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                lnr_lut_c[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < lnr_lut_cFixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    lnr_lut_c[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::lnr_lut_c_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // lnr_lut_c
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("lnr_lut_c", ParameterParserDataType::UInt32, true, false, lnr_lut_cFixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_y_c1_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c1") == 0)
    {
        if (__index < fs_decision_params_y_c1FixedCount)
        {
            ParameterUtils::DoubleToString((double)fs_decision_params_y_c1[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < fs_decision_params_y_c1FixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)fs_decision_params_y_c1[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_y_c1_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c1") == 0)
    {
        if (__index < fs_decision_params_y_c1FixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                fs_decision_params_y_c1[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < fs_decision_params_y_c1FixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    fs_decision_params_y_c1[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_y_c1_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // fs_decision_params_y_c1
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_y_c1", ParameterParserDataType::UInt32, true, false, fs_decision_params_y_c1FixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_y_c2_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c2") == 0)
    {
        if (__index < fs_decision_params_y_c2FixedCount)
        {
            ParameterUtils::DoubleToString((double)fs_decision_params_y_c2[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < fs_decision_params_y_c2FixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)fs_decision_params_y_c2[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_y_c2_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c2") == 0)
    {
        if (__index < fs_decision_params_y_c2FixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                fs_decision_params_y_c2[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < fs_decision_params_y_c2FixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    fs_decision_params_y_c2[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_y_c2_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // fs_decision_params_y_c2
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_y_c2", ParameterParserDataType::UInt32, true, false, fs_decision_params_y_c2FixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_y_c3_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c3") == 0)
    {
        if (__index < fs_decision_params_y_c3FixedCount)
        {
            ParameterUtils::DoubleToString((double)fs_decision_params_y_c3[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < fs_decision_params_y_c3FixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)fs_decision_params_y_c3[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_y_c3_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c3") == 0)
    {
        if (__index < fs_decision_params_y_c3FixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                fs_decision_params_y_c3[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < fs_decision_params_y_c3FixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    fs_decision_params_y_c3[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_y_c3_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // fs_decision_params_y_c3
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_y_c3", ParameterParserDataType::UInt32, true, false, fs_decision_params_y_c3FixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_y_c4_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c4") == 0)
    {
        if (__index < fs_decision_params_y_c4FixedCount)
        {
            ParameterUtils::DoubleToString((double)fs_decision_params_y_c4[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < fs_decision_params_y_c4FixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)fs_decision_params_y_c4[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_y_c4_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_y_c4") == 0)
    {
        if (__index < fs_decision_params_y_c4FixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                fs_decision_params_y_c4[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < fs_decision_params_y_c4FixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    fs_decision_params_y_c4[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_y_c4_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // fs_decision_params_y_c4
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_y_c4", ParameterParserDataType::UInt32, true, false, fs_decision_params_y_c4FixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_c_c1_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c1") == 0)
    {
        if (__index < fs_decision_params_c_c1FixedCount)
        {
            ParameterUtils::DoubleToString((double)fs_decision_params_c_c1[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < fs_decision_params_c_c1FixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)fs_decision_params_c_c1[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_c_c1_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c1") == 0)
    {
        if (__index < fs_decision_params_c_c1FixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                fs_decision_params_c_c1[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < fs_decision_params_c_c1FixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    fs_decision_params_c_c1[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_c_c1_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // fs_decision_params_c_c1
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_c_c1", ParameterParserDataType::UInt32, true, false, fs_decision_params_c_c1FixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_c_c2_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c2") == 0)
    {
        if (__index < fs_decision_params_c_c2FixedCount)
        {
            ParameterUtils::DoubleToString((double)fs_decision_params_c_c2[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < fs_decision_params_c_c2FixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)fs_decision_params_c_c2[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_c_c2_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c2") == 0)
    {
        if (__index < fs_decision_params_c_c2FixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                fs_decision_params_c_c2[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < fs_decision_params_c_c2FixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    fs_decision_params_c_c2[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_c_c2_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // fs_decision_params_c_c2
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_c_c2", ParameterParserDataType::UInt32, true, false, fs_decision_params_c_c2FixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_c_c3_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c3") == 0)
    {
        if (__index < fs_decision_params_c_c3FixedCount)
        {
            ParameterUtils::DoubleToString((double)fs_decision_params_c_c3[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < fs_decision_params_c_c3FixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)fs_decision_params_c_c3[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_c_c3_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c3") == 0)
    {
        if (__index < fs_decision_params_c_c3FixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                fs_decision_params_c_c3[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < fs_decision_params_c_c3FixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    fs_decision_params_c_c3[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_c_c3_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // fs_decision_params_c_c3
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_c_c3", ParameterParserDataType::UInt32, true, false, fs_decision_params_c_c3FixedCount));
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_c_c4_tabStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c4") == 0)
    {
        if (__index < fs_decision_params_c_c4FixedCount)
        {
            ParameterUtils::DoubleToString((double)fs_decision_params_c_c4[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < fs_decision_params_c_c4FixedCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)fs_decision_params_c_c4[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_c_c4_tabStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "fs_decision_params_c_c4") == 0)
    {
        if (__index < fs_decision_params_c_c4FixedCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                fs_decision_params_c_c4[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < fs_decision_params_c_c4FixedCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    fs_decision_params_c_c4[__index] = (float)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool tf20_rgn_dataType::fs_decision_params_c_c4_tabStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // fs_decision_params_c_c4
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("fs_decision_params_c_c4", ParameterParserDataType::UInt32, true, false, fs_decision_params_c_c4FixedCount));
    }

    return __result;
}

bool mod_tf20_pass_dataType::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "pass_trigger") == 0)
    {
        ParameterUtils::DoubleToString((double)(UINT32)pass_trigger, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "tf20_rgn_data") == 0)
    {
        __result = tf20_rgn_data.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool mod_tf20_pass_dataType::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "pass_trigger") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            pass_trigger = (ispglobalelements::trigger_pass)(UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "tf20_rgn_data") == 0)
    {
        __result = tf20_rgn_data.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool mod_tf20_pass_dataType::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // pass_trigger
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("pass_trigger", ParameterParserDataType::Enum, (double)(UINT32)pass_trigger, 0));
    }
    else if (PARAMETER_STRCMP(__name, "pass_trigger") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Enum, (double)(UINT32)pass_trigger, 0));
    }

    // tf20_rgn_data
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("tf20_rgn_data", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "tf20_rgn_data") == 0)
    {
        __result = tf20_rgn_data.GetInfo(&__path[__pos], __info);
    }

    return __result;
}

bool mod_tf20_rgn_array_dataType::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "mod_tf20_pass_data") == 0)
    {
        if (__index < mod_tf20_pass_dataFixedCount)
        {
            __result = mod_tf20_pass_data[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool mod_tf20_rgn_array_dataType::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "mod_tf20_pass_data") == 0)
    {
        if (__index < mod_tf20_pass_dataFixedCount)
        {
            __result = mod_tf20_pass_data[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool mod_tf20_rgn_array_dataType::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // mod_tf20_pass_data
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("mod_tf20_pass_data", ParameterParserDataType::Structure, true, false, mod_tf20_pass_dataFixedCount));
    }
    else if (PARAMETER_STRCMP(__name, "mod_tf20_pass_data") == 0)
    {
        if (__index < mod_tf20_pass_dataFixedCount)
        {
            __result = mod_tf20_pass_data[__index].GetInfo(&__path[__pos], __info);
        }
        else
        {
            __result = true;
            __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Structure, true, false, mod_tf20_pass_dataFixedCount));
        }
    }

    return __result;
}

bool triggerType::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "start") == 0)
    {
        ParameterUtils::DoubleToString((double)start, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "end") == 0)
    {
        ParameterUtils::DoubleToString((double)end, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "trigger") == 0)
    {
        if (__index < triggerCount)
        {
            __result = trigger[__index].GetValue(&__path[__pos], __value, __size);
        }
    }
    else if (PARAMETER_STRCMP(__name, "region") == 0)
    {
        if (__index < regionCount)
        {
            __result = region[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool triggerType::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "start") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            start = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "end") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            end = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "trigger") == 0)
    {
        if (__index < triggerCount)
        {
            __result = trigger[__index].SetValue(&__path[__pos], __value);
        }
    }
    else if (PARAMETER_STRCMP(__name, "region") == 0)
    {
        if (__index < regionCount)
        {
            __result = region[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool triggerType::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // start
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("start", ParameterParserDataType::Float, (double)start));
    }
    else if (PARAMETER_STRCMP(__name, "start") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Float, (double)start));
    }

    // end
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("end", ParameterParserDataType::Float, (double)end));
    }
    else if (PARAMETER_STRCMP(__name, "end") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Float, (double)end));
    }

    // trigger
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("trigger", ParameterParserDataType::Structure, true, false, triggerCount));
    }
    else if (PARAMETER_STRCMP(__name, "trigger") == 0)
    {
        if (__index < triggerCount)
        {
            __result = trigger[__index].GetInfo(&__path[__pos], __info);
        }
        else
        {
            __result = true;
            __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Structure, true, false, triggerCount));
        }
    }

    // region
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("region", ParameterParserDataType::Structure, true, false, regionCount));
    }
    else if (PARAMETER_STRCMP(__name, "region") == 0)
    {
        if (__index < regionCount)
        {
            __result = region[__index].GetInfo(&__path[__pos], __info);
        }
        else
        {
            __result = true;
            __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Structure, true, false, regionCount));
        }
    }

    return __result;
}

bool chromatix_tf20_coreType::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "mod_tf20_trigger_data") == 0)
    {
        if (__index < mod_tf20_trigger_dataCount)
        {
            __result = mod_tf20_trigger_data[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool chromatix_tf20_coreType::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "mod_tf20_trigger_data") == 0)
    {
        if (__index < mod_tf20_trigger_dataCount)
        {
            __result = mod_tf20_trigger_data[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool chromatix_tf20_coreType::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // mod_tf20_trigger_data
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("mod_tf20_trigger_data", ParameterParserDataType::Structure, true, false, mod_tf20_trigger_dataCount));
    }
    else if (PARAMETER_STRCMP(__name, "mod_tf20_trigger_data") == 0)
    {
        if (__index < mod_tf20_trigger_dataCount)
        {
            __result = mod_tf20_trigger_data[__index].GetInfo(&__path[__pos], __info);
        }
        else
        {
            __result = true;
            __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Structure, true, false, mod_tf20_trigger_dataCount));
        }
    }

    return __result;
}

bool chromatix_tf20Type::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "enable_section") == 0)
    {
        __result = enable_section.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "module_version") == 0)
    {
        __result = module_version.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "parameter_version") == 0)
    {
        __result = parameter_version.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "control_variables") == 0)
    {
        __result = control_variables.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "private_information") == 0)
    {
        __result = private_information.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "dynamic_enable_triggers") == 0)
    {
        __result = dynamic_enable_triggers.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "chromatix_tf20_reserve") == 0)
    {
        __result = chromatix_tf20_reserve.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "chromatix_tf20_core") == 0)
    {
        __result = chromatix_tf20_core.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatix_tf20Type::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "enable_section") == 0)
    {
        __result = enable_section.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "module_version") == 0)
    {
        __result = module_version.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "parameter_version") == 0)
    {
        __result = parameter_version.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "control_variables") == 0)
    {
        __result = control_variables.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "private_information") == 0)
    {
        __result = private_information.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "dynamic_enable_triggers") == 0)
    {
        __result = dynamic_enable_triggers.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "chromatix_tf20_reserve") == 0)
    {
        __result = chromatix_tf20_reserve.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "chromatix_tf20_core") == 0)
    {
        __result = chromatix_tf20_core.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatix_tf20Type::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // enable_section
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("enable_section", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "enable_section") == 0)
    {
        __result = enable_section.GetInfo(&__path[__pos], __info);
    }

    // module_version
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("module_version", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "module_version") == 0)
    {
        __result = module_version.GetInfo(&__path[__pos], __info);
    }

    // parameter_version
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("parameter_version", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "parameter_version") == 0)
    {
        __result = parameter_version.GetInfo(&__path[__pos], __info);
    }

    // control_variables
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("control_variables", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "control_variables") == 0)
    {
        __result = control_variables.GetInfo(&__path[__pos], __info);
    }

    // private_information
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("private_information", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "private_information") == 0)
    {
        __result = private_information.GetInfo(&__path[__pos], __info);
    }

    // dynamic_enable_triggers
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("dynamic_enable_triggers", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "dynamic_enable_triggers") == 0)
    {
        __result = dynamic_enable_triggers.GetInfo(&__path[__pos], __info);
    }

    // chromatix_tf20_reserve
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("chromatix_tf20_reserve", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "chromatix_tf20_reserve") == 0)
    {
        __result = chromatix_tf20_reserve.GetInfo(&__path[__pos], __info);
    }

    // chromatix_tf20_core
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("chromatix_tf20_core", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "chromatix_tf20_core") == 0)
    {
        __result = chromatix_tf20_core.GetInfo(&__path[__pos], __info);
    }

    return __result;
}

bool chromatix_tf20Type::enable_sectionStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "master_en") == 0)
    {
        ParameterUtils::DoubleToString((double)master_en, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatix_tf20Type::enable_sectionStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "master_en") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            master_en = (globalelements::enable_flag_type)dblValue; 
        }
    }

    return __result;
}

bool chromatix_tf20Type::enable_sectionStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // master_en
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("master_en", ParameterParserDataType::Int32, (double)master_en, 0));
    }
    else if (PARAMETER_STRCMP(__name, "master_en") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Int32, (double)master_en, 0));
    }

    return __result;
}

bool chromatix_tf20Type::module_versionStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "major_revision") == 0)
    {
        ParameterUtils::DoubleToString((double)major_revision, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "minor_revision") == 0)
    {
        ParameterUtils::DoubleToString((double)minor_revision, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "incr_revision") == 0)
    {
        ParameterUtils::DoubleToString((double)incr_revision, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatix_tf20Type::module_versionStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "major_revision") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            major_revision = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "minor_revision") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            minor_revision = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "incr_revision") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            incr_revision = (INT32)dblValue; 
        }
    }

    return __result;
}

bool chromatix_tf20Type::module_versionStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // major_revision
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("major_revision", ParameterParserDataType::Int32, (double)major_revision, 0));
    }
    else if (PARAMETER_STRCMP(__name, "major_revision") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Int32, (double)major_revision, 0));
    }

    // minor_revision
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("minor_revision", ParameterParserDataType::Int32, (double)minor_revision, 0));
    }
    else if (PARAMETER_STRCMP(__name, "minor_revision") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Int32, (double)minor_revision, 0));
    }

    // incr_revision
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("incr_revision", ParameterParserDataType::Int32, (double)incr_revision, 0));
    }
    else if (PARAMETER_STRCMP(__name, "incr_revision") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Int32, (double)incr_revision, 0));
    }

    return __result;
}

bool chromatix_tf20Type::parameter_versionStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "revision") == 0)
    {
        PARAMETER_STRCPY(__value, __size, revision);
        __result = true;
    }

    return __result;
}

bool chromatix_tf20Type::parameter_versionStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const /*__value*/)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "revision") == 0)
    {
        // Cannot modify strings, risk of memory leaks or corruption
    }

    return __result;
}

bool chromatix_tf20Type::parameter_versionStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // revision
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("revision", ParameterParserDataType::String, revision));
    }
    else if (PARAMETER_STRCMP(__name, "revision") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::String, revision));
    }

    return __result;
}

bool chromatix_tf20Type::control_variablesStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "control_var_type") == 0)
    {
        if (__index < control_var_typeCount)
        {
            ParameterUtils::DoubleToString((double)(UINT32)control_var_type[__index], __value, __size, 0);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < control_var_typeCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)(UINT32)control_var_type[i], &__value[__valuePos], (INT32)(__size - __valuePos), 0);
            }
            __result = true;
        }
    }

    return __result;
}

bool chromatix_tf20Type::control_variablesStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "control_var_type") == 0)
    {
        if (__index < control_var_typeCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                control_var_type[__index] = (ispglobalelements::trigger_types)(UINT32)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

            __index = 0;
            while (__valuePos < __valueLen && __index < control_var_typeCount)
            {
                CHAR __valueStr[MAX_SIZE];

                __valuePos += ParameterUtils::GetSubString(&__value[__valuePos], ',', __valueStr, MAX_SIZE);
                __valuePos++;

                const double dblValue = ParameterUtils::StringToDouble(__valueStr, __result);
                if (__result)
                {
                    control_var_type[__index] = (ispglobalelements::trigger_types)(UINT32)dblValue; 
                }
                __index++;
            }
            __result = true;
        }
    }

    return __result;
}

bool chromatix_tf20Type::control_variablesStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    (void)ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // control_var_type
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("control_var_type", ParameterParserDataType::Enum, true, false, control_var_typeCount));
    }

    return __result;
}

bool chromatix_tf20Type::private_informationStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "led_sensitivity_trigger") == 0)
    {
        __result = led_sensitivity_trigger.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatix_tf20Type::private_informationStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "led_sensitivity_trigger") == 0)
    {
        __result = led_sensitivity_trigger.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatix_tf20Type::private_informationStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // led_sensitivity_trigger
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("led_sensitivity_trigger", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "led_sensitivity_trigger") == 0)
    {
        __result = led_sensitivity_trigger.GetInfo(&__path[__pos], __info);
    }

    return __result;
}

bool chromatix_tf20Type::dynamic_enable_triggersStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "master_en") == 0)
    {
        __result = master_en.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatix_tf20Type::dynamic_enable_triggersStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "master_en") == 0)
    {
        __result = master_en.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatix_tf20Type::dynamic_enable_triggersStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // master_en
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("master_en", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "master_en") == 0)
    {
        __result = master_en.GetInfo(&__path[__pos], __info);
    }

    return __result;
}

bool chromatix_tf20Type::dynamic_enable_triggersStruct::master_enStruct::GetValue(
    const CHAR* const __path,
    CHAR* const       __value,
    UINT32 const      __size)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "hyst_control_var") == 0)
    {
        ParameterUtils::DoubleToString((double)(UINT32)hyst_control_var, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "hyst_mode") == 0)
    {
        ParameterUtils::DoubleToString((double)(UINT32)hyst_mode, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "hyst_trigger") == 0)
    {
        __result = hyst_trigger.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatix_tf20Type::dynamic_enable_triggersStruct::master_enStruct::SetValue(
    const CHAR* const __path,
    const CHAR* const __value)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    if (PARAMETER_STRCMP(__name, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "hyst_control_var") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            hyst_control_var = (ispglobalelements::control_var_type)(UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "hyst_mode") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            hyst_mode = (ispglobalelements::hyst_direction)(UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "hyst_trigger") == 0)
    {
        __result = hyst_trigger.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatix_tf20Type::dynamic_enable_triggersStruct::master_enStruct::GetInfo(
    const CHAR* const           __path,
    PList<ParameterParserInfo>& __info)
{
    constexpr SIZE_T MAX_SIZE = 129;
    CHAR   __name[MAX_SIZE] = "";
    UINT32 __index          = MAX_UINT;
    bool   __result         = false;

    const UINT32 __pos = ParameterUtils::GetVariable(__path, __name, __index, MAX_SIZE);

    // enable
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("enable", ParameterParserDataType::Int32, (double)enable, 0));
    }
    else if (PARAMETER_STRCMP(__name, "enable") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Int32, (double)enable, 0));
    }

    // hyst_control_var
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("hyst_control_var", ParameterParserDataType::Enum, (double)(UINT32)hyst_control_var, 0));
    }
    else if (PARAMETER_STRCMP(__name, "hyst_control_var") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Enum, (double)(UINT32)hyst_control_var, 0));
    }

    // hyst_mode
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("hyst_mode", ParameterParserDataType::Enum, (double)(UINT32)hyst_mode, 0));
    }
    else if (PARAMETER_STRCMP(__name, "hyst_mode") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Enum, (double)(UINT32)hyst_mode, 0));
    }

    // hyst_trigger
    if (__name[0] == '\0')
    {
        __result = true;
        __info.Add(ParameterParserInfo("hyst_trigger", ParameterParserDataType::Structure));
    }
    else if (PARAMETER_STRCMP(__name, "hyst_trigger") == 0)
    {
        __result = hyst_trigger.GetInfo(&__path[__pos], __info);
    }

    return __result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Default Constructor
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
chromatix_tf20TypeClass::chromatix_tf20TypeClass(
    const CHAR* name)
    : ParameterModule(name, MAJOR, MINOR, PATCH, nullptr)
{
    PARAMETER_INITIALIZE(SymbolTableID);
    PARAMETER_INITIALIZE(enable_section);
    PARAMETER_INITIALIZE(module_version);
    PARAMETER_INITIALIZE(parameter_version);
    PARAMETER_INITIALIZE(control_variables);
    PARAMETER_INITIALIZE(private_information);
    PARAMETER_INITIALIZE(dynamic_enable_triggers);
    PARAMETER_INITIALIZE(chromatix_tf20_reserve);
    PARAMETER_INITIALIZE(chromatix_tf20_core);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Constructor
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
chromatix_tf20TypeClass::chromatix_tf20TypeClass(
    const CHAR*       name,
    ModuleData* const moduleData)
    : ParameterModule(name, MAJOR, MINOR, PATCH, moduleData)
{
    PARAMETER_INITIALIZE(SymbolTableID);
    PARAMETER_INITIALIZE(enable_section);
    PARAMETER_INITIALIZE(module_version);
    PARAMETER_INITIALIZE(parameter_version);
    PARAMETER_INITIALIZE(control_variables);
    PARAMETER_INITIALIZE(private_information);
    PARAMETER_INITIALIZE(dynamic_enable_triggers);
    PARAMETER_INITIALIZE(chromatix_tf20_reserve);
    PARAMETER_INITIALIZE(chromatix_tf20_core);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Destructor
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
chromatix_tf20TypeClass::~chromatix_tf20TypeClass()
{
    if (Loaded)
    {
        UnloadModule();
    }
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load mod_tf20_pass_reserve_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void mod_tf20_pass_reserve_dataType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(pass_trigger);
    PARAMETER_INITIALIZE(pass_data);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xa354e478e23acd55;
        entry->ReadEnumFixedArray(&pass_trigger, 1, localParams);
        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0xa669ef98dfe0126e;
        pass_data.Load(localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void mod_tf20_pass_reserve_dataType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        mod_tf20_pass_reserve_dataType* arrayPtr = (mod_tf20_pass_reserve_dataType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* mod_tf20_pass_reserve_dataType::AllocArray(
    UINT32 __count)
{
    mod_tf20_pass_reserve_dataType* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW mod_tf20_pass_reserve_dataType[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load mod_tf20_pass_reserve_dataType_pass_dataStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void mod_tf20_pass_reserve_dataType::pass_dataStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(blending_mode);
    PARAMETER_INITIALIZE(is_anr_strength_blender_mode);
    PARAMETER_INITIALIZE(disable_luma_ghost_detection);
    PARAMETER_INITIALIZE(disable_chroma_ghost_detection);
    PARAMETER_INITIALIZE(enable_lnr);
    PARAMETER_INITIALIZE(noise_params_y_uv_limit);
    PARAMETER_INITIALIZE(noise_params_cb_uv_limit);
    PARAMETER_INITIALIZE(noise_params_cr_uv_limit);
    PARAMETER_INITIALIZE(use_anr_for_decisions_y);
    PARAMETER_INITIALIZE(use_anr_for_decisions_c);
    PARAMETER_INITIALIZE(enable_noise_est_by_luma);
    PARAMETER_INITIALIZE(enable_noise_est_by_chroma);
    PARAMETER_INITIALIZE(padding_by_reflection_override);
    PARAMETER_INITIALIZE(padding_by_reflection);
    PARAMETER_INITIALIZE(morph_erode_en);
    PARAMETER_INITIALIZE(morph_dilate_en);
    PARAMETER_INITIALIZE(smear_inputs_for_decisions);
    PARAMETER_INITIALIZE(indications_premultiply_factor);
    PARAMETER_INITIALIZE(invert_temporal_blending_weights);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0x84f6bf662ff05cbb;
        entry->ReadSimpleTypeFixedArray(&blending_mode, 1, localParams);
        localParams.NameHash = 0xb638158781474f25;
        entry->ReadSimpleTypeFixedArray(&is_anr_strength_blender_mode, 1, localParams);
        localParams.NameHash = 0xb11f7303237e0a0c;
        entry->ReadSimpleTypeFixedArray(&disable_luma_ghost_detection, 1, localParams);
        localParams.NameHash = 0xe3595b52b1d835ad;
        entry->ReadSimpleTypeFixedArray(&disable_chroma_ghost_detection, 1, localParams);
        localParams.NameHash = 0xb03edfe3e9cea883;
        entry->ReadSimpleTypeFixedArray(&enable_lnr, 1, localParams);
        localParams.NameHash = 0xa9a2495d03a07bf5;
        entry->ReadSimpleTypeFixedArray(&noise_params_y_uv_limit, 1, localParams);
        localParams.NameHash = 0xa4eacfdc6905ea9e;
        entry->ReadSimpleTypeFixedArray(&noise_params_cb_uv_limit, 1, localParams);
        localParams.NameHash = 0xdfddb7b132a7790f;
        entry->ReadSimpleTypeFixedArray(&noise_params_cr_uv_limit, 1, localParams);
        localParams.NameHash = 0xa327808d7c34ab67;
        entry->ReadSimpleTypeFixedArray(&use_anr_for_decisions_y, 1, localParams);
        localParams.NameHash = 0x8c0da166cf75a87f;
        entry->ReadSimpleTypeFixedArray(&use_anr_for_decisions_c, 1, localParams);
        localParams.NameHash = 0xcbb981fe4f783c34;
        entry->ReadSimpleTypeFixedArray(&enable_noise_est_by_luma, 1, localParams);
        localParams.NameHash = 0xeea2bc5ee153c103;
        entry->ReadSimpleTypeFixedArray(&enable_noise_est_by_chroma, 1, localParams);
        localParams.NameHash = 0xbf44dcb73b035cfa;
        entry->ReadSimpleTypeFixedArray(&padding_by_reflection_override, 1, localParams);
        localParams.NameHash = 0xeb95df2e8749abc4;
        entry->ReadSimpleTypeFixedArray(&padding_by_reflection, 1, localParams);
        localParams.NameHash = 0xa0090ef763e060df;
        entry->ReadSimpleTypeFixedArray(&morph_erode_en, 1, localParams);
        localParams.NameHash = 0xd62854fd3aba9900;
        entry->ReadSimpleTypeFixedArray(&morph_dilate_en, 1, localParams);
        localParams.NameHash = 0xa431c1372876b071;
        entry->ReadSimpleTypeFixedArray(&smear_inputs_for_decisions, 1, localParams);
        localParams.NameHash = 0xae36c3d362687b49;
        entry->ReadSimpleTypeFixedArray(&indications_premultiply_factor, 1, localParams);
        localParams.NameHash = 0xb1f7b74435232919;
        entry->ReadSimpleTypeFixedArray(&invert_temporal_blending_weights, 1, localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void mod_tf20_pass_reserve_dataType::pass_dataStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        pass_dataStruct* arrayPtr = (pass_dataStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* mod_tf20_pass_reserve_dataType::pass_dataStruct::AllocArray(
    UINT32 __count)
{
    pass_dataStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW pass_dataStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatix_tf20_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20_reserveType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(mod_tf20_pass_reserve_data);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0x80ae8687c338e246;
        entry->ReadStructureFixedArray(mod_tf20_pass_reserve_data, mod_tf20_pass_reserve_dataFixedCount, localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void chromatix_tf20_reserveType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatix_tf20_reserveType* arrayPtr = (chromatix_tf20_reserveType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* chromatix_tf20_reserveType::AllocArray(
    UINT32 __count)
{
    chromatix_tf20_reserveType* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW chromatix_tf20_reserveType[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(en);
    PARAMETER_INITIALIZE(noise_params_y_ytb_tab);
    PARAMETER_INITIALIZE(noise_params_y_ctb_tab);
    PARAMETER_INITIALIZE(noise_params_y_top_lim);
    PARAMETER_INITIALIZE(noise_params_y_bot_lim);
    PARAMETER_INITIALIZE(noise_params_cb_ytb_tab);
    PARAMETER_INITIALIZE(noise_params_cb_ctb_tab);
    PARAMETER_INITIALIZE(noise_params_cb_top_lim);
    PARAMETER_INITIALIZE(noise_params_cb_bot_lim);
    PARAMETER_INITIALIZE(noise_params_cr_ytb_tab);
    PARAMETER_INITIALIZE(noise_params_cr_ctb_tab);
    PARAMETER_INITIALIZE(noise_params_cr_top_lim);
    PARAMETER_INITIALIZE(noise_params_cr_bot_lim);
    PARAMETER_INITIALIZE(a2_max_y);
    PARAMETER_INITIALIZE(a2_min_y);
    PARAMETER_INITIALIZE(a2_slope_y);
    PARAMETER_INITIALIZE(a2_max_c);
    PARAMETER_INITIALIZE(a2_min_c);
    PARAMETER_INITIALIZE(a2_slope_c);
    PARAMETER_INITIALIZE(is_same_blending_for_all_frequencies);
    PARAMETER_INITIALIZE(fs_to_a1_map_y_tab);
    PARAMETER_INITIALIZE(fs_to_a1_map_c_tab);
    PARAMETER_INITIALIZE(fs_to_a4_map_y_tab);
    PARAMETER_INITIALIZE(fs_to_a4_map_c_tab);
    PARAMETER_INITIALIZE(dither_y);
    PARAMETER_INITIALIZE(dither_cb);
    PARAMETER_INITIALIZE(dither_cr);
    PARAMETER_INITIALIZE(lnr_lut_y_tab);
    PARAMETER_INITIALIZE(lnr_lut_c_tab);
    PARAMETER_INITIALIZE(lnr_opt_center_x);
    PARAMETER_INITIALIZE(lnr_opt_center_y);
    PARAMETER_INITIALIZE(lnr_ellipses_bounding_rect_w);
    PARAMETER_INITIALIZE(lnr_ellipses_bounding_rect_h);
    PARAMETER_INITIALIZE(fs_decision_params_y_c1_tab);
    PARAMETER_INITIALIZE(fs_decision_params_y_c2_tab);
    PARAMETER_INITIALIZE(fs_decision_params_y_c3_tab);
    PARAMETER_INITIALIZE(fs_decision_params_y_c4_tab);
    PARAMETER_INITIALIZE(fs_decision_params_oof_y_c1);
    PARAMETER_INITIALIZE(fs_decision_params_oof_y_c2);
    PARAMETER_INITIALIZE(fs_decision_params_oof_y_c3);
    PARAMETER_INITIALIZE(fs_decision_params_oof_y_c4);
    PARAMETER_INITIALIZE(fs_decision_params_c_c1_tab);
    PARAMETER_INITIALIZE(fs_decision_params_c_c2_tab);
    PARAMETER_INITIALIZE(fs_decision_params_c_c3_tab);
    PARAMETER_INITIALIZE(fs_decision_params_c_c4_tab);
    PARAMETER_INITIALIZE(fs_decision_params_oof_c_c1);
    PARAMETER_INITIALIZE(fs_decision_params_oof_c_c2);
    PARAMETER_INITIALIZE(fs_decision_params_oof_c_c3);
    PARAMETER_INITIALIZE(fs_decision_params_oof_c_c4);
    PARAMETER_INITIALIZE(apply_fs_rank_filter);
    PARAMETER_INITIALIZE(apply_fs_lpf);
    PARAMETER_INITIALIZE(sad_y_calc_mode);
    PARAMETER_INITIALIZE(sad_c_calc_mode);
    PARAMETER_INITIALIZE(use_indications);
    PARAMETER_INITIALIZE(indications_affect_fs_decision_also_directly);
    PARAMETER_INITIALIZE(morph_erode_size);
    PARAMETER_INITIALIZE(morph_dilate_size);
    PARAMETER_INITIALIZE(tr_enable);
    PARAMETER_INITIALIZE(tr_block_num_x);
    PARAMETER_INITIALIZE(tr_block_num_y);
    PARAMETER_INITIALIZE(tr_fs_threshold);
    PARAMETER_INITIALIZE(tr_dead_zone);
    PARAMETER_INITIALIZE(tr_count_percentage_threshold);
    PARAMETER_INITIALIZE(out_of_frame_pixels_confidence);
    PARAMETER_INITIALIZE(is_dci_mode);
    PARAMETER_INITIALIZE(a3_t1_scale_y);
    PARAMETER_INITIALIZE(a3_t1_offs_y);
    PARAMETER_INITIALIZE(a3_t2_scale_y);
    PARAMETER_INITIALIZE(a3_t2_offs_y);
    PARAMETER_INITIALIZE(a3_t1_scale_c);
    PARAMETER_INITIALIZE(a3_t1_offs_c);
    PARAMETER_INITIALIZE(a3_t2_scale_c);
    PARAMETER_INITIALIZE(a3_t2_offs_c);
    PARAMETER_INITIALIZE(constant_blending_factor_y);
    PARAMETER_INITIALIZE(constant_blending_factor_c);
    PARAMETER_INITIALIZE(video_first_frame_spatial_nr_percentage);
    PARAMETER_INITIALIZE(scene_cut_recovery_time);
    PARAMETER_INITIALIZE(anr_final_blender_luma_min_strength_high_freq);
    PARAMETER_INITIALIZE(anr_final_blender_luma_min_strength_low_freq);
    PARAMETER_INITIALIZE(anr_final_blender_chroma_min_strength_high_freq);
    PARAMETER_INITIALIZE(anr_final_blender_chroma_min_strength_low_freq);
    PARAMETER_INITIALIZE(anr_final_blender_strength_decision_ythr_low);
    PARAMETER_INITIALIZE(anr_final_blender_strength_decision_ythr_high);
    PARAMETER_INITIALIZE(anr_final_blender_strength_decision_cthr_low);
    PARAMETER_INITIALIZE(anr_final_blender_strength_decision_cthr_high);
    PARAMETER_INITIALIZE(lmc_enable);
    PARAMETER_INITIALIZE(lmc_default_sad_c1);
    PARAMETER_INITIALIZE(lmc_default_sad_c2);
    PARAMETER_INITIALIZE(lmc_sad_c1);
    PARAMETER_INITIALIZE(lmc_sad_c2);
    PARAMETER_INITIALIZE(lmc_smoothness_m);
    PARAMETER_INITIALIZE(lmc_smoothness_a);
    PARAMETER_INITIALIZE(lmc_max_x);
    PARAMETER_INITIALIZE(lmc_max_y);
    PARAMETER_INITIALIZE(lmc_conf);
    PARAMETER_INITIALIZE(lmc_irreg);
    PARAMETER_INITIALIZE(lmc_mv_diff_thr);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xfda12e402475bba9;
        entry->ReadSimpleTypeFixedArray(&en, 1, localParams);
        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0xdd32a39bf2207d64;
        noise_params_y_ytb_tab.Load(localParams);
        localParams.NameHash        = 0xdfa58f8e3ea55b9f;
        noise_params_y_ctb_tab.Load(localParams);
        localParams.NameHash = 0x8797c806c4bf3ce0;
        entry->ReadSimpleTypeFixedArray(&noise_params_y_top_lim, 1, localParams);
        localParams.NameHash = 0xe2b69c1656a58d29;
        entry->ReadSimpleTypeFixedArray(&noise_params_y_bot_lim, 1, localParams);
        localParams.NameHash        = 0xe574ef024aa90036;
        noise_params_cb_ytb_tab.Load(localParams);
        localParams.NameHash        = 0xe7e3c317862c26cd;
        noise_params_cb_ctb_tab.Load(localParams);
        localParams.NameHash = 0xbfd1849f7c3641b2;
        entry->ReadSimpleTypeFixedArray(&noise_params_cb_top_lim, 1, localParams);
        localParams.NameHash = 0xdaf0d08fee2cf07b;
        entry->ReadSimpleTypeFixedArray(&noise_params_cb_bot_lim, 1, localParams);
        localParams.NameHash        = 0xb8b9dbbbb0dc3de6;
        noise_params_cr_ytb_tab.Load(localParams);
        localParams.NameHash        = 0xba2ef7ae7c591b1d;
        noise_params_cr_ctb_tab.Load(localParams);
        localParams.NameHash = 0xe21cb02686437c62;
        entry->ReadSimpleTypeFixedArray(&noise_params_cr_top_lim, 1, localParams);
        localParams.NameHash = 0x873de4361459cdab;
        entry->ReadSimpleTypeFixedArray(&noise_params_cr_bot_lim, 1, localParams);
        localParams.NameHash = 0xbb20ffa00ff341cd;
        entry->ReadSimpleTypeFixedArray(&a2_max_y, 1, localParams);
        localParams.NameHash = 0xe9d791fbb12bc212;
        entry->ReadSimpleTypeFixedArray(&a2_min_y, 1, localParams);
        localParams.NameHash = 0x8af724018dcc836b;
        entry->ReadSimpleTypeFixedArray(&a2_slope_y, 1, localParams);
        localParams.NameHash = 0x940ade4bbcb242d5;
        entry->ReadSimpleTypeFixedArray(&a2_max_c, 1, localParams);
        localParams.NameHash = 0xc6fdb010026ac10a;
        entry->ReadSimpleTypeFixedArray(&a2_min_c, 1, localParams);
        localParams.NameHash = 0xa5dd05ea3e8d8073;
        entry->ReadSimpleTypeFixedArray(&a2_slope_c, 1, localParams);
        localParams.NameHash = 0xe8ca5c904c5131d7;
        entry->ReadSimpleTypeFixedArray(&is_same_blending_for_all_frequencies, 1, localParams);
        localParams.NameHash        = 0xcc7a2244084a3618;
        fs_to_a1_map_y_tab.Load(localParams);
        localParams.NameHash        = 0xa26efdc992633e6e;
        fs_to_a1_map_c_tab.Load(localParams);
        localParams.NameHash        = 0xa4900f12dc484423;
        fs_to_a4_map_y_tab.Load(localParams);
        localParams.NameHash        = 0xca84d09f46614c55;
        fs_to_a4_map_c_tab.Load(localParams);
        localParams.NameHash = 0xede3e8502754c7b3;
        entry->ReadSimpleTypeFixedArray(&dither_y, 1, localParams);
        localParams.NameHash = 0xb862da72eb5345f0;
        entry->ReadSimpleTypeFixedArray(&dither_cb, 1, localParams);
        localParams.NameHash = 0xaf813ca6e3c4f9a5;
        entry->ReadSimpleTypeFixedArray(&dither_cr, 1, localParams);
        localParams.NameHash        = 0xfd86b184743dd9c5;
        lnr_lut_y_tab.Load(localParams);
        localParams.NameHash        = 0x93926e09ee14d1b3;
        lnr_lut_c_tab.Load(localParams);
        localParams.NameHash = 0xc1b954e22b5798ae;
        entry->ReadSimpleTypeFixedArray(&lnr_opt_center_x, 1, localParams);
        localParams.NameHash = 0xf95d3e3d206c3354;
        entry->ReadSimpleTypeFixedArray(&lnr_opt_center_y, 1, localParams);
        localParams.NameHash = 0xf46e521ff79f5eba;
        entry->ReadSimpleTypeFixedArray(&lnr_ellipses_bounding_rect_w, 1, localParams);
        localParams.NameHash = 0x85d0718030df3497;
        entry->ReadSimpleTypeFixedArray(&lnr_ellipses_bounding_rect_h, 1, localParams);
        localParams.NameHash        = 0xac297d35005af5c6;
        fs_decision_params_y_c1_tab.Load(localParams);
        localParams.NameHash        = 0xcaf176680f42f838;
        fs_decision_params_y_c2_tab.Load(localParams);
        localParams.NameHash        = 0xe8b970a30a4afc92;
        fs_decision_params_y_c3_tab.Load(localParams);
        localParams.NameHash        = 0x82a0a30542a68ee3;
        fs_decision_params_y_c4_tab.Load(localParams);
        localParams.NameHash = 0xf7d37a19c5fac907;
        entry->ReadSimpleTypeFixedArray(&fs_decision_params_oof_y_c1, 1, localParams);
        localParams.NameHash = 0xbeffc578d8b63509;
        entry->ReadSimpleTypeFixedArray(&fs_decision_params_oof_y_c2, 1, localParams);
        localParams.NameHash = 0x861bafa7d38d9ef3;
        entry->ReadSimpleTypeFixedArray(&fs_decision_params_oof_y_c3, 1, localParams);
        localParams.NameHash = 0xa947786db1fba032;
        entry->ReadSimpleTypeFixedArray(&fs_decision_params_oof_y_c4, 1, localParams);
        localParams.NameHash        = 0xcd311dcbe295d8e3;
        fs_decision_params_c_c1_tab.Load(localParams);
        localParams.NameHash        = 0xabe91696ed8dd51d;
        fs_decision_params_c_c2_tab.Load(localParams);
        localParams.NameHash        = 0x89a1105de885d1b7;
        fs_decision_params_c_c3_tab.Load(localParams);
        localParams.NameHash        = 0xe3b8c3fba069a3c6;
        fs_decision_params_c_c4_tab.Load(localParams);
        localParams.NameHash = 0x94ad8e48a4466966;
        entry->ReadSimpleTypeFixedArray(&fs_decision_params_oof_c_c1, 1, localParams);
        localParams.NameHash = 0xdd813129b90a9568;
        entry->ReadSimpleTypeFixedArray(&fs_decision_params_oof_c_c2, 1, localParams);
        localParams.NameHash = 0xe5655bf6b2313e92;
        entry->ReadSimpleTypeFixedArray(&fs_decision_params_oof_c_c3, 1, localParams);
        localParams.NameHash = 0xca398c3cd0470053;
        entry->ReadSimpleTypeFixedArray(&fs_decision_params_oof_c_c4, 1, localParams);
        localParams.NameHash = 0xec4cfd6eb842d37a;
        entry->ReadSimpleTypeFixedArray(&apply_fs_rank_filter, 1, localParams);
        localParams.NameHash = 0x9fceed635de0c165;
        entry->ReadSimpleTypeFixedArray(&apply_fs_lpf, 1, localParams);
        localParams.NameHash = 0xa5f3cfa6a5ee3211;
        entry->ReadSimpleTypeFixedArray(&sad_y_calc_mode, 1, localParams);
        localParams.NameHash = 0xd5643d0b24fadd44;
        entry->ReadSimpleTypeFixedArray(&sad_c_calc_mode, 1, localParams);
        localParams.NameHash = 0x96e841a7bd7dbd27;
        entry->ReadSimpleTypeFixedArray(&use_indications, 1, localParams);
        localParams.NameHash = 0xa038309e7eaee0dc;
        entry->ReadSimpleTypeFixedArray(&indications_affect_fs_decision_also_directly, 1, localParams);
        localParams.NameHash = 0xc36987b1d4841461;
        entry->ReadSimpleTypeFixedArray(&morph_erode_size, 1, localParams);
        localParams.NameHash = 0xb782ee0cf948f938;
        entry->ReadSimpleTypeFixedArray(&morph_dilate_size, 1, localParams);
        localParams.NameHash = 0xfe00855a2cdc1f30;
        entry->ReadSimpleTypeFixedArray(&tr_enable, 1, localParams);
        localParams.NameHash = 0xfabf4c65d2e45b86;
        entry->ReadSimpleTypeFixedArray(&tr_block_num_x, 1, localParams);
        localParams.NameHash = 0xc25b26bad9dff07c;
        entry->ReadSimpleTypeFixedArray(&tr_block_num_y, 1, localParams);
        localParams.NameHash = 0xa68c1b94501f9858;
        entry->ReadSimpleTypeFixedArray(&tr_fs_threshold, 1, localParams);
        localParams.NameHash = 0xfd8d5d20b738dfb2;
        entry->ReadSimpleTypeFixedArray(&tr_dead_zone, 1, localParams);
        localParams.NameHash = 0xbd2bb92109c313fc;
        entry->ReadSimpleTypeFixedArray(&tr_count_percentage_threshold, 1, localParams);
        localParams.NameHash = 0xd5cc2d0f06a5a02c;
        entry->ReadSimpleTypeFixedArray(&out_of_frame_pixels_confidence, 1, localParams);
        localParams.NameHash = 0xa53d587cf1eb59d9;
        entry->ReadSimpleTypeFixedArray(&is_dci_mode, 1, localParams);
        localParams.NameHash = 0xd7dc4d4c278069d5;
        entry->ReadSimpleTypeFixedArray(&a3_t1_scale_y, 1, localParams);
        localParams.NameHash = 0x969701f1c1dc1b2f;
        entry->ReadSimpleTypeFixedArray(&a3_t1_offs_y, 1, localParams);
        localParams.NameHash = 0xd9b9389087699db2;
        entry->ReadSimpleTypeFixedArray(&a3_t2_scale_y, 1, localParams);
        localParams.NameHash = 0x9577f1c3c49c73fb;
        entry->ReadSimpleTypeFixedArray(&a3_t2_offs_y, 1, localParams);
        localParams.NameHash = 0xf8f66ca794c16acd;
        entry->ReadSimpleTypeFixedArray(&a3_t1_scale_c, 1, localParams);
        localParams.NameHash = 0xb9bd201a729d1837;
        entry->ReadSimpleTypeFixedArray(&a3_t1_offs_c, 1, localParams);
        localParams.NameHash = 0xf693197b34289eaa;
        entry->ReadSimpleTypeFixedArray(&a3_t2_scale_c, 1, localParams);
        localParams.NameHash = 0xba5dd02877dd70e3;
        entry->ReadSimpleTypeFixedArray(&a3_t2_offs_c, 1, localParams);
        localParams.NameHash = 0xf8832e89c8d16633;
        entry->ReadSimpleTypeFixedArray(&constant_blending_factor_y, 1, localParams);
        localParams.NameHash = 0xd7a90f627b90652b;
        entry->ReadSimpleTypeFixedArray(&constant_blending_factor_c, 1, localParams);
        localParams.NameHash = 0xc1e4202f3186b04e;
        entry->ReadSimpleTypeFixedArray(&video_first_frame_spatial_nr_percentage, 1, localParams);
        localParams.NameHash = 0xb26c046bd0544cc7;
        entry->ReadSimpleTypeFixedArray(&scene_cut_recovery_time, 1, localParams);
        localParams.NameHash = 0x8ce5748ecaba5bc4;
        entry->ReadSimpleTypeFixedArray(&anr_final_blender_luma_min_strength_high_freq, 1, localParams);
        localParams.NameHash = 0xdb1136e9eec9ee41;
        entry->ReadSimpleTypeFixedArray(&anr_final_blender_luma_min_strength_low_freq, 1, localParams);
        localParams.NameHash = 0xaf909f7b46920c44;
        entry->ReadSimpleTypeFixedArray(&anr_final_blender_chroma_min_strength_high_freq, 1, localParams);
        localParams.NameHash = 0xc2a05d2248410d67;
        entry->ReadSimpleTypeFixedArray(&anr_final_blender_chroma_min_strength_low_freq, 1, localParams);
        localParams.NameHash = 0xc33e9bae458b5af4;
        entry->ReadSimpleTypeFixedArray(&anr_final_blender_strength_decision_ythr_low, 1, localParams);
        localParams.NameHash = 0xcb20721f51367ea7;
        entry->ReadSimpleTypeFixedArray(&anr_final_blender_strength_decision_ythr_high, 1, localParams);
        localParams.NameHash = 0xa226fb50a74477d1;
        entry->ReadSimpleTypeFixedArray(&anr_final_blender_strength_decision_cthr_low, 1, localParams);
        localParams.NameHash = 0xb3b27a6d69377a25;
        entry->ReadSimpleTypeFixedArray(&anr_final_blender_strength_decision_cthr_high, 1, localParams);
        localParams.NameHash = 0xfccb4fee7679f162;
        entry->ReadSimpleTypeFixedArray(&lmc_enable, 1, localParams);
        localParams.NameHash = 0x95846e738d227658;
        entry->ReadSimpleTypeFixedArray(&lmc_default_sad_c1, 1, localParams);
        localParams.NameHash = 0xdca8d112906e8a56;
        entry->ReadSimpleTypeFixedArray(&lmc_default_sad_c2, 1, localParams);
        localParams.NameHash = 0xa275e03014851e01;
        entry->ReadSimpleTypeFixedArray(&lmc_sad_c1, 1, localParams);
        localParams.NameHash = 0xeb595f5109c9e20f;
        entry->ReadSimpleTypeFixedArray(&lmc_sad_c2, 1, localParams);
        localParams.NameHash = 0xfe86e95b7955d712;
        entry->ReadSimpleTypeFixedArray(&lmc_smoothness_m, 1, localParams);
        localParams.NameHash = 0xd1f79371abcefd64;
        entry->ReadSimpleTypeFixedArray(&lmc_smoothness_a, 1, localParams);
        localParams.NameHash = 0xa1dc88f4ad44b75d;
        entry->ReadSimpleTypeFixedArray(&lmc_max_x, 1, localParams);
        localParams.NameHash = 0x9938e22ba67f1ca7;
        entry->ReadSimpleTypeFixedArray(&lmc_max_y, 1, localParams);
        localParams.NameHash = 0xf4a54c839bf79bbc;
        entry->ReadSimpleTypeFixedArray(&lmc_conf, 1, localParams);
        localParams.NameHash = 0xc65e4991c7ff05a5;
        entry->ReadSimpleTypeFixedArray(&lmc_irreg, 1, localParams);
        localParams.NameHash = 0xd71c9f4245bc38b5;
        entry->ReadSimpleTypeFixedArray(&lmc_mv_diff_thr, 1, localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        tf20_rgn_dataType* arrayPtr = (tf20_rgn_dataType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::AllocArray(
    UINT32 __count)
{
    tf20_rgn_dataType* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW tf20_rgn_dataType[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_noise_params_y_ytb_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::noise_params_y_ytb_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(noise_params_y_ytb);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xe33487e85b1f27cf;
        entry->ReadSimpleTypeFixedArray<float>(noise_params_y_ytb, noise_params_y_ytbFixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::noise_params_y_ytb_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        noise_params_y_ytb_tabStruct* arrayPtr = (noise_params_y_ytb_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::noise_params_y_ytb_tabStruct::AllocArray(
    UINT32 __count)
{
    noise_params_y_ytb_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW noise_params_y_ytb_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_noise_params_y_ctb_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::noise_params_y_ctb_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(noise_params_y_ctb);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0x90b00b23ab46f1a8;
        entry->ReadSimpleTypeFixedArray<float>(noise_params_y_ctb, noise_params_y_ctbFixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::noise_params_y_ctb_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        noise_params_y_ctb_tabStruct* arrayPtr = (noise_params_y_ctb_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::noise_params_y_ctb_tabStruct::AllocArray(
    UINT32 __count)
{
    noise_params_y_ctb_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW noise_params_y_ctb_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_noise_params_cb_ytb_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::noise_params_cb_ytb_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(noise_params_cb_ytb);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xe26d4136ed9259ab;
        entry->ReadSimpleTypeFixedArray<float>(noise_params_cb_ytb, noise_params_cb_ytbFixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::noise_params_cb_ytb_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        noise_params_cb_ytb_tabStruct* arrayPtr = (noise_params_cb_ytb_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::noise_params_cb_ytb_tabStruct::AllocArray(
    UINT32 __count)
{
    noise_params_cb_ytb_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW noise_params_cb_ytb_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_noise_params_cb_ctb_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::noise_params_cb_ctb_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(noise_params_cb_ctb);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0x91e9cdfd1dcb8fcc;
        entry->ReadSimpleTypeFixedArray<float>(noise_params_cb_ctb, noise_params_cb_ctbFixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::noise_params_cb_ctb_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        noise_params_cb_ctb_tabStruct* arrayPtr = (noise_params_cb_ctb_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::noise_params_cb_ctb_tabStruct::AllocArray(
    UINT32 __count)
{
    noise_params_cb_ctb_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW noise_params_cb_ctb_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_noise_params_cr_ytb_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::noise_params_cr_ytb_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(noise_params_cr_ytb);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xd16a22dbf243a797;
        entry->ReadSimpleTypeFixedArray<float>(noise_params_cr_ytb, noise_params_cr_ytbFixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::noise_params_cr_ytb_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        noise_params_cr_ytb_tabStruct* arrayPtr = (noise_params_cr_ytb_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::noise_params_cr_ytb_tabStruct::AllocArray(
    UINT32 __count)
{
    noise_params_cr_ytb_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW noise_params_cr_ytb_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_noise_params_cr_ctb_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::noise_params_cr_ctb_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(noise_params_cr_ctb);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xa2eeae10021a71f0;
        entry->ReadSimpleTypeFixedArray<float>(noise_params_cr_ctb, noise_params_cr_ctbFixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::noise_params_cr_ctb_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        noise_params_cr_ctb_tabStruct* arrayPtr = (noise_params_cr_ctb_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::noise_params_cr_ctb_tabStruct::AllocArray(
    UINT32 __count)
{
    noise_params_cr_ctb_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW noise_params_cr_ctb_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_fs_to_a1_map_y_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::fs_to_a1_map_y_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(fs_to_a1_map_y);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xfcc88287554a5069;
        entry->ReadSimpleTypeFixedArray<float>(fs_to_a1_map_y, fs_to_a1_map_yFixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::fs_to_a1_map_y_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fs_to_a1_map_y_tabStruct* arrayPtr = (fs_to_a1_map_y_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::fs_to_a1_map_y_tabStruct::AllocArray(
    UINT32 __count)
{
    fs_to_a1_map_y_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW fs_to_a1_map_y_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_fs_to_a1_map_c_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::fs_to_a1_map_c_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(fs_to_a1_map_c);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xd3e2a36ce60b5371;
        entry->ReadSimpleTypeFixedArray<float>(fs_to_a1_map_c, fs_to_a1_map_cFixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::fs_to_a1_map_c_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fs_to_a1_map_c_tabStruct* arrayPtr = (fs_to_a1_map_c_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::fs_to_a1_map_c_tabStruct::AllocArray(
    UINT32 __count)
{
    fs_to_a1_map_c_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW fs_to_a1_map_c_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_fs_to_a4_map_y_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::fs_to_a4_map_y_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(fs_to_a4_map_y);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xf2d6ca320b504551;
        entry->ReadSimpleTypeFixedArray<float>(fs_to_a4_map_y, fs_to_a4_map_yFixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::fs_to_a4_map_y_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fs_to_a4_map_y_tabStruct* arrayPtr = (fs_to_a4_map_y_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::fs_to_a4_map_y_tabStruct::AllocArray(
    UINT32 __count)
{
    fs_to_a4_map_y_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW fs_to_a4_map_y_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_fs_to_a4_map_c_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::fs_to_a4_map_c_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(fs_to_a4_map_c);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xddfcebd9b8114649;
        entry->ReadSimpleTypeFixedArray<float>(fs_to_a4_map_c, fs_to_a4_map_cFixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::fs_to_a4_map_c_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fs_to_a4_map_c_tabStruct* arrayPtr = (fs_to_a4_map_c_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::fs_to_a4_map_c_tabStruct::AllocArray(
    UINT32 __count)
{
    fs_to_a4_map_c_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW fs_to_a4_map_c_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_lnr_lut_y_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::lnr_lut_y_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(lnr_lut_y);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xa1b41f6880fb8793;
        entry->ReadSimpleTypeFixedArray<float>(lnr_lut_y, lnr_lut_yFixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::lnr_lut_y_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        lnr_lut_y_tabStruct* arrayPtr = (lnr_lut_y_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::lnr_lut_y_tabStruct::AllocArray(
    UINT32 __count)
{
    lnr_lut_y_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW lnr_lut_y_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_lnr_lut_c_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::lnr_lut_c_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(lnr_lut_c);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0x8e9e3e8333ba848b;
        entry->ReadSimpleTypeFixedArray<float>(lnr_lut_c, lnr_lut_cFixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::lnr_lut_c_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        lnr_lut_c_tabStruct* arrayPtr = (lnr_lut_c_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::lnr_lut_c_tabStruct::AllocArray(
    UINT32 __count)
{
    lnr_lut_c_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW lnr_lut_c_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_fs_decision_params_y_c1_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::fs_decision_params_y_c1_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(fs_decision_params_y_c1);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0x8c01c055d3c0fda1;
        entry->ReadSimpleTypeFixedArray<float>(fs_decision_params_y_c1, fs_decision_params_y_c1FixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::fs_decision_params_y_c1_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fs_decision_params_y_c1_tabStruct* arrayPtr = (fs_decision_params_y_c1_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::fs_decision_params_y_c1_tabStruct::AllocArray(
    UINT32 __count)
{
    fs_decision_params_y_c1_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW fs_decision_params_y_c1_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_fs_decision_params_y_c2_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::fs_decision_params_y_c2_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(fs_decision_params_y_c2);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xc52d7f34ce8c01af;
        entry->ReadSimpleTypeFixedArray<float>(fs_decision_params_y_c2, fs_decision_params_y_c2FixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::fs_decision_params_y_c2_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fs_decision_params_y_c2_tabStruct* arrayPtr = (fs_decision_params_y_c2_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::fs_decision_params_y_c2_tabStruct::AllocArray(
    UINT32 __count)
{
    fs_decision_params_y_c2_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW fs_decision_params_y_c2_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_fs_decision_params_y_c3_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::fs_decision_params_y_c3_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(fs_decision_params_y_c3);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xfdc915ebc5b7aa55;
        entry->ReadSimpleTypeFixedArray<float>(fs_decision_params_y_c3, fs_decision_params_y_c3FixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::fs_decision_params_y_c3_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fs_decision_params_y_c3_tabStruct* arrayPtr = (fs_decision_params_y_c3_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::fs_decision_params_y_c3_tabStruct::AllocArray(
    UINT32 __count)
{
    fs_decision_params_y_c3_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW fs_decision_params_y_c3_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_fs_decision_params_y_c4_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::fs_decision_params_y_c4_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(fs_decision_params_y_c4);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xd295c221a7c19494;
        entry->ReadSimpleTypeFixedArray<float>(fs_decision_params_y_c4, fs_decision_params_y_c4FixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::fs_decision_params_y_c4_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fs_decision_params_y_c4_tabStruct* arrayPtr = (fs_decision_params_y_c4_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::fs_decision_params_y_c4_tabStruct::AllocArray(
    UINT32 __count)
{
    fs_decision_params_y_c4_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW fs_decision_params_y_c4_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_fs_decision_params_c_c1_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::fs_decision_params_c_c1_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(fs_decision_params_c_c1);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xef7f3404b27c5dc0;
        entry->ReadSimpleTypeFixedArray<float>(fs_decision_params_c_c1, fs_decision_params_c_c1FixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::fs_decision_params_c_c1_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fs_decision_params_c_c1_tabStruct* arrayPtr = (fs_decision_params_c_c1_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::fs_decision_params_c_c1_tabStruct::AllocArray(
    UINT32 __count)
{
    fs_decision_params_c_c1_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW fs_decision_params_c_c1_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_fs_decision_params_c_c2_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::fs_decision_params_c_c2_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(fs_decision_params_c_c2);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xa6538b65af30a1ce;
        entry->ReadSimpleTypeFixedArray<float>(fs_decision_params_c_c2, fs_decision_params_c_c2FixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::fs_decision_params_c_c2_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fs_decision_params_c_c2_tabStruct* arrayPtr = (fs_decision_params_c_c2_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::fs_decision_params_c_c2_tabStruct::AllocArray(
    UINT32 __count)
{
    fs_decision_params_c_c2_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW fs_decision_params_c_c2_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_fs_decision_params_c_c3_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::fs_decision_params_c_c3_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(fs_decision_params_c_c3);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0x9eb7e1baa40b0a34;
        entry->ReadSimpleTypeFixedArray<float>(fs_decision_params_c_c3, fs_decision_params_c_c3FixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::fs_decision_params_c_c3_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fs_decision_params_c_c3_tabStruct* arrayPtr = (fs_decision_params_c_c3_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::fs_decision_params_c_c3_tabStruct::AllocArray(
    UINT32 __count)
{
    fs_decision_params_c_c3_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW fs_decision_params_c_c3_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load tf20_rgn_dataType_fs_decision_params_c_c4_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void tf20_rgn_dataType::fs_decision_params_c_c4_tabStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(fs_decision_params_c_c4);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xb1eb3670c67d34f5;
        entry->ReadSimpleTypeFixedArray<float>(fs_decision_params_c_c4, fs_decision_params_c_c4FixedCount,
            localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void tf20_rgn_dataType::fs_decision_params_c_c4_tabStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fs_decision_params_c_c4_tabStruct* arrayPtr = (fs_decision_params_c_c4_tabStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* tf20_rgn_dataType::fs_decision_params_c_c4_tabStruct::AllocArray(
    UINT32 __count)
{
    fs_decision_params_c_c4_tabStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW fs_decision_params_c_c4_tabStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load mod_tf20_pass_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void mod_tf20_pass_dataType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(pass_trigger);
    PARAMETER_INITIALIZE(tf20_rgn_data);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xa354e478e23acd55;
        entry->ReadEnumFixedArray(&pass_trigger, 1, localParams);
        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0xcb83eb9d475e2e3e;
        tf20_rgn_data.Load(localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void mod_tf20_pass_dataType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        mod_tf20_pass_dataType* arrayPtr = (mod_tf20_pass_dataType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* mod_tf20_pass_dataType::AllocArray(
    UINT32 __count)
{
    mod_tf20_pass_dataType* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW mod_tf20_pass_dataType[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load mod_tf20_rgn_array_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void mod_tf20_rgn_array_dataType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(mod_tf20_pass_data);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xd29c3bc60a0398a5;
        entry->ReadStructureFixedArray(mod_tf20_pass_data, mod_tf20_pass_dataFixedCount, localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void mod_tf20_rgn_array_dataType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        mod_tf20_rgn_array_dataType* arrayPtr = (mod_tf20_rgn_array_dataType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* mod_tf20_rgn_array_dataType::AllocArray(
    UINT32 __count)
{
    mod_tf20_rgn_array_dataType* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW mod_tf20_rgn_array_dataType[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load triggerType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void triggerType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(controlIndex);
    PARAMETER_INITIALIZE(type);
    PARAMETER_INITIALIZE(start);
    PARAMETER_INITIALIZE(end);
    PARAMETER_INITIALIZE(triggerCount);
    PARAMETER_INITIALIZE(trigger);
    PARAMETER_INITIALIZE(regionCount);
    PARAMETER_INITIALIZE(region);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xb66cc2e0745d14d1;
        entry->ReadSimpleTypeFixedArray(&start, 1, localParams);
        localParams.NameHash = 0xb70a3330100fb825;
        entry->ReadSimpleTypeFixedArray(&end, 1, localParams);
        localParams.NameHash = 0x9d162d4c268294aa;
        entry->ReadStructureArray(trigger, triggerCount, triggerID, 0, localParams, __COUNTER__);
        localParams.NameHash = 0xd88d0d3e2d5b89d1;
        entry->ReadStructureArray(region, regionCount, regionID, 0, localParams, __COUNTER__);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void triggerType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        triggerType* arrayPtr = (triggerType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* triggerType::AllocArray(
    UINT32 __count)
{
    triggerType* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW triggerType[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatix_tf20_coreType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20_coreType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(mod_tf20_trigger_dataCount);
    PARAMETER_INITIALIZE(mod_tf20_trigger_data);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xc234bf1d0047098e;
        entry->ReadStructureArray(mod_tf20_trigger_data, mod_tf20_trigger_dataCount, mod_tf20_trigger_dataID, 1, localParams, __COUNTER__);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void chromatix_tf20_coreType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatix_tf20_coreType* arrayPtr = (chromatix_tf20_coreType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* chromatix_tf20_coreType::AllocArray(
    UINT32 __count)
{
    chromatix_tf20_coreType* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW chromatix_tf20_coreType[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatix_tf20Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20Type::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable_section);
    PARAMETER_INITIALIZE(module_version);
    PARAMETER_INITIALIZE(parameter_version);
    PARAMETER_INITIALIZE(control_variables);
    PARAMETER_INITIALIZE(private_information);
    PARAMETER_INITIALIZE(dynamic_enable_triggers);
    PARAMETER_INITIALIZE(chromatix_tf20_reserve);
    PARAMETER_INITIALIZE(chromatix_tf20_core);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0xd52c240cf111efe4;
        enable_section.Load(localParams);
        localParams.NameHash        = 0xe11cd9f365a2599f;
        module_version.Load(localParams);
        localParams.NameHash        = 0xca3106e199a12935;
        parameter_version.Load(localParams);
        localParams.NameHash        = 0xaff2265ba7135b1d;
        control_variables.Load(localParams);
        localParams.NameHash        = 0xc19959ff6e1afe00;
        private_information.Load(localParams);
        localParams.NameHash        = 0xf403ab2198091685;
        dynamic_enable_triggers.Load(localParams);
        localParams.NameHash        = 0xe97c5dccd388e7c7;
        chromatix_tf20_reserve.Load(localParams);
        localParams.NameHash        = 0xbe700bd42486d436;
        chromatix_tf20_core.Load(localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void chromatix_tf20Type::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatix_tf20Type* arrayPtr = (chromatix_tf20Type*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* chromatix_tf20Type::AllocArray(
    UINT32 __count)
{
    chromatix_tf20Type* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW chromatix_tf20Type[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load enable_sectionStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20Type::enable_sectionStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(master_en);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0x805ac652747932ac;
        entry->ReadSimpleTypeFixedArray(&master_en, 1, localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void chromatix_tf20Type::enable_sectionStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        enable_sectionStruct* arrayPtr = (enable_sectionStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* chromatix_tf20Type::enable_sectionStruct::AllocArray(
    UINT32 __count)
{
    enable_sectionStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW enable_sectionStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load module_versionStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20Type::module_versionStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(major_revision);
    PARAMETER_INITIALIZE(minor_revision);
    PARAMETER_INITIALIZE(incr_revision);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xcd66249477636693;
        entry->ReadSimpleTypeFixedArray(&major_revision, 1, localParams);
        localParams.NameHash = 0xc5497493137a9c25;
        entry->ReadSimpleTypeFixedArray(&minor_revision, 1, localParams);
        localParams.NameHash = 0xb27b8a668efb2a56;
        entry->ReadSimpleTypeFixedArray(&incr_revision, 1, localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void chromatix_tf20Type::module_versionStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        module_versionStruct* arrayPtr = (module_versionStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* chromatix_tf20Type::module_versionStruct::AllocArray(
    UINT32 __count)
{
    module_versionStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW module_versionStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load parameter_versionStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20Type::parameter_versionStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(revision);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xd594eed07a5650c5;
        entry->ReadStringFixedArray(&revision, 1, localParams, __COUNTER__);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void chromatix_tf20Type::parameter_versionStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        parameter_versionStruct* arrayPtr = (parameter_versionStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* chromatix_tf20Type::parameter_versionStruct::AllocArray(
    UINT32 __count)
{
    parameter_versionStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW parameter_versionStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load control_variablesStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20Type::control_variablesStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(control_var_typeCount);
    PARAMETER_INITIALIZE(control_var_type);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xb4deb5959bf2270d;
        entry->ReadEnumArray(control_var_type, control_var_typeCount, control_var_typeID, 1,
            localParams, __COUNTER__);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void chromatix_tf20Type::control_variablesStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        control_variablesStruct* arrayPtr = (control_variablesStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* chromatix_tf20Type::control_variablesStruct::AllocArray(
    UINT32 __count)
{
    control_variablesStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW control_variablesStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load private_informationStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20Type::private_informationStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(led_sensitivity_trigger);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0xe4d7c79077642bc0;
        led_sensitivity_trigger.Load(localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void chromatix_tf20Type::private_informationStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        private_informationStruct* arrayPtr = (private_informationStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* chromatix_tf20Type::private_informationStruct::AllocArray(
    UINT32 __count)
{
    private_informationStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW private_informationStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load dynamic_enable_triggersStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20Type::dynamic_enable_triggersStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(master_en);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0x805ac652747932ac;
        master_en.Load(localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void chromatix_tf20Type::dynamic_enable_triggersStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        dynamic_enable_triggersStruct* arrayPtr = (dynamic_enable_triggersStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* chromatix_tf20Type::dynamic_enable_triggersStruct::AllocArray(
    UINT32 __count)
{
    dynamic_enable_triggersStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW dynamic_enable_triggersStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load dynamic_enable_triggersStruct_master_enStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20Type::dynamic_enable_triggersStruct::master_enStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(hyst_control_var);
    PARAMETER_INITIALIZE(hyst_mode);
    PARAMETER_INITIALIZE(hyst_trigger);

    ParameterFileSymbolTableEntry* const entry = parentParams.Entry;
    ParameterLoadParameters localParams(parentParams);
    localParams.Element   = nullptr;
    localParams.UseParent = false;
    localParams.Index     = 0;

    if (parentParams.Element != nullptr)
    {
        bool _posChanged = false;
        localParams.Element = entry->AdjustPositionAndGetElement(parentParams, true, _posChanged);
    }

    // If parentParams.Element != null && localParams.Element == null, then this element is not defined in the binary file.
    // If parentParams.Element == null then this binary file does not contain a definition table or
    // the full backwards compatibility feature is disabled (for memory or performance reasons)
    if (parentParams.Element == nullptr || parentParams.Element->Verified || localParams.Element != nullptr)
    {
        localParams.Position      = entry->Position;
        localParams.LoadDataLimit = entry->ReadLoadDataLimit(parentParams.LoadDataLimit);

        localParams.NameHash = 0xb3c00adf8e304e57;
        entry->ReadSimpleTypeFixedArray(&enable, 1, localParams);
        localParams.NameHash = 0x87fc8b508e529ba7;
        entry->ReadEnumFixedArray(&hyst_control_var, 1, localParams);
        localParams.NameHash = 0x85ef897bc53c279f;
        entry->ReadEnumFixedArray(&hyst_mode, 1, localParams);
        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0x81fda04ca62bc874;
        hyst_trigger.Load(localParams);

        entry->UpdatePosition(localParams.LoadDataLimit);
    }
    else
    {
        PARAMETER_LOG_ERROR(entry->Table->SetManager, "%s: 0x%llx entry not found in the binary file, all values will be 0\n",
            __FUNCTION__, parentParams.NameHash);
    }
}

void chromatix_tf20Type::dynamic_enable_triggersStruct::master_enStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        master_enStruct* arrayPtr = (master_enStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

void* chromatix_tf20Type::dynamic_enable_triggersStruct::master_enStruct::AllocArray(
    UINT32 __count)
{
    master_enStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW master_enStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload triggerType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void triggerType::Unload(ParameterFileSymbolTable* const __table)
{
    for (UINT32 i = 0; trigger != nullptr && i < triggerCount; i++)
    {
        trigger[i].Unload(__table);
    }
    ParameterFileSymbolTable::ReleaseObject(__table, trigger);
    ParameterFileSymbolTable::ReleaseObject(__table, region);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatix_tf20_coreType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20_coreType::Unload(ParameterFileSymbolTable* const __table)
{
    for (UINT32 i = 0; mod_tf20_trigger_data != nullptr && i < mod_tf20_trigger_dataCount; i++)
    {
        mod_tf20_trigger_data[i].Unload(__table);
    }
    ParameterFileSymbolTable::ReleaseObject(__table, mod_tf20_trigger_data);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatix_tf20Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20Type::Unload(ParameterFileSymbolTable* const __table)
{
    parameter_version.Unload(__table);
    control_variables.Unload(__table);
    chromatix_tf20_core.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload parameter_versionStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20Type::parameter_versionStruct::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, revision);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload control_variablesStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20Type::control_variablesStruct::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, control_var_type);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Update the trigger type values
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20TypeClass::UpdateTriggerType(
    control_variablesStruct* const control,
    triggerType* trigger,
    UINT32 const depth)
{
    if (depth < control->control_var_typeCount)
    {
        trigger->controlIndex = depth;
        trigger->type         = control->control_var_type[depth];

        for (UINT32 i = 0; i < trigger->triggerCount; i++)
        {
            UpdateTriggerType(control, &trigger->trigger[i], depth + 1);
        }
    }
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Release the ParameterModule object
/// Requires that this object was created via a ParameterSetManager::GetModule call
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20Type::Release()
{
    ((chromatix_tf20TypeClass*)this)->Release();
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Returns the ParameterModule::Modified value
/// The Modified value is incremented when the module's data or pointer values change
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
UINT32 chromatix_tf20Type::GetModified()
{
    return ((chromatix_tf20TypeClass*)this)->Modified;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// GetModuleName: Returns ParameterModule::Name variable
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const CHAR* chromatix_tf20Type::GetModuleName()
{
    return ((chromatix_tf20TypeClass*)this)->Name;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// GetModuleName: Returns ParameterModule::NameHash variable
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
UINT64 chromatix_tf20Type::GetModuleNameHash()
{
    return ((chromatix_tf20TypeClass*)this)->NameHash;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Create module, and return a new object
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ParameterModule* chromatix_tf20TypeClass::Create(
    ModuleData* const    moduleData,
    DefaultModule* const defModule) const
{
    chromatix_tf20TypeClass* cls = nullptr;

    if (IsModuleMatch(moduleData) && Version.Value == moduleData->Version.Value)
    {
        const UINT32 id = moduleData->DuplicateID > 0 ? moduleData->DuplicateID : moduleData->ID;

        ParameterModule* const module = defModule->Find(id);
        if (module != nullptr)
        {
            cls = (chromatix_tf20TypeClass*)module;
        }
        else
        {
            cls = PARAMETER_NEW chromatix_tf20TypeClass(Name, moduleData);
            cls->SymbolTableID = id;
            defModule->AddModule((ParameterModule*)cls);
        }
    }
    else if (Version.Value != moduleData->Version.Value)
    {
        PARAMETER_LOG_ERROR(moduleData->SetManager, "Unable to create chromatix_tf20TypeClass, binary version (%lld) does not match source version (%lld)\n",
            moduleData->Version.Value, Version.Value);
    }
    else
    {
        PARAMETER_LOG_ERROR(moduleData->SetManager, "Unable to create chromatix_tf20TypeClass, binary name hash (0x%016llx) does not match source name hash (0x%016llx)\n",
            moduleData->NameHash, NameHash);
    }

    return (ParameterModule*)cls;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load module data, return true is successful
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool chromatix_tf20TypeClass::LoadModule(
    ParameterFileSymbolTable* const table)
{
    bool result = true;

#ifdef PARAMETER_USE_MUTEX
    ParameterMutexLocker lock(Mutex); // Unique LOCK
#endif

    if (!Loaded)
    {
        chromatix_tf20TypeClass* const cls = this;

        ParameterFileSymbolTableEntry  entryObj;
        ParameterFileSymbolTableEntry* const entry = &entryObj;
        // With EzTune enabled, the unused upper byte of SymbolTableID value can change, so clear it
        result = table->Find(entryObj, SymbolTableID & 0x00ffffffU);

        if (!result)
        {
            PARAMETER_LOG_ERROR(entry->Table->SetManager, "chromatix_tf20TypeClass::LoadModule Failed to find module ID (%d) in Symbol Table\n", SymbolTableID);
        }


        ParameterDefinitionElement* _element = nullptr;
        if (table->ModuleDefinitions != nullptr && !table->ModuleDefinitions->empty())
        {
            _element = table->BuildModuleElement(NameHash);
        }

        ParameterLoadParameters parentParams(entry, NameHash, true, true, _element, entry->Position, 0, ParameterFileSymbolTableEntry::LOAD_LIMIT_MAX);
        cls->Load(parentParams);
        PARAMETER_DELETE _element;

        if (result)
        {
            for (UINT32 i = 0; i < cls->chromatix_tf20_core.mod_tf20_trigger_dataCount; i++)
            {
                UpdateTriggerType(&cls->control_variables, &cls->chromatix_tf20_core.mod_tf20_trigger_data[i], 0);
            }
        }
        Modified++;
        Loaded = true;
    }

    if (!result)
    {
        /// Module failed to fully load, unload it
        UnloadModule();
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload module data
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20TypeClass::UnloadModule()
{
#ifdef PARAMETER_USE_MUTEX
    ParameterMutexLocker lock(Mutex); // Unique LOCK
#endif

    if (Loaded)
    {
        if (Data != nullptr && Data->SymbolTable != nullptr)
        {
            Unload(Data->SymbolTable);
        }
        else
        {
            PARAMETER_LOG_ERROR(Data != nullptr ? Data->SetManager : nullptr, "UnloadModule %s called with nullptr "
                "Data->SymbolTable object\n", Name);
            Unload(nullptr);
        }
        Loaded = false;
    }
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// /// Release the ParameterModule object
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatix_tf20TypeClass::Release()
{
    ParameterModule::Release();
}

TF_2_0_1_NAMESPACE_END
