////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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  afpdafelements.cpp
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "afpdafelements.h"
#include "parametersetmanager.h"

AFPDAFELEMENTS_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// SetValue/GetValue Functions
/// Gets or sets the requested value
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool chromatixPDAFROISelection::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, "type") == 0)
    {
        ParameterUtils::DoubleToString((double)(UINT32)type, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "lowConfidenceMultiplier") == 0)
    {
        ParameterUtils::DoubleToString((double)lowConfidenceMultiplier, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "highConfidenceMultiplier") == 0)
    {
        ParameterUtils::DoubleToString((double)highConfidenceMultiplier, __value, __size);
        __result = true;
    }

    return __result;
}

bool chromatixPDAFROISelection::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, "type") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            type = (afglobalelements::AFTriggerCtrlTypeROIEnum)(UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "lowConfidenceMultiplier") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lowConfidenceMultiplier = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "highConfidenceMultiplier") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            highConfidenceMultiplier = (float)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDAFROISelection::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);

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

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

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

    return __result;
}

bool chromatixPDAFTemporalFilterSettingType::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, "gainThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)gainThreshold, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "confidenceWeightLUT") == 0)
    {
        __result = confidenceWeightLUT.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "lensMoveWeightLUT") == 0)
    {
        __result = lensMoveWeightLUT.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "frameDelayWeight") == 0)
    {
        __result = frameDelayWeight.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixPDAFTemporalFilterSettingType::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, "gainThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            gainThreshold = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "confidenceWeightLUT") == 0)
    {
        __result = confidenceWeightLUT.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "lensMoveWeightLUT") == 0)
    {
        __result = lensMoveWeightLUT.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "frameDelayWeight") == 0)
    {
        __result = frameDelayWeight.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixPDAFTemporalFilterSettingType::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);

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

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

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

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

    return __result;
}

bool chromatixPDAFTemporalFilterSettingType::frameDelayWeightStruct::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, "weights") == 0)
    {
        if (__index < weightsCount)
        {
            ParameterUtils::DoubleToString((double)weights[__index], __value, __size);
            __result = true;
        }
        else
        {
            SIZE_T __valuePos = 0;
            for (UINT32 i = 0; i < weightsCount; i++)
            {
                if (i > 0)
                {
                    PARAMETER_STRCAT(__value, __size, ",");
                    __valuePos = PARAMETER_STRLEN(__value);
                }
                ParameterUtils::DoubleToString((double)weights[i], &__value[__valuePos], (INT32)(__size - __valuePos));
            }
            __result = true;
        }
    }

    return __result;
}

bool chromatixPDAFTemporalFilterSettingType::frameDelayWeightStruct::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, "weights") == 0)
    {
        if (__index < weightsCount)
        {
            const double dblValue = ParameterUtils::StringToDouble(__value, __result);
            if (__result)
            {
                weights[__index] = (float)dblValue; 
            }
        }
        else
        {
            const SIZE_T __valueLen = PARAMETER_STRLEN(__value);
            UINT32 __valuePos = 0;

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

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

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

    return __result;
}

bool chromatixPDAFTemporalFilterSettingType::frameDelayWeightStruct::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);

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

    return __result;
}

bool chromatixPDAFTemporalFilterType::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, "setting") == 0)
    {
        if (__index < settingCount)
        {
            __result = setting[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool chromatixPDAFTemporalFilterType::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, "setting") == 0)
    {
        if (__index < settingCount)
        {
            __result = setting[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool chromatixPDAFTemporalFilterType::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);

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

    return __result;
}

bool chromatixPDMotionConvergeScalerEntryType::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, "motion") == 0)
    {
        ParameterUtils::DoubleToString((double)motion, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "scaler") == 0)
    {
        ParameterUtils::DoubleToString((double)scaler, __value, __size);
        __result = true;
    }

    return __result;
}

bool chromatixPDMotionConvergeScalerEntryType::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, "motion") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            motion = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "scaler") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            scaler = (float)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDMotionConvergeScalerEntryType::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);

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

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

    return __result;
}

bool chromatixPDMotionConvergeType::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, "motionConvergeEntries") == 0)
    {
        if (__index < motionConvergeEntriesCount)
        {
            __result = motionConvergeEntries[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool chromatixPDMotionConvergeType::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, "motionConvergeEntries") == 0)
    {
        if (__index < motionConvergeEntriesCount)
        {
            __result = motionConvergeEntries[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool chromatixPDMotionConvergeType::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);

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

    return __result;
}

bool chromatixMLPDControlType::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, "enableMLPD") == 0)
    {
        ParameterUtils::DoubleToString((double)enableMLPD, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixMLPDControlType::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, "enableMLPD") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enableMLPD = (BOOL)dblValue; 
        }
    }

    return __result;
}

bool chromatixMLPDControlType::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);

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

    return __result;
}

bool chromatixPDFocusTableEntryType::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, "defocus") == 0)
    {
        ParameterUtils::DoubleToString((double)defocus, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "movePercent") == 0)
    {
        ParameterUtils::DoubleToString((double)movePercent, __value, __size);
        __result = true;
    }

    return __result;
}

bool chromatixPDFocusTableEntryType::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, "defocus") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            defocus = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "movePercent") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            movePercent = (float)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDFocusTableEntryType::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);

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

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

    return __result;
}

bool chromatixPDFocusTableType::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, "focusEntries") == 0)
    {
        if (__index < focusEntriesCount)
        {
            __result = focusEntries[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool chromatixPDFocusTableType::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, "focusEntries") == 0)
    {
        if (__index < focusEntriesCount)
        {
            __result = focusEntries[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool chromatixPDFocusTableType::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);

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

    return __result;
}

bool chromatixAdvancedSparsePDControlType::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, "enableForSparsePD") == 0)
    {
        ParameterUtils::DoubleToString((double)enableForSparsePD, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "skipFineScan") == 0)
    {
        ParameterUtils::DoubleToString((double)skipFineScan, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "focusDoneThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)focusDoneThreshold, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "focusTable") == 0)
    {
        __result = focusTable.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixAdvancedSparsePDControlType::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, "enableForSparsePD") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enableForSparsePD = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "skipFineScan") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            skipFineScan = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "focusDoneThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            focusDoneThreshold = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "focusTable") == 0)
    {
        __result = focusTable.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixAdvancedSparsePDControlType::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);

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

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

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

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

    return __result;
}

bool chromatixPDForceEnterFineSearchType::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "directionReverseCountThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)directionReverseCountThreshold, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDForceEnterFineSearchType::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "directionReverseCountThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            directionReverseCountThreshold = (UINT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDForceEnterFineSearchType::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);

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

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

    return __result;
}

bool chromaitxPDConvergeDoneFilterType::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "length") == 0)
    {
        ParameterUtils::DoubleToString((double)length, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "threshold") == 0)
    {
        ParameterUtils::DoubleToString((double)threshold, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromaitxPDConvergeDoneFilterType::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "length") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            length = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "threshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            threshold = (UINT32)dblValue; 
        }
    }

    return __result;
}

bool chromaitxPDConvergeDoneFilterType::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);

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

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

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

    return __result;
}

bool chromatixPDSaliencyControlType::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, "saliencyROIProcess") == 0)
    {
        __result = saliencyROIProcess.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "minMoveThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)minMoveThreshold, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "defocusFilter") == 0)
    {
        __result = defocusFilter.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fallback") == 0)
    {
        __result = fallback.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixPDSaliencyControlType::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, "saliencyROIProcess") == 0)
    {
        __result = saliencyROIProcess.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "minMoveThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            minMoveThreshold = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "defocusFilter") == 0)
    {
        __result = defocusFilter.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fallback") == 0)
    {
        __result = fallback.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixPDSaliencyControlType::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);

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

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

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

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

    return __result;
}

bool chromatixPDSaliencyControlType::saliencyROIProcessStruct::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, "saliencyROIRoughStable") == 0)
    {
        __result = saliencyROIRoughStable.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "saliencyROIStrictStable") == 0)
    {
        __result = saliencyROIStrictStable.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixPDSaliencyControlType::saliencyROIProcessStruct::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, "saliencyROIRoughStable") == 0)
    {
        __result = saliencyROIRoughStable.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "saliencyROIStrictStable") == 0)
    {
        __result = saliencyROIStrictStable.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixPDSaliencyControlType::saliencyROIProcessStruct::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);

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

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

    return __result;
}

bool chromatixPDSaliencyControlType::defocusFilterStruct::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "length") == 0)
    {
        ParameterUtils::DoubleToString((double)length, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "confidenceHighThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)confidenceHighThreshold, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDSaliencyControlType::defocusFilterStruct::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "length") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            length = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "confidenceHighThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            confidenceHighThreshold = (UINT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDSaliencyControlType::defocusFilterStruct::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);

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

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

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

    return __result;
}

bool chromatixPDSaliencyControlType::fallbackStruct::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fallbackROISizeThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)fallbackROISizeThreshold, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDSaliencyControlType::fallbackStruct::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fallbackROISizeThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fallbackROISizeThreshold = (UINT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDSaliencyControlType::fallbackStruct::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);

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

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

    return __result;
}

bool chromatixPDTrackControlType::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, "trackROIProcess") == 0)
    {
        __result = trackROIProcess.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "minMoveThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)minMoveThreshold, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "defocusFilter") == 0)
    {
        __result = defocusFilter.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fallback") == 0)
    {
        __result = fallback.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixPDTrackControlType::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, "trackROIProcess") == 0)
    {
        __result = trackROIProcess.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "minMoveThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            minMoveThreshold = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "defocusFilter") == 0)
    {
        __result = defocusFilter.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fallback") == 0)
    {
        __result = fallback.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixPDTrackControlType::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);

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

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

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

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

    return __result;
}

bool chromatixPDTrackControlType::trackROIProcessStruct::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, "trackROIRoughStable") == 0)
    {
        __result = trackROIRoughStable.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "trackROIStrictStable") == 0)
    {
        __result = trackROIStrictStable.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixPDTrackControlType::trackROIProcessStruct::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, "trackROIRoughStable") == 0)
    {
        __result = trackROIRoughStable.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "trackROIStrictStable") == 0)
    {
        __result = trackROIStrictStable.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixPDTrackControlType::trackROIProcessStruct::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);

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

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

    return __result;
}

bool chromatixPDTrackControlType::defocusFilterStruct::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "length") == 0)
    {
        ParameterUtils::DoubleToString((double)length, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "confidenceHighThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)confidenceHighThreshold, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDTrackControlType::defocusFilterStruct::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "length") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            length = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "confidenceHighThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            confidenceHighThreshold = (UINT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDTrackControlType::defocusFilterStruct::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);

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

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

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

    return __result;
}

bool chromatixPDTrackControlType::fallbackStruct::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fallbackROISizeThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)fallbackROISizeThreshold, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDTrackControlType::fallbackStruct::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fallbackROISizeThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fallbackROISizeThreshold = (UINT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDTrackControlType::fallbackStruct::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);

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

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

    return __result;
}

bool chromatixPDTouchControlType::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, "offCenterThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)offCenterThreshold, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "skipSearchIfSceneInFocus") == 0)
    {
        ParameterUtils::DoubleToString((double)skipSearchIfSceneInFocus, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDTouchControlType::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, "offCenterThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            offCenterThreshold = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "skipSearchIfSceneInFocus") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            skipSearchIfSceneInFocus = (globalelements::enable_flag_type)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDTouchControlType::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);

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

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

    return __result;
}

bool chromatixPDFaceControlType::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, "faceROIProcess") == 0)
    {
        __result = faceROIProcess.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "minMoveThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)minMoveThreshold, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "ROIMoveConvergeSuppress") == 0)
    {
        __result = ROIMoveConvergeSuppress.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "defocusFilter") == 0)
    {
        __result = defocusFilter.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fallback") == 0)
    {
        __result = fallback.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "faceChangeRefocusTrigger") == 0)
    {
        __result = faceChangeRefocusTrigger.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixPDFaceControlType::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, "faceROIProcess") == 0)
    {
        __result = faceROIProcess.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "minMoveThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            minMoveThreshold = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "ROIMoveConvergeSuppress") == 0)
    {
        __result = ROIMoveConvergeSuppress.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "defocusFilter") == 0)
    {
        __result = defocusFilter.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fallback") == 0)
    {
        __result = fallback.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "faceChangeRefocusTrigger") == 0)
    {
        __result = faceChangeRefocusTrigger.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixPDFaceControlType::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);

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

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

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

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

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

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

    return __result;
}

bool chromatixPDFaceControlType::faceROIProcessStruct::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, "ROIProcessEnable") == 0)
    {
        ParameterUtils::DoubleToString((double)ROIProcessEnable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "ROIRoughStable") == 0)
    {
        __result = ROIRoughStable.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "ROIStrictStable") == 0)
    {
        __result = ROIStrictStable.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixPDFaceControlType::faceROIProcessStruct::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, "ROIProcessEnable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            ROIProcessEnable = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "ROIRoughStable") == 0)
    {
        __result = ROIRoughStable.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "ROIStrictStable") == 0)
    {
        __result = ROIStrictStable.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixPDFaceControlType::faceROIProcessStruct::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);

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

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

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

    return __result;
}

bool chromatixPDFaceControlType::ROIMoveConvergeSuppressStruct::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "stableCountThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)stableCountThreshold, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "moveThresholdInX") == 0)
    {
        ParameterUtils::DoubleToString((double)moveThresholdInX, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "moveThresholdInY") == 0)
    {
        ParameterUtils::DoubleToString((double)moveThresholdInY, __value, __size);
        __result = true;
    }

    return __result;
}

bool chromatixPDFaceControlType::ROIMoveConvergeSuppressStruct::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "stableCountThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            stableCountThreshold = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "moveThresholdInX") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            moveThresholdInX = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "moveThresholdInY") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            moveThresholdInY = (float)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDFaceControlType::ROIMoveConvergeSuppressStruct::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);

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

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

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

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

    return __result;
}

bool chromatixPDFaceControlType::defocusFilterStruct::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "length") == 0)
    {
        ParameterUtils::DoubleToString((double)length, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "confidenceHighThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)confidenceHighThreshold, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDFaceControlType::defocusFilterStruct::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "length") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            length = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "confidenceHighThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            confidenceHighThreshold = (UINT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDFaceControlType::defocusFilterStruct::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);

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

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

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

    return __result;
}

bool chromatixPDFaceControlType::fallbackStruct::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fallbackROISizeThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)fallbackROISizeThreshold, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDFaceControlType::fallbackStruct::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fallbackROISizeThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fallbackROISizeThreshold = (UINT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDFaceControlType::fallbackStruct::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);

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

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

    return __result;
}

bool chromatixPDFaceControlType::faceChangeRefocusTriggerStruct::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "roiChangeThreshPercentage") == 0)
    {
        ParameterUtils::DoubleToString((double)roiChangeThreshPercentage, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "roiSizeStableThresh") == 0)
    {
        ParameterUtils::DoubleToString((double)roiSizeStableThresh, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDFaceControlType::faceChangeRefocusTriggerStruct::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "roiChangeThreshPercentage") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            roiChangeThreshPercentage = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "roiSizeStableThresh") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            roiSizeStableThresh = (UINT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDFaceControlType::faceChangeRefocusTriggerStruct::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);

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

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

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

    return __result;
}

bool chromatixlensPosIntervalListEntriesType::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, "lpInterval") == 0)
    {
        ParameterUtils::DoubleToString((double)lpInterval, __value, __size);
        __result = true;
    }

    return __result;
}

bool chromatixlensPosIntervalListEntriesType::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, "lpInterval") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lpInterval = (float)dblValue; 
        }
    }

    return __result;
}

bool chromatixlensPosIntervalListEntriesType::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);

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

    return __result;
}

bool chromatixlensPosIntervalListType::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, "lensPosIntervalListEntries") == 0)
    {
        if (__index < lensPosIntervalListEntriesCount)
        {
            __result = lensPosIntervalListEntries[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool chromatixlensPosIntervalListType::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, "lensPosIntervalListEntries") == 0)
    {
        if (__index < lensPosIntervalListEntriesCount)
        {
            __result = lensPosIntervalListEntries[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool chromatixlensPosIntervalListType::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);

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

    return __result;
}

bool chromatixluxNodeListEntriesType::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, "luxIndex") == 0)
    {
        ParameterUtils::DoubleToString((double)luxIndex, __value, __size);
        __result = true;
    }

    return __result;
}

bool chromatixluxNodeListEntriesType::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, "luxIndex") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            luxIndex = (float)dblValue; 
        }
    }

    return __result;
}

bool chromatixluxNodeListEntriesType::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);

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

    return __result;
}

bool chromatixluxNodeListType::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, "luxNodeListEntries") == 0)
    {
        if (__index < luxNodeListEntriesCount)
        {
            __result = luxNodeListEntries[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool chromatixluxNodeListType::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, "luxNodeListEntries") == 0)
    {
        if (__index < luxNodeListEntriesCount)
        {
            __result = luxNodeListEntries[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool chromatixluxNodeListType::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);

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

    return __result;
}

bool chromatixAdaptivePDOffsetCorrectionType::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, "minSampleRequired") == 0)
    {
        ParameterUtils::DoubleToString((double)minSampleRequired, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "maxSampleCount") == 0)
    {
        ParameterUtils::DoubleToString((double)maxSampleCount, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "enableOutlierRemoval") == 0)
    {
        ParameterUtils::DoubleToString((double)enableOutlierRemoval, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "outlierRemovalRatio") == 0)
    {
        ParameterUtils::DoubleToString((double)outlierRemovalRatio, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "pdSampleConfThresholdMin") == 0)
    {
        ParameterUtils::DoubleToString((double)pdSampleConfThresholdMin, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "interpolateDistance") == 0)
    {
        ParameterUtils::DoubleToString((double)interpolateDistance, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "recollectSampleTimeThres") == 0)
    {
        ParameterUtils::DoubleToString((double)recollectSampleTimeThres, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "maxFinesearchFrameCount") == 0)
    {
        ParameterUtils::DoubleToString((double)maxFinesearchFrameCount, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "enableFastStartMode") == 0)
    {
        ParameterUtils::DoubleToString((double)enableFastStartMode, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "defocusOffsetMin") == 0)
    {
        ParameterUtils::DoubleToString((double)defocusOffsetMin, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "defocusOffsetMax") == 0)
    {
        ParameterUtils::DoubleToString((double)defocusOffsetMax, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "frameDelayCount") == 0)
    {
        ParameterUtils::DoubleToString((double)frameDelayCount, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "maxSlope") == 0)
    {
        ParameterUtils::DoubleToString((double)maxSlope, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "minDistributionScore") == 0)
    {
        ParameterUtils::DoubleToString((double)minDistributionScore, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "numTemperatureNode") == 0)
    {
        ParameterUtils::DoubleToString((double)numTemperatureNode, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "minTemp") == 0)
    {
        ParameterUtils::DoubleToString((double)minTemp, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "maxTemp") == 0)
    {
        ParameterUtils::DoubleToString((double)maxTemp, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "diffusionRatio1") == 0)
    {
        ParameterUtils::DoubleToString((double)diffusionRatio1, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "diffusionRatio2") == 0)
    {
        ParameterUtils::DoubleToString((double)diffusionRatio2, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "mapWidth") == 0)
    {
        ParameterUtils::DoubleToString((double)mapWidth, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "mapHeight") == 0)
    {
        ParameterUtils::DoubleToString((double)mapHeight, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "minGridMapOverlapRatio1") == 0)
    {
        ParameterUtils::DoubleToString((double)minGridMapOverlapRatio1, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "minGridMapOverlapRatio2") == 0)
    {
        ParameterUtils::DoubleToString((double)minGridMapOverlapRatio2, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "scGyroThres") == 0)
    {
        ParameterUtils::DoubleToString((double)scGyroThres, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "scMVThres") == 0)
    {
        ParameterUtils::DoubleToString((double)scMVThres, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "luxNodeList") == 0)
    {
        __result = luxNodeList.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "lensPosIntervalList") == 0)
    {
        __result = lensPosIntervalList.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixAdaptivePDOffsetCorrectionType::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 = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "minSampleRequired") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            minSampleRequired = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "maxSampleCount") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            maxSampleCount = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "enableOutlierRemoval") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enableOutlierRemoval = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "outlierRemovalRatio") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            outlierRemovalRatio = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "pdSampleConfThresholdMin") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            pdSampleConfThresholdMin = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "interpolateDistance") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            interpolateDistance = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "recollectSampleTimeThres") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            recollectSampleTimeThres = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "maxFinesearchFrameCount") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            maxFinesearchFrameCount = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "enableFastStartMode") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enableFastStartMode = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "defocusOffsetMin") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            defocusOffsetMin = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "defocusOffsetMax") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            defocusOffsetMax = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "frameDelayCount") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            frameDelayCount = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "maxSlope") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            maxSlope = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "minDistributionScore") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            minDistributionScore = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "numTemperatureNode") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            numTemperatureNode = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "minTemp") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            minTemp = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "maxTemp") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            maxTemp = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "diffusionRatio1") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            diffusionRatio1 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "diffusionRatio2") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            diffusionRatio2 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "mapWidth") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            mapWidth = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "mapHeight") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            mapHeight = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "minGridMapOverlapRatio1") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            minGridMapOverlapRatio1 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "minGridMapOverlapRatio2") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            minGridMapOverlapRatio2 = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "scGyroThres") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            scGyroThres = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "scMVThres") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            scMVThres = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "luxNodeList") == 0)
    {
        __result = luxNodeList.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "lensPosIntervalList") == 0)
    {
        __result = lensPosIntervalList.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixAdaptivePDOffsetCorrectionType::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::UInt32, (double)enable, 0));
    }
    else if (PARAMETER_STRCMP(__name, "enable") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::UInt32, (double)enable, 0));
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    return __result;
}

bool chromatixPDMultiwindowType::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, "HNumWindows") == 0)
    {
        ParameterUtils::DoubleToString((double)HNumWindows, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "VNumWindows") == 0)
    {
        ParameterUtils::DoubleToString((double)VNumWindows, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "PDPercentile") == 0)
    {
        ParameterUtils::DoubleToString((double)PDPercentile, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "defocusThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)defocusThreshold, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "confidenceThMultiple") == 0)
    {
        ParameterUtils::DoubleToString((double)confidenceThMultiple, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "multiDepthDetect") == 0)
    {
        __result = multiDepthDetect.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "lowLightDetect") == 0)
    {
        __result = lowLightDetect.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "lockToPeripheralDuringSearch") == 0)
    {
        ParameterUtils::DoubleToString((double)lockToPeripheralDuringSearch, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "activZoomControl") == 0)
    {
        __result = activZoomControl.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "saliencyMWTuning") == 0)
    {
        __result = saliencyMWTuning.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "motionMWTuning") == 0)
    {
        __result = motionMWTuning.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixPDMultiwindowType::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, "HNumWindows") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            HNumWindows = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "VNumWindows") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            VNumWindows = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "PDPercentile") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            PDPercentile = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "defocusThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            defocusThreshold = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "confidenceThMultiple") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            confidenceThMultiple = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "multiDepthDetect") == 0)
    {
        __result = multiDepthDetect.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "lowLightDetect") == 0)
    {
        __result = lowLightDetect.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "lockToPeripheralDuringSearch") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            lockToPeripheralDuringSearch = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "activZoomControl") == 0)
    {
        __result = activZoomControl.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "saliencyMWTuning") == 0)
    {
        __result = saliencyMWTuning.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "motionMWTuning") == 0)
    {
        __result = motionMWTuning.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixPDMultiwindowType::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));
    }

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

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

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

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

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

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

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

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

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

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

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

    return __result;
}

bool chromatixPDMultiwindowType::multiDepthDetectStruct::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, "percentile") == 0)
    {
        ParameterUtils::DoubleToString((double)percentile, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "detectThLow") == 0)
    {
        ParameterUtils::DoubleToString((double)detectThLow, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "detectThHigh") == 0)
    {
        ParameterUtils::DoubleToString((double)detectThHigh, __value, __size);
        __result = true;
    }

    return __result;
}

bool chromatixPDMultiwindowType::multiDepthDetectStruct::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, "percentile") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            percentile = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "detectThLow") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            detectThLow = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "detectThHigh") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            detectThHigh = (float)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDMultiwindowType::multiDepthDetectStruct::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);

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

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

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

    return __result;
}

bool chromatixPDMultiwindowType::lowLightDetectStruct::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, "gainThLow") == 0)
    {
        ParameterUtils::DoubleToString((double)gainThLow, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "gainThHigh") == 0)
    {
        ParameterUtils::DoubleToString((double)gainThHigh, __value, __size);
        __result = true;
    }

    return __result;
}

bool chromatixPDMultiwindowType::lowLightDetectStruct::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, "gainThLow") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            gainThLow = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "gainThHigh") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            gainThHigh = (float)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDMultiwindowType::lowLightDetectStruct::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);

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

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

    return __result;
}

bool chromatixPDMultiwindowType::activZoomControlStruct::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "zoomThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)zoomThreshold, __value, __size);
        __result = true;
    }

    return __result;
}

bool chromatixPDMultiwindowType::activZoomControlStruct::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "zoomThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            zoomThreshold = (float)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDMultiwindowType::activZoomControlStruct::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);

    // 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));
    }

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

    return __result;
}

bool chromatixPDMultiwindowType::saliencyMWTuningStruct::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, "saliencyTh") == 0)
    {
        ParameterUtils::DoubleToString((double)saliencyTh, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "saliencyStdTh") == 0)
    {
        ParameterUtils::DoubleToString((double)saliencyStdTh, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "saliencyPriorityWeight") == 0)
    {
        ParameterUtils::DoubleToString((double)saliencyPriorityWeight, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "saliencyLUT") == 0)
    {
        __result = saliencyLUT.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "phaseDiffLUT") == 0)
    {
        __result = phaseDiffLUT.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "confidenceLUT") == 0)
    {
        __result = confidenceLUT.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixPDMultiwindowType::saliencyMWTuningStruct::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, "saliencyTh") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            saliencyTh = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "saliencyStdTh") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            saliencyStdTh = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "saliencyPriorityWeight") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            saliencyPriorityWeight = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "saliencyLUT") == 0)
    {
        __result = saliencyLUT.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "phaseDiffLUT") == 0)
    {
        __result = phaseDiffLUT.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "confidenceLUT") == 0)
    {
        __result = confidenceLUT.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixPDMultiwindowType::saliencyMWTuningStruct::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));
    }

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

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

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

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

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

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

    return __result;
}

bool chromatixPDMultiwindowType::motionMWTuningStruct::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "motionTh") == 0)
    {
        ParameterUtils::DoubleToString((double)motionTh, __value, __size);
        __result = true;
    }

    return __result;
}

bool chromatixPDMultiwindowType::motionMWTuningStruct::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "motionTh") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            motionTh = (float)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDMultiwindowType::motionMWTuningStruct::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);

    // 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));
    }

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

    return __result;
}

bool chromatixPDInternalType::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, "type") == 0)
    {
        ParameterUtils::DoubleToString((double)type, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "initialPosition") == 0)
    {
        ParameterUtils::DoubleToString((double)initialPosition, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "PDAFEnableFaceCAFPriority") == 0)
    {
        ParameterUtils::DoubleToString((double)PDAFEnableFaceCAFPriority, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "incDefocusThresholdPreviousError") == 0)
    {
        ParameterUtils::DoubleToString((double)incDefocusThresholdPreviousError, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fineScanRangeEnhance") == 0)
    {
        ParameterUtils::DoubleToString((double)fineScanRangeEnhance, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "softRegionThresholdMultiplier") == 0)
    {
        ParameterUtils::DoubleToString((double)softRegionThresholdMultiplier, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "enableSoftConfidenceThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)enableSoftConfidenceThreshold, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "softConfidenceThresholdDelta") == 0)
    {
        ParameterUtils::DoubleToString((double)softConfidenceThresholdDelta, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "softConfidenceFocus_pnt") == 0)
    {
        ParameterUtils::DoubleToString((double)softConfidenceFocus_pnt, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "enableSoftRegionThresholdHigh") == 0)
    {
        ParameterUtils::DoubleToString((double)enableSoftRegionThresholdHigh, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "softRegionThresholdHighMultiplier") == 0)
    {
        ParameterUtils::DoubleToString((double)softRegionThresholdHighMultiplier, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "softSceneChangeCount") == 0)
    {
        ParameterUtils::DoubleToString((double)softSceneChangeCount, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "cafStableFrameAllow") == 0)
    {
        __result = cafStableFrameAllow.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixPDInternalType::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, "type") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            type = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "initialPosition") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            initialPosition = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "PDAFEnableFaceCAFPriority") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            PDAFEnableFaceCAFPriority = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "incDefocusThresholdPreviousError") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            incDefocusThresholdPreviousError = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fineScanRangeEnhance") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fineScanRangeEnhance = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "softRegionThresholdMultiplier") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            softRegionThresholdMultiplier = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "enableSoftConfidenceThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enableSoftConfidenceThreshold = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "softConfidenceThresholdDelta") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            softConfidenceThresholdDelta = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "softConfidenceFocus_pnt") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            softConfidenceFocus_pnt = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "enableSoftRegionThresholdHigh") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enableSoftRegionThresholdHigh = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "softRegionThresholdHighMultiplier") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            softRegionThresholdHighMultiplier = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "softSceneChangeCount") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            softSceneChangeCount = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "cafStableFrameAllow") == 0)
    {
        __result = cafStableFrameAllow.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixPDInternalType::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);

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

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

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

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

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

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

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

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

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

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

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

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

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

    return __result;
}

bool chromatixPDInternalType::cafStableFrameAllowStruct::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "frameCount") == 0)
    {
        ParameterUtils::DoubleToString((double)frameCount, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDInternalType::cafStableFrameAllowStruct::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "frameCount") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            frameCount = (UINT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDInternalType::cafStableFrameAllowStruct::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);

    // 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));
    }

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

    return __result;
}

bool chromatixPDPreprocessingType::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "enableDoNotUseDefocusSampleByPD") == 0)
    {
        ParameterUtils::DoubleToString((double)enableDoNotUseDefocusSampleByPD, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "enableIncMinConfidenceThresholdByPD") == 0)
    {
        ParameterUtils::DoubleToString((double)enableIncMinConfidenceThresholdByPD, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "PDMaxLimitDoNotUseDefocusSample") == 0)
    {
        ParameterUtils::DoubleToString((double)PDMaxLimitDoNotUseDefocusSample, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "PDMaxLimitIncMinConfidenceThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)PDMaxLimitIncMinConfidenceThreshold, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "incMinConfidenceThresholdByPDScaler") == 0)
    {
        ParameterUtils::DoubleToString((double)incMinConfidenceThresholdByPDScaler, __value, __size);
        __result = true;
    }

    return __result;
}

bool chromatixPDPreprocessingType::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "enableDoNotUseDefocusSampleByPD") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enableDoNotUseDefocusSampleByPD = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "enableIncMinConfidenceThresholdByPD") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enableIncMinConfidenceThresholdByPD = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "PDMaxLimitDoNotUseDefocusSample") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            PDMaxLimitDoNotUseDefocusSample = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "PDMaxLimitIncMinConfidenceThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            PDMaxLimitIncMinConfidenceThreshold = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "incMinConfidenceThresholdByPDScaler") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            incMinConfidenceThresholdByPDScaler = (float)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDPreprocessingType::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);

    // 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));
    }

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

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

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

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

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

    return __result;
}

bool chromatixPDMonitorType::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, "waitConfidenceRecoverCount") == 0)
    {
        ParameterUtils::DoubleToString((double)waitConfidenceRecoverCount, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "defocusedThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)defocusedThreshold, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "depthStableThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)depthStableThreshold, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "defocusStableFilterLength") == 0)
    {
        ParameterUtils::DoubleToString((double)defocusStableFilterLength, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDMonitorType::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, "waitConfidenceRecoverCount") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            waitConfidenceRecoverCount = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "defocusedThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            defocusedThreshold = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "depthStableThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            depthStableThreshold = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "defocusStableFilterLength") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            defocusStableFilterLength = (INT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDMonitorType::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);

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

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

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

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

    return __result;
}

bool chromatixPDFocusScanType::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, "focusConvergeFrameSkip") == 0)
    {
        ParameterUtils::DoubleToString((double)focusConvergeFrameSkip, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "enableFineScan") == 0)
    {
        ParameterUtils::DoubleToString((double)enableFineScan, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "minimumFineScanRange") == 0)
    {
        ParameterUtils::DoubleToString((double)minimumFineScanRange, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "fineScanStepSize") == 0)
    {
        ParameterUtils::DoubleToString((double)fineScanStepSize, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "focusDoneThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)focusDoneThreshold, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "enableFineScanExtension") == 0)
    {
        ParameterUtils::DoubleToString((double)enableFineScanExtension, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "firstRunNotConfidenceAdd") == 0)
    {
        ParameterUtils::DoubleToString((double)firstRunNotConfidenceAdd, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDFocusScanType::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, "focusConvergeFrameSkip") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            focusConvergeFrameSkip = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "enableFineScan") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enableFineScan = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "minimumFineScanRange") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            minimumFineScanRange = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "fineScanStepSize") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fineScanStepSize = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "focusDoneThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            focusDoneThreshold = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "enableFineScanExtension") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enableFineScanExtension = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "firstRunNotConfidenceAdd") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            firstRunNotConfidenceAdd = (INT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDFocusScanType::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);

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

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

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

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

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

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

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

    return __result;
}

bool chromatixPDDofScalerEntryType::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, "normalizedLensPosition") == 0)
    {
        ParameterUtils::DoubleToString((double)normalizedLensPosition, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "dofScaler") == 0)
    {
        ParameterUtils::DoubleToString((double)dofScaler, __value, __size);
        __result = true;
    }

    return __result;
}

bool chromatixPDDofScalerEntryType::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, "normalizedLensPosition") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            normalizedLensPosition = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "dofScaler") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            dofScaler = (float)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDDofScalerEntryType::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);

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

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

    return __result;
}

bool chromatixPDDofScalerTableType::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, "dofScalerEntries") == 0)
    {
        if (__index < dofScalerEntriesCount)
        {
            __result = dofScalerEntries[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool chromatixPDDofScalerTableType::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, "dofScalerEntries") == 0)
    {
        if (__index < dofScalerEntriesCount)
        {
            __result = dofScalerEntries[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool chromatixPDDofScalerTableType::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);

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

    return __result;
}

bool chromatixPDStableTableEntryType::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, "FPS") == 0)
    {
        ParameterUtils::DoubleToString((double)FPS, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "minimumStableCount") == 0)
    {
        ParameterUtils::DoubleToString((double)minimumStableCount, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDStableTableEntryType::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, "FPS") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            FPS = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "minimumStableCount") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            minimumStableCount = (INT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDStableTableEntryType::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);

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

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

    return __result;
}

bool chromatixPDStableTableType::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, "stableEntries") == 0)
    {
        if (__index < stableEntriesCount)
        {
            __result = stableEntries[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool chromatixPDStableTableType::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, "stableEntries") == 0)
    {
        if (__index < stableEntriesCount)
        {
            __result = stableEntries[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool chromatixPDStableTableType::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);

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

    return __result;
}

bool confidenceSensitivityModifierArr::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, "sceneBasedSensitivityModifier") == 0)
    {
        if (__index < sceneBasedSensitivityModifierCount)
        {
            __result = sceneBasedSensitivityModifier[__index].GetValue(&__path[__pos], __value, __size);
        }
    }
    else if (PARAMETER_STRCMP(__name, "roiTypeBasedSensitivityModifier") == 0)
    {
        if (__index < roiTypeBasedSensitivityModifierCount)
        {
            __result = roiTypeBasedSensitivityModifier[__index].GetValue(&__path[__pos], __value, __size);
        }
    }
    else if (PARAMETER_STRCMP(__name, "roiSizeBasedSensitivityModifier") == 0)
    {
        if (__index < roiSizeBasedSensitivityModifierCount)
        {
            __result = roiSizeBasedSensitivityModifier[__index].GetValue(&__path[__pos], __value, __size);
        }
    }
    else if (PARAMETER_STRCMP(__name, "zoomBasedSensitivityModifier") == 0)
    {
        if (__index < zoomBasedSensitivityModifierCount)
        {
            __result = zoomBasedSensitivityModifier[__index].GetValue(&__path[__pos], __value, __size);
        }
    }
    else if (PARAMETER_STRCMP(__name, "windowBasedSensitivityModifier") == 0)
    {
        if (__index < windowBasedSensitivityModifierCount)
        {
            __result = windowBasedSensitivityModifier[__index].GetValue(&__path[__pos], __value, __size);
        }
    }
    else if (PARAMETER_STRCMP(__name, "expIndexBasedSensitivityModifier") == 0)
    {
        if (__index < expIndexBasedSensitivityModifierCount)
        {
            __result = expIndexBasedSensitivityModifier[__index].GetValue(&__path[__pos], __value, __size);
        }
    }
    else if (PARAMETER_STRCMP(__name, "gainBasedSensitivityModifier") == 0)
    {
        if (__index < gainBasedSensitivityModifierCount)
        {
            __result = gainBasedSensitivityModifier[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool confidenceSensitivityModifierArr::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, "sceneBasedSensitivityModifier") == 0)
    {
        if (__index < sceneBasedSensitivityModifierCount)
        {
            __result = sceneBasedSensitivityModifier[__index].SetValue(&__path[__pos], __value);
        }
    }
    else if (PARAMETER_STRCMP(__name, "roiTypeBasedSensitivityModifier") == 0)
    {
        if (__index < roiTypeBasedSensitivityModifierCount)
        {
            __result = roiTypeBasedSensitivityModifier[__index].SetValue(&__path[__pos], __value);
        }
    }
    else if (PARAMETER_STRCMP(__name, "roiSizeBasedSensitivityModifier") == 0)
    {
        if (__index < roiSizeBasedSensitivityModifierCount)
        {
            __result = roiSizeBasedSensitivityModifier[__index].SetValue(&__path[__pos], __value);
        }
    }
    else if (PARAMETER_STRCMP(__name, "zoomBasedSensitivityModifier") == 0)
    {
        if (__index < zoomBasedSensitivityModifierCount)
        {
            __result = zoomBasedSensitivityModifier[__index].SetValue(&__path[__pos], __value);
        }
    }
    else if (PARAMETER_STRCMP(__name, "windowBasedSensitivityModifier") == 0)
    {
        if (__index < windowBasedSensitivityModifierCount)
        {
            __result = windowBasedSensitivityModifier[__index].SetValue(&__path[__pos], __value);
        }
    }
    else if (PARAMETER_STRCMP(__name, "expIndexBasedSensitivityModifier") == 0)
    {
        if (__index < expIndexBasedSensitivityModifierCount)
        {
            __result = expIndexBasedSensitivityModifier[__index].SetValue(&__path[__pos], __value);
        }
    }
    else if (PARAMETER_STRCMP(__name, "gainBasedSensitivityModifier") == 0)
    {
        if (__index < gainBasedSensitivityModifierCount)
        {
            __result = gainBasedSensitivityModifier[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool confidenceSensitivityModifierArr::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);

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

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

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

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

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

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

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

    return __result;
}

bool PDConfidenceThresholdsType::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, "low") == 0)
    {
        ParameterUtils::DoubleToString((double)low, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "mid") == 0)
    {
        ParameterUtils::DoubleToString((double)mid, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "high") == 0)
    {
        ParameterUtils::DoubleToString((double)high, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool PDConfidenceThresholdsType::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, "low") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            low = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "mid") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            mid = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "high") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            high = (INT32)dblValue; 
        }
    }

    return __result;
}

bool PDConfidenceThresholdsType::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);

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

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

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

    return __result;
}

bool sensitivityBasedConfidenceTableType::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, "normalConfidence") == 0)
    {
        __result = normalConfidence.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "highConfidence") == 0)
    {
        __result = highConfidence.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "sensitivityModifiers") == 0)
    {
        __result = sensitivityModifiers.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool sensitivityBasedConfidenceTableType::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 = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "normalConfidence") == 0)
    {
        __result = normalConfidence.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "highConfidence") == 0)
    {
        __result = highConfidence.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "sensitivityModifiers") == 0)
    {
        __result = sensitivityModifiers.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool sensitivityBasedConfidenceTableType::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));
    }

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

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

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

    return __result;
}

bool chromatixPDConfidenceTableEntryType::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, "noiseGain") == 0)
    {
        ParameterUtils::DoubleToString((double)noiseGain, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "minimumConfidence") == 0)
    {
        ParameterUtils::DoubleToString((double)minimumConfidence, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDConfidenceTableEntryType::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, "noiseGain") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            noiseGain = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "minimumConfidence") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            minimumConfidence = (INT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDConfidenceTableEntryType::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);

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

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

    return __result;
}

bool chromatixPDConfidenceTableType::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, "confidenceEntries") == 0)
    {
        if (__index < confidenceEntriesCount)
        {
            __result = confidenceEntries[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool chromatixPDConfidenceTableType::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, "confidenceEntries") == 0)
    {
        if (__index < confidenceEntriesCount)
        {
            __result = confidenceEntries[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool chromatixPDConfidenceTableType::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);

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

    return __result;
}

bool chromatixPDNoiseTableEntryType::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, "noiseGain") == 0)
    {
        ParameterUtils::DoubleToString((double)noiseGain, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "noiseGainMultiplier") == 0)
    {
        ParameterUtils::DoubleToString((double)noiseGainMultiplier, __value, __size);
        __result = true;
    }

    return __result;
}

bool chromatixPDNoiseTableEntryType::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, "noiseGain") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            noiseGain = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "noiseGainMultiplier") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            noiseGainMultiplier = (float)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDNoiseTableEntryType::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);

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

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

    return __result;
}

bool chromatixPDNoiseTableType::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, "noiseEntries") == 0)
    {
        if (__index < noiseEntriesCount)
        {
            __result = noiseEntries[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool chromatixPDNoiseTableType::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, "noiseEntries") == 0)
    {
        if (__index < noiseEntriesCount)
        {
            __result = noiseEntries[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool chromatixPDNoiseTableType::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);

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

    return __result;
}

bool chromatixPDROIConfigType::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, "ROILocationY") == 0)
    {
        ParameterUtils::DoubleToString((double)ROILocationY, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "ROILocationX") == 0)
    {
        ParameterUtils::DoubleToString((double)ROILocationX, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "ROINumRows") == 0)
    {
        ParameterUtils::DoubleToString((double)ROINumRows, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "ROINumCols") == 0)
    {
        ParameterUtils::DoubleToString((double)ROINumCols, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDROIConfigType::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, "ROILocationY") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            ROILocationY = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "ROILocationX") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            ROILocationX = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "ROINumRows") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            ROINumRows = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "ROINumCols") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            ROINumCols = (INT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDROIConfigType::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);

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

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

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

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

    return __result;
}

bool chromatixPDROIType::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, "Configuration") == 0)
    {
        if (__index < ConfigurationCount)
        {
            __result = Configuration[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool chromatixPDROIType::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, "Configuration") == 0)
    {
        if (__index < ConfigurationCount)
        {
            __result = Configuration[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool chromatixPDROIType::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);

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

    return __result;
}

bool chromatixPDAFType::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, "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, "is2PDEnable") == 0)
    {
        ParameterUtils::DoubleToString((double)is2PDEnable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "ROI") == 0)
    {
        __result = ROI.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "focusTable") == 0)
    {
        __result = focusTable.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "noiseTable") == 0)
    {
        __result = noiseTable.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "confidenceTable") == 0)
    {
        __result = confidenceTable.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "confidenceHighTable") == 0)
    {
        __result = confidenceHighTable.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "sensitivityBasedConfidenceTable") == 0)
    {
        __result = sensitivityBasedConfidenceTable.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "fallbackConfidence") == 0)
    {
        ParameterUtils::DoubleToString((double)fallbackConfidence, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "stableTable") == 0)
    {
        __result = stableTable.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "dofScalerTable") == 0)
    {
        __result = dofScalerTable.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "focusScan") == 0)
    {
        __result = focusScan.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "sceneMonitor") == 0)
    {
        __result = sceneMonitor.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "PDPreprocessing") == 0)
    {
        __result = PDPreprocessing.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "PDInternal") == 0)
    {
        __result = PDInternal.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "PDMultiWindow") == 0)
    {
        __result = PDMultiWindow.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "AdaptivePDOffsetCorrection") == 0)
    {
        __result = AdaptivePDOffsetCorrection.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "enablePDEarlyInterrupt") == 0)
    {
        ParameterUtils::DoubleToString((double)enablePDEarlyInterrupt, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "dynamicFrameSkipVBlankThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)dynamicFrameSkipVBlankThreshold, __value, __size);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "ledPdafMaxFrameAllow") == 0)
    {
        __result = ledPdafMaxFrameAllow.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "sparsePDTouchFaceConfidenceThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)sparsePDTouchFaceConfidenceThreshold, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "sparsePDTouchFaceLowDefocusConfidenceThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)sparsePDTouchFaceLowDefocusConfidenceThreshold, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "enableEnterLSPLowConfidenceHunting") == 0)
    {
        ParameterUtils::DoubleToString((double)enableEnterLSPLowConfidenceHunting, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "LSPLowConfidenceHuntingThreshold") == 0)
    {
        ParameterUtils::DoubleToString((double)LSPLowConfidenceHuntingThreshold, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "face") == 0)
    {
        __result = face.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "touch") == 0)
    {
        __result = touch.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "track") == 0)
    {
        __result = track.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "saliency") == 0)
    {
        __result = saliency.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "convergeDoneFilter") == 0)
    {
        __result = convergeDoneFilter.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "forceEnterFineSearch") == 0)
    {
        __result = forceEnterFineSearch.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "advancedSparseControl") == 0)
    {
        __result = advancedSparseControl.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "mlpdControl") == 0)
    {
        __result = mlpdControl.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "motionConvergeControl") == 0)
    {
        __result = motionConvergeControl.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "temporalFilter") == 0)
    {
        __result = temporalFilter.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "multiROISelection") == 0)
    {
        __result = multiROISelection.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixPDAFType::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, "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, "is2PDEnable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            is2PDEnable = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "ROI") == 0)
    {
        __result = ROI.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "focusTable") == 0)
    {
        __result = focusTable.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "noiseTable") == 0)
    {
        __result = noiseTable.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "confidenceTable") == 0)
    {
        __result = confidenceTable.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "confidenceHighTable") == 0)
    {
        __result = confidenceHighTable.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "sensitivityBasedConfidenceTable") == 0)
    {
        __result = sensitivityBasedConfidenceTable.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "fallbackConfidence") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            fallbackConfidence = (UINT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "stableTable") == 0)
    {
        __result = stableTable.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "dofScalerTable") == 0)
    {
        __result = dofScalerTable.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "focusScan") == 0)
    {
        __result = focusScan.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "sceneMonitor") == 0)
    {
        __result = sceneMonitor.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "PDPreprocessing") == 0)
    {
        __result = PDPreprocessing.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "PDInternal") == 0)
    {
        __result = PDInternal.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "PDMultiWindow") == 0)
    {
        __result = PDMultiWindow.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "AdaptivePDOffsetCorrection") == 0)
    {
        __result = AdaptivePDOffsetCorrection.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "enablePDEarlyInterrupt") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enablePDEarlyInterrupt = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "dynamicFrameSkipVBlankThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            dynamicFrameSkipVBlankThreshold = (float)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "ledPdafMaxFrameAllow") == 0)
    {
        __result = ledPdafMaxFrameAllow.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "sparsePDTouchFaceConfidenceThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            sparsePDTouchFaceConfidenceThreshold = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "sparsePDTouchFaceLowDefocusConfidenceThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            sparsePDTouchFaceLowDefocusConfidenceThreshold = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "enableEnterLSPLowConfidenceHunting") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enableEnterLSPLowConfidenceHunting = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "LSPLowConfidenceHuntingThreshold") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            LSPLowConfidenceHuntingThreshold = (INT32)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "face") == 0)
    {
        __result = face.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "touch") == 0)
    {
        __result = touch.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "track") == 0)
    {
        __result = track.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "saliency") == 0)
    {
        __result = saliency.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "convergeDoneFilter") == 0)
    {
        __result = convergeDoneFilter.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "forceEnterFineSearch") == 0)
    {
        __result = forceEnterFineSearch.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "advancedSparseControl") == 0)
    {
        __result = advancedSparseControl.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "mlpdControl") == 0)
    {
        __result = mlpdControl.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "motionConvergeControl") == 0)
    {
        __result = motionConvergeControl.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "temporalFilter") == 0)
    {
        __result = temporalFilter.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "multiROISelection") == 0)
    {
        __result = multiROISelection.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixPDAFType::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);

    // 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);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    return __result;
}

bool chromatixPDAFType::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 chromatixPDAFType::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 chromatixPDAFType::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 chromatixPDAFType::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 chromatixPDAFType::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 chromatixPDAFType::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 chromatixPDAFType::ledPdafMaxFrameAllowStruct::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, "enable") == 0)
    {
        ParameterUtils::DoubleToString((double)enable, __value, __size, 0);
        __result = true;
    }
    else if (PARAMETER_STRCMP(__name, "maxFrameCnt") == 0)
    {
        ParameterUtils::DoubleToString((double)maxFrameCnt, __value, __size, 0);
        __result = true;
    }

    return __result;
}

bool chromatixPDAFType::ledPdafMaxFrameAllowStruct::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, "enable") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            enable = (globalelements::enable_flag_type)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "maxFrameCnt") == 0)
    {
        const double dblValue = ParameterUtils::StringToDouble(__value, __result);
        if (__result)
        {
            maxFrameCnt = (UINT32)dblValue; 
        }
    }

    return __result;
}

bool chromatixPDAFType::ledPdafMaxFrameAllowStruct::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);

    // 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));
    }

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

    return __result;
}

bool chromatixPDAFType::motionConvergeControlStruct::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, "motionConvergeTable") == 0)
    {
        __result = motionConvergeTable.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixPDAFType::motionConvergeControlStruct::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, "motionConvergeTable") == 0)
    {
        __result = motionConvergeTable.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixPDAFType::motionConvergeControlStruct::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));
    }

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

    return __result;
}

bool chromatixPDAFType::temporalFilterStruct::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, "search") == 0)
    {
        __result = search.GetValue(&__path[__pos], __value, __size);
    }
    else if (PARAMETER_STRCMP(__name, "monitor") == 0)
    {
        __result = monitor.GetValue(&__path[__pos], __value, __size);
    }

    return __result;
}

bool chromatixPDAFType::temporalFilterStruct::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 = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "search") == 0)
    {
        __result = search.SetValue(&__path[__pos], __value);
    }
    else if (PARAMETER_STRCMP(__name, "monitor") == 0)
    {
        __result = monitor.SetValue(&__path[__pos], __value);
    }

    return __result;
}

bool chromatixPDAFType::temporalFilterStruct::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::Boolean, (double)enable, 0));
    }
    else if (PARAMETER_STRCMP(__name, "enable") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Boolean, (double)enable, 0));
    }

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

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

    return __result;
}

bool chromatixPDAFType::multiROISelectionStruct::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, "configArr") == 0)
    {
        if (__index < configArrCount)
        {
            __result = configArr[__index].GetValue(&__path[__pos], __value, __size);
        }
    }

    return __result;
}

bool chromatixPDAFType::multiROISelectionStruct::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 = (BOOL)dblValue; 
        }
    }
    else if (PARAMETER_STRCMP(__name, "configArr") == 0)
    {
        if (__index < configArrCount)
        {
            __result = configArr[__index].SetValue(&__path[__pos], __value);
        }
    }

    return __result;
}

bool chromatixPDAFType::multiROISelectionStruct::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::Boolean, (double)enable, 0));
    }
    else if (PARAMETER_STRCMP(__name, "enable") == 0)
    {
        __result = true;
        __info.Add(ParameterParserInfo(nullptr, ParameterParserDataType::Boolean, (double)enable, 0));
    }

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

    return __result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Default Constructor
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
chromatixPDAFTypeClass::chromatixPDAFTypeClass(
    const CHAR* name)
    : ParameterModule(name, MAJOR, MINOR, PATCH, nullptr)
{
    PARAMETER_INITIALIZE(SymbolTableID);
    PARAMETER_INITIALIZE(module_version);
    PARAMETER_INITIALIZE(parameter_version);
    PARAMETER_INITIALIZE(is2PDEnable);
    PARAMETER_INITIALIZE(ROI);
    PARAMETER_INITIALIZE(focusTable);
    PARAMETER_INITIALIZE(noiseTable);
    PARAMETER_INITIALIZE(confidenceTable);
    PARAMETER_INITIALIZE(confidenceHighTable);
    PARAMETER_INITIALIZE(sensitivityBasedConfidenceTable);
    PARAMETER_INITIALIZE(fallbackConfidence);
    PARAMETER_INITIALIZE(stableTable);
    PARAMETER_INITIALIZE(dofScalerTable);
    PARAMETER_INITIALIZE(focusScan);
    PARAMETER_INITIALIZE(sceneMonitor);
    PARAMETER_INITIALIZE(PDPreprocessing);
    PARAMETER_INITIALIZE(PDInternal);
    PARAMETER_INITIALIZE(PDMultiWindow);
    PARAMETER_INITIALIZE(AdaptivePDOffsetCorrection);
    PARAMETER_INITIALIZE(enablePDEarlyInterrupt);
    PARAMETER_INITIALIZE(dynamicFrameSkipVBlankThreshold);
    PARAMETER_INITIALIZE(ledPdafMaxFrameAllow);
    PARAMETER_INITIALIZE(sparsePDTouchFaceConfidenceThreshold);
    PARAMETER_INITIALIZE(sparsePDTouchFaceLowDefocusConfidenceThreshold);
    PARAMETER_INITIALIZE(enableEnterLSPLowConfidenceHunting);
    PARAMETER_INITIALIZE(LSPLowConfidenceHuntingThreshold);
    PARAMETER_INITIALIZE(face);
    PARAMETER_INITIALIZE(touch);
    PARAMETER_INITIALIZE(track);
    PARAMETER_INITIALIZE(saliency);
    PARAMETER_INITIALIZE(convergeDoneFilter);
    PARAMETER_INITIALIZE(forceEnterFineSearch);
    PARAMETER_INITIALIZE(advancedSparseControl);
    PARAMETER_INITIALIZE(mlpdControl);
    PARAMETER_INITIALIZE(motionConvergeControl);
    PARAMETER_INITIALIZE(temporalFilter);
    PARAMETER_INITIALIZE(multiROISelection);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Constructor
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
chromatixPDAFTypeClass::chromatixPDAFTypeClass(
    const CHAR*       name,
    ModuleData* const moduleData)
    : ParameterModule(name, MAJOR, MINOR, PATCH, moduleData)
{
    PARAMETER_INITIALIZE(SymbolTableID);
    PARAMETER_INITIALIZE(module_version);
    PARAMETER_INITIALIZE(parameter_version);
    PARAMETER_INITIALIZE(is2PDEnable);
    PARAMETER_INITIALIZE(ROI);
    PARAMETER_INITIALIZE(focusTable);
    PARAMETER_INITIALIZE(noiseTable);
    PARAMETER_INITIALIZE(confidenceTable);
    PARAMETER_INITIALIZE(confidenceHighTable);
    PARAMETER_INITIALIZE(sensitivityBasedConfidenceTable);
    PARAMETER_INITIALIZE(fallbackConfidence);
    PARAMETER_INITIALIZE(stableTable);
    PARAMETER_INITIALIZE(dofScalerTable);
    PARAMETER_INITIALIZE(focusScan);
    PARAMETER_INITIALIZE(sceneMonitor);
    PARAMETER_INITIALIZE(PDPreprocessing);
    PARAMETER_INITIALIZE(PDInternal);
    PARAMETER_INITIALIZE(PDMultiWindow);
    PARAMETER_INITIALIZE(AdaptivePDOffsetCorrection);
    PARAMETER_INITIALIZE(enablePDEarlyInterrupt);
    PARAMETER_INITIALIZE(dynamicFrameSkipVBlankThreshold);
    PARAMETER_INITIALIZE(ledPdafMaxFrameAllow);
    PARAMETER_INITIALIZE(sparsePDTouchFaceConfidenceThreshold);
    PARAMETER_INITIALIZE(sparsePDTouchFaceLowDefocusConfidenceThreshold);
    PARAMETER_INITIALIZE(enableEnterLSPLowConfidenceHunting);
    PARAMETER_INITIALIZE(LSPLowConfidenceHuntingThreshold);
    PARAMETER_INITIALIZE(face);
    PARAMETER_INITIALIZE(touch);
    PARAMETER_INITIALIZE(track);
    PARAMETER_INITIALIZE(saliency);
    PARAMETER_INITIALIZE(convergeDoneFilter);
    PARAMETER_INITIALIZE(forceEnterFineSearch);
    PARAMETER_INITIALIZE(advancedSparseControl);
    PARAMETER_INITIALIZE(mlpdControl);
    PARAMETER_INITIALIZE(motionConvergeControl);
    PARAMETER_INITIALIZE(temporalFilter);
    PARAMETER_INITIALIZE(multiROISelection);
}

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


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDAFROISelection
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFROISelection::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(type);
    PARAMETER_INITIALIZE(lowConfidenceMultiplier);
    PARAMETER_INITIALIZE(highConfidenceMultiplier);

    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 = 0xd7a23f43d1e0d686;
        entry->ReadEnumFixedArray(&type, 1, localParams);
        localParams.NameHash = 0xd532b5eebbf1ffd2;
        entry->ReadSimpleTypeFixedArray(&lowConfidenceMultiplier, 1, localParams);
        localParams.NameHash = 0x8abbf2849f090313;
        entry->ReadSimpleTypeFixedArray(&highConfidenceMultiplier, 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 chromatixPDAFROISelection::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDAFROISelection* arrayPtr = (chromatixPDAFROISelection*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDAFTemporalFilterSettingType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFTemporalFilterSettingType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(gainThreshold);
    PARAMETER_INITIALIZE(confidenceWeightLUT);
    PARAMETER_INITIALIZE(lensMoveWeightLUT);
    PARAMETER_INITIALIZE(frameDelayWeight);

    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 = 0xacd55095d0db5d11;
        entry->ReadSimpleTypeFixedArray(&gainThreshold, 1, localParams);
        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0xa8b8522c70e0e85c;
        confidenceWeightLUT.Load(localParams);
        localParams.NameHash        = 0x8cd0beb334519385;
        lensMoveWeightLUT.Load(localParams);
        localParams.NameHash        = 0xe2151fdac7d8eb18;
        frameDelayWeight.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 chromatixPDAFTemporalFilterSettingType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDAFTemporalFilterSettingType* arrayPtr = (chromatixPDAFTemporalFilterSettingType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDAFTemporalFilterSettingType_frameDelayWeightStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFTemporalFilterSettingType::frameDelayWeightStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(weightsCount);
    PARAMETER_INITIALIZE(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 = 0xaf07aeeb13124374;
        entry->ReadSimpleTypeArray(weights, weightsCount, weightsID, 2,
            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 chromatixPDAFTemporalFilterSettingType::frameDelayWeightStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        frameDelayWeightStruct* arrayPtr = (frameDelayWeightStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDAFTemporalFilterType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFTemporalFilterType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(settingCount);
    PARAMETER_INITIALIZE(setting);

    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 = 0xdc82d8c8ba1cce6e;
        entry->ReadStructureArray(setting, settingCount, settingID, 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 chromatixPDAFTemporalFilterType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDAFTemporalFilterType* arrayPtr = (chromatixPDAFTemporalFilterType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDMotionConvergeScalerEntryType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDMotionConvergeScalerEntryType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(motion);
    PARAMETER_INITIALIZE(scaler);

    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 = 0xdd138519bb67f559;
        entry->ReadSimpleTypeFixedArray(&motion, 1, localParams);
        localParams.NameHash = 0x914c5db6794b8704;
        entry->ReadSimpleTypeFixedArray(&scaler, 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 chromatixPDMotionConvergeScalerEntryType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDMotionConvergeScalerEntryType* arrayPtr = (chromatixPDMotionConvergeScalerEntryType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDMotionConvergeType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDMotionConvergeType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(motionConvergeEntriesCount);
    PARAMETER_INITIALIZE(motionConvergeEntries);

    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 = 0x94a4911ef68f98b0;
        entry->ReadStructureArray(motionConvergeEntries, motionConvergeEntriesCount, motionConvergeEntriesID, 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 chromatixPDMotionConvergeType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDMotionConvergeType* arrayPtr = (chromatixPDMotionConvergeType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixMLPDControlType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixMLPDControlType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enableMLPD);

    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 = 0x821bb4990dbee9d4;
        entry->ReadSimpleTypeFixedArray(&enableMLPD, 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 chromatixMLPDControlType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixMLPDControlType* arrayPtr = (chromatixMLPDControlType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDFocusTableEntryType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDFocusTableEntryType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(defocus);
    PARAMETER_INITIALIZE(movePercent);

    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 = 0xd28c1892856615e1;
        entry->ReadSimpleTypeFixedArray(&defocus, 1, localParams);
        localParams.NameHash = 0x9105224798b903da;
        entry->ReadSimpleTypeFixedArray(&movePercent, 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 chromatixPDFocusTableEntryType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDFocusTableEntryType* arrayPtr = (chromatixPDFocusTableEntryType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDFocusTableType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDFocusTableType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(focusEntriesCount);
    PARAMETER_INITIALIZE(focusEntries);

    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 = 0xb6430c2548bf0403;
        entry->ReadStructureArray(focusEntries, focusEntriesCount, focusEntriesID, 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 chromatixPDFocusTableType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDFocusTableType* arrayPtr = (chromatixPDFocusTableType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixAdvancedSparsePDControlType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixAdvancedSparsePDControlType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enableForSparsePD);
    PARAMETER_INITIALIZE(skipFineScan);
    PARAMETER_INITIALIZE(focusDoneThreshold);
    PARAMETER_INITIALIZE(focusTable);

    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 = 0xe4c8b45e37e7d222;
        entry->ReadSimpleTypeFixedArray(&enableForSparsePD, 1, localParams);
        localParams.NameHash = 0xbe417bf9de28d176;
        entry->ReadSimpleTypeFixedArray(&skipFineScan, 1, localParams);
        localParams.NameHash = 0xfe697a845560a44a;
        entry->ReadSimpleTypeFixedArray(&focusDoneThreshold, 1, localParams);
        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0xbe4c2765a3dfd0d8;
        focusTable.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 chromatixAdvancedSparsePDControlType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixAdvancedSparsePDControlType* arrayPtr = (chromatixAdvancedSparsePDControlType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDForceEnterFineSearchType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDForceEnterFineSearchType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(directionReverseCountThreshold);

    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 = 0xaf6668d33c1e26b4;
        entry->ReadSimpleTypeFixedArray(&directionReverseCountThreshold, 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 chromatixPDForceEnterFineSearchType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDForceEnterFineSearchType* arrayPtr = (chromatixPDForceEnterFineSearchType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromaitxPDConvergeDoneFilterType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromaitxPDConvergeDoneFilterType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(length);
    PARAMETER_INITIALIZE(threshold);

    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 = 0xd389d73d6fdb33b4;
        entry->ReadSimpleTypeFixedArray(&length, 1, localParams);
        localParams.NameHash = 0xe04ba95df59bbd7c;
        entry->ReadSimpleTypeFixedArray(&threshold, 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 chromaitxPDConvergeDoneFilterType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromaitxPDConvergeDoneFilterType* arrayPtr = (chromaitxPDConvergeDoneFilterType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDSaliencyControlType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDSaliencyControlType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(saliencyROIProcess);
    PARAMETER_INITIALIZE(minMoveThreshold);
    PARAMETER_INITIALIZE(defocusFilter);
    PARAMETER_INITIALIZE(fallback);

    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        = 0x949db53707159756;
        saliencyROIProcess.Load(localParams);
        localParams.NameHash = 0x8940c050b48341b7;
        entry->ReadSimpleTypeFixedArray(&minMoveThreshold, 1, localParams);
        localParams.NameHash        = 0x893080b645a45420;
        defocusFilter.Load(localParams);
        localParams.NameHash        = 0xe0784833c196a9bc;
        fallback.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 chromatixPDSaliencyControlType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDSaliencyControlType* arrayPtr = (chromatixPDSaliencyControlType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDSaliencyControlType_saliencyROIProcessStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDSaliencyControlType::saliencyROIProcessStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(saliencyROIRoughStable);
    PARAMETER_INITIALIZE(saliencyROIStrictStable);

    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        = 0x8c7b44583b37f238;
        saliencyROIRoughStable.Load(localParams);
        localParams.NameHash        = 0xcda6dc244a45cc37;
        saliencyROIStrictStable.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 chromatixPDSaliencyControlType::saliencyROIProcessStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        saliencyROIProcessStruct* arrayPtr = (saliencyROIProcessStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDSaliencyControlType_defocusFilterStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDSaliencyControlType::defocusFilterStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(length);
    PARAMETER_INITIALIZE(confidenceHighThreshold);

    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 = 0xd389d73d6fdb33b4;
        entry->ReadSimpleTypeFixedArray(&length, 1, localParams);
        localParams.NameHash = 0x98155b33073646d6;
        entry->ReadSimpleTypeFixedArray(&confidenceHighThreshold, 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 chromatixPDSaliencyControlType::defocusFilterStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        defocusFilterStruct* arrayPtr = (defocusFilterStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDSaliencyControlType_fallbackStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDSaliencyControlType::fallbackStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(fallbackROISizeThreshold);

    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 = 0x8e816f51f74e6dc0;
        entry->ReadSimpleTypeFixedArray(&fallbackROISizeThreshold, 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 chromatixPDSaliencyControlType::fallbackStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fallbackStruct* arrayPtr = (fallbackStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDTrackControlType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDTrackControlType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(trackROIProcess);
    PARAMETER_INITIALIZE(minMoveThreshold);
    PARAMETER_INITIALIZE(defocusFilter);
    PARAMETER_INITIALIZE(fallback);

    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        = 0xfa743414eaa03e63;
        trackROIProcess.Load(localParams);
        localParams.NameHash = 0x8940c050b48341b7;
        entry->ReadSimpleTypeFixedArray(&minMoveThreshold, 1, localParams);
        localParams.NameHash        = 0x893080b645a45420;
        defocusFilter.Load(localParams);
        localParams.NameHash        = 0xe0784833c196a9bc;
        fallback.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 chromatixPDTrackControlType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDTrackControlType* arrayPtr = (chromatixPDTrackControlType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDTrackControlType_trackROIProcessStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDTrackControlType::trackROIProcessStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(trackROIRoughStable);
    PARAMETER_INITIALIZE(trackROIStrictStable);

    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        = 0xbc08d30b9f95eec9;
        trackROIRoughStable.Load(localParams);
        localParams.NameHash        = 0xfe70d41c194e34bb;
        trackROIStrictStable.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 chromatixPDTrackControlType::trackROIProcessStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        trackROIProcessStruct* arrayPtr = (trackROIProcessStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDTrackControlType_defocusFilterStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDTrackControlType::defocusFilterStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(length);
    PARAMETER_INITIALIZE(confidenceHighThreshold);

    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 = 0xd389d73d6fdb33b4;
        entry->ReadSimpleTypeFixedArray(&length, 1, localParams);
        localParams.NameHash = 0x98155b33073646d6;
        entry->ReadSimpleTypeFixedArray(&confidenceHighThreshold, 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 chromatixPDTrackControlType::defocusFilterStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        defocusFilterStruct* arrayPtr = (defocusFilterStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDTrackControlType_fallbackStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDTrackControlType::fallbackStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(fallbackROISizeThreshold);

    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 = 0x8e816f51f74e6dc0;
        entry->ReadSimpleTypeFixedArray(&fallbackROISizeThreshold, 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 chromatixPDTrackControlType::fallbackStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fallbackStruct* arrayPtr = (fallbackStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDTouchControlType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDTouchControlType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(offCenterThreshold);
    PARAMETER_INITIALIZE(skipSearchIfSceneInFocus);

    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 = 0xb3c19bf9c01a5334;
        entry->ReadSimpleTypeFixedArray(&offCenterThreshold, 1, localParams);
        localParams.NameHash = 0x8ed7bc61a68bdee8;
        entry->ReadSimpleTypeFixedArray(&skipSearchIfSceneInFocus, 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 chromatixPDTouchControlType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDTouchControlType* arrayPtr = (chromatixPDTouchControlType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDFaceControlType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDFaceControlType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(faceROIProcess);
    PARAMETER_INITIALIZE(minMoveThreshold);
    PARAMETER_INITIALIZE(ROIMoveConvergeSuppress);
    PARAMETER_INITIALIZE(defocusFilter);
    PARAMETER_INITIALIZE(fallback);
    PARAMETER_INITIALIZE(faceChangeRefocusTrigger);

    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        = 0xfdf730af9f8e7c6a;
        faceROIProcess.Load(localParams);
        localParams.NameHash = 0x8940c050b48341b7;
        entry->ReadSimpleTypeFixedArray(&minMoveThreshold, 1, localParams);
        localParams.NameHash        = 0x9804ec9ed69df8e1;
        ROIMoveConvergeSuppress.Load(localParams);
        localParams.NameHash        = 0x893080b645a45420;
        defocusFilter.Load(localParams);
        localParams.NameHash        = 0xe0784833c196a9bc;
        fallback.Load(localParams);
        localParams.NameHash        = 0xf11f718b6d4d3e7e;
        faceChangeRefocusTrigger.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 chromatixPDFaceControlType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDFaceControlType* arrayPtr = (chromatixPDFaceControlType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDFaceControlType_faceROIProcessStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDFaceControlType::faceROIProcessStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(ROIProcessEnable);
    PARAMETER_INITIALIZE(ROIRoughStable);
    PARAMETER_INITIALIZE(ROIStrictStable);

    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 = 0xc5fc326cd46c5fad;
        entry->ReadSimpleTypeFixedArray(&ROIProcessEnable, 1, localParams);
        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0x92496dc282c7c4d4;
        ROIRoughStable.Load(localParams);
        localParams.NameHash        = 0xc3cda5940b667284;
        ROIStrictStable.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 chromatixPDFaceControlType::faceROIProcessStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        faceROIProcessStruct* arrayPtr = (faceROIProcessStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDFaceControlType_ROIMoveConvergeSuppressStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDFaceControlType::ROIMoveConvergeSuppressStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(stableCountThreshold);
    PARAMETER_INITIALIZE(moveThresholdInX);
    PARAMETER_INITIALIZE(moveThresholdInY);

    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 = 0xb998c075083d6a28;
        entry->ReadSimpleTypeFixedArray(&stableCountThreshold, 1, localParams);
        localParams.NameHash = 0xfd07ef68ff640b0b;
        entry->ReadSimpleTypeFixedArray(&moveThresholdInX, 1, localParams);
        localParams.NameHash = 0xc5e385b7f45fa0f1;
        entry->ReadSimpleTypeFixedArray(&moveThresholdInY, 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 chromatixPDFaceControlType::ROIMoveConvergeSuppressStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        ROIMoveConvergeSuppressStruct* arrayPtr = (ROIMoveConvergeSuppressStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDFaceControlType_defocusFilterStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDFaceControlType::defocusFilterStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(length);
    PARAMETER_INITIALIZE(confidenceHighThreshold);

    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 = 0xd389d73d6fdb33b4;
        entry->ReadSimpleTypeFixedArray(&length, 1, localParams);
        localParams.NameHash = 0x98155b33073646d6;
        entry->ReadSimpleTypeFixedArray(&confidenceHighThreshold, 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 chromatixPDFaceControlType::defocusFilterStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        defocusFilterStruct* arrayPtr = (defocusFilterStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDFaceControlType_fallbackStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDFaceControlType::fallbackStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(fallbackROISizeThreshold);

    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 = 0x8e816f51f74e6dc0;
        entry->ReadSimpleTypeFixedArray(&fallbackROISizeThreshold, 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 chromatixPDFaceControlType::fallbackStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        fallbackStruct* arrayPtr = (fallbackStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDFaceControlType_faceChangeRefocusTriggerStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDFaceControlType::faceChangeRefocusTriggerStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(roiChangeThreshPercentage);
    PARAMETER_INITIALIZE(roiSizeStableThresh);

    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 = 0xd33368b2e2ff1590;
        entry->ReadSimpleTypeFixedArray(&roiChangeThreshPercentage, 1, localParams);
        localParams.NameHash = 0x943165720e852d2e;
        entry->ReadSimpleTypeFixedArray(&roiSizeStableThresh, 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 chromatixPDFaceControlType::faceChangeRefocusTriggerStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        faceChangeRefocusTriggerStruct* arrayPtr = (faceChangeRefocusTriggerStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixlensPosIntervalListEntriesType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixlensPosIntervalListEntriesType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(lpInterval);

    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 = 0xf7d8688664e98fe6;
        entry->ReadSimpleTypeFixedArray(&lpInterval, 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 chromatixlensPosIntervalListEntriesType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixlensPosIntervalListEntriesType* arrayPtr = (chromatixlensPosIntervalListEntriesType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixlensPosIntervalListType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixlensPosIntervalListType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(lensPosIntervalListEntriesCount);
    PARAMETER_INITIALIZE(lensPosIntervalListEntries);

    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 = 0x997df070977c0cdd;
        entry->ReadStructureArray(lensPosIntervalListEntries, lensPosIntervalListEntriesCount, lensPosIntervalListEntriesID, 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 chromatixlensPosIntervalListType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixlensPosIntervalListType* arrayPtr = (chromatixlensPosIntervalListType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixluxNodeListEntriesType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixluxNodeListEntriesType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(luxIndex);

    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 = 0xc1fc45d3c12d890c;
        entry->ReadSimpleTypeFixedArray(&luxIndex, 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 chromatixluxNodeListEntriesType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixluxNodeListEntriesType* arrayPtr = (chromatixluxNodeListEntriesType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixluxNodeListType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixluxNodeListType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(luxNodeListEntriesCount);
    PARAMETER_INITIALIZE(luxNodeListEntries);

    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 = 0x99590c6b22c83d24;
        entry->ReadStructureArray(luxNodeListEntries, luxNodeListEntriesCount, luxNodeListEntriesID, 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 chromatixluxNodeListType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixluxNodeListType* arrayPtr = (chromatixluxNodeListType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixAdaptivePDOffsetCorrectionType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixAdaptivePDOffsetCorrectionType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(minSampleRequired);
    PARAMETER_INITIALIZE(maxSampleCount);
    PARAMETER_INITIALIZE(enableOutlierRemoval);
    PARAMETER_INITIALIZE(outlierRemovalRatio);
    PARAMETER_INITIALIZE(pdSampleConfThresholdMin);
    PARAMETER_INITIALIZE(interpolateDistance);
    PARAMETER_INITIALIZE(recollectSampleTimeThres);
    PARAMETER_INITIALIZE(maxFinesearchFrameCount);
    PARAMETER_INITIALIZE(enableFastStartMode);
    PARAMETER_INITIALIZE(defocusOffsetMin);
    PARAMETER_INITIALIZE(defocusOffsetMax);
    PARAMETER_INITIALIZE(frameDelayCount);
    PARAMETER_INITIALIZE(maxSlope);
    PARAMETER_INITIALIZE(minDistributionScore);
    PARAMETER_INITIALIZE(numTemperatureNode);
    PARAMETER_INITIALIZE(minTemp);
    PARAMETER_INITIALIZE(maxTemp);
    PARAMETER_INITIALIZE(diffusionRatio1);
    PARAMETER_INITIALIZE(diffusionRatio2);
    PARAMETER_INITIALIZE(mapWidth);
    PARAMETER_INITIALIZE(mapHeight);
    PARAMETER_INITIALIZE(minGridMapOverlapRatio1);
    PARAMETER_INITIALIZE(minGridMapOverlapRatio2);
    PARAMETER_INITIALIZE(scGyroThres);
    PARAMETER_INITIALIZE(scMVThres);
    PARAMETER_INITIALIZE(luxNodeList);
    PARAMETER_INITIALIZE(lensPosIntervalList);

    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 = 0xb143b3ad26a24e4a;
        entry->ReadSimpleTypeFixedArray(&minSampleRequired, 1, localParams);
        localParams.NameHash = 0x905eda7bfeaf05a5;
        entry->ReadSimpleTypeFixedArray(&maxSampleCount, 1, localParams);
        localParams.NameHash = 0xe67000608ae9ad9c;
        entry->ReadSimpleTypeFixedArray(&enableOutlierRemoval, 1, localParams);
        localParams.NameHash = 0xcd732cc5ec72a599;
        entry->ReadSimpleTypeFixedArray(&outlierRemovalRatio, 1, localParams);
        localParams.NameHash = 0xdacaa766ff09d197;
        entry->ReadSimpleTypeFixedArray(&pdSampleConfThresholdMin, 1, localParams);
        localParams.NameHash = 0xa51e79793242b9ce;
        entry->ReadSimpleTypeFixedArray(&interpolateDistance, 1, localParams);
        localParams.NameHash = 0xf0ed88438aa46076;
        entry->ReadSimpleTypeFixedArray(&recollectSampleTimeThres, 1, localParams);
        localParams.NameHash = 0xa6361a9df1ea0ee2;
        entry->ReadSimpleTypeFixedArray(&maxFinesearchFrameCount, 1, localParams);
        localParams.NameHash = 0xa9a3177a65f15307;
        entry->ReadSimpleTypeFixedArray(&enableFastStartMode, 1, localParams);
        localParams.NameHash = 0x965ce26472d2ff39;
        entry->ReadSimpleTypeFixedArray(&defocusOffsetMin, 1, localParams);
        localParams.NameHash = 0xecaa2faa0909eda4;
        entry->ReadSimpleTypeFixedArray(&defocusOffsetMax, 1, localParams);
        localParams.NameHash = 0xc74e304bdbbd4abf;
        entry->ReadSimpleTypeFixedArray(&frameDelayCount, 1, localParams);
        localParams.NameHash = 0xbed8d05e853ef2c7;
        entry->ReadSimpleTypeFixedArray(&maxSlope, 1, localParams);
        localParams.NameHash = 0xaa40ed4bed2d61b2;
        entry->ReadSimpleTypeFixedArray(&minDistributionScore, 1, localParams);
        localParams.NameHash = 0x814edc29d1c775ad;
        entry->ReadSimpleTypeFixedArray(&numTemperatureNode, 1, localParams);
        localParams.NameHash = 0x8435afabb669b080;
        entry->ReadSimpleTypeFixedArray(&minTemp, 1, localParams);
        localParams.NameHash = 0xc7eb0daff7c6a87d;
        entry->ReadSimpleTypeFixedArray(&maxTemp, 1, localParams);
        localParams.NameHash = 0xf80b8119ed59a8c4;
        entry->ReadSimpleTypeFixedArray(&diffusionRatio1, 1, localParams);
        localParams.NameHash = 0xb1273e78f01554ca;
        entry->ReadSimpleTypeFixedArray(&diffusionRatio2, 1, localParams);
        localParams.NameHash = 0xa51bc6dc4f7acdda;
        entry->ReadSimpleTypeFixedArray(&mapWidth, 1, localParams);
        localParams.NameHash = 0xdaaba33f03ba3401;
        entry->ReadSimpleTypeFixedArray(&mapHeight, 1, localParams);
        localParams.NameHash = 0x978fa3ba8a26e2b5;
        entry->ReadSimpleTypeFixedArray(&minGridMapOverlapRatio1, 1, localParams);
        localParams.NameHash = 0xdea31cdb976a1ebb;
        entry->ReadSimpleTypeFixedArray(&minGridMapOverlapRatio2, 1, localParams);
        localParams.NameHash = 0xfd605b4c1fbc6e11;
        entry->ReadSimpleTypeFixedArray(&scGyroThres, 1, localParams);
        localParams.NameHash = 0xf6b9bccb81070911;
        entry->ReadSimpleTypeFixedArray(&scMVThres, 1, localParams);
        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0xb979ac781f6fbd87;
        luxNodeList.Load(localParams);
        localParams.NameHash        = 0xab69ed39ff3297c4;
        lensPosIntervalList.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 chromatixAdaptivePDOffsetCorrectionType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixAdaptivePDOffsetCorrectionType* arrayPtr = (chromatixAdaptivePDOffsetCorrectionType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDMultiwindowType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDMultiwindowType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(HNumWindows);
    PARAMETER_INITIALIZE(VNumWindows);
    PARAMETER_INITIALIZE(PDPercentile);
    PARAMETER_INITIALIZE(defocusThreshold);
    PARAMETER_INITIALIZE(confidenceThMultiple);
    PARAMETER_INITIALIZE(multiDepthDetect);
    PARAMETER_INITIALIZE(lowLightDetect);
    PARAMETER_INITIALIZE(lockToPeripheralDuringSearch);
    PARAMETER_INITIALIZE(activZoomControl);
    PARAMETER_INITIALIZE(saliencyMWTuning);
    PARAMETER_INITIALIZE(motionMWTuning);

    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 = 0xec2a25771710be38;
        entry->ReadSimpleTypeFixedArray(&HNumWindows, 1, localParams);
        localParams.NameHash = 0x95954d2f48b548ec;
        entry->ReadSimpleTypeFixedArray(&VNumWindows, 1, localParams);
        localParams.NameHash = 0xe6d8e597f5e39277;
        entry->ReadSimpleTypeFixedArray(&PDPercentile, 1, localParams);
        localParams.NameHash = 0xb628cc42d5e0ddb4;
        entry->ReadSimpleTypeFixedArray(&defocusThreshold, 1, localParams);
        localParams.NameHash = 0xb01845db666001ca;
        entry->ReadSimpleTypeFixedArray(&confidenceThMultiple, 1, localParams);
        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0xc1929de38a6081fa;
        multiDepthDetect.Load(localParams);
        localParams.NameHash        = 0xf55dc4ec041e9d98;
        lowLightDetect.Load(localParams);
        localParams.NameHash = 0xa415cd64dcc98b66;
        entry->ReadSimpleTypeFixedArray(&lockToPeripheralDuringSearch, 1, localParams);
        localParams.NameHash        = 0xcdc0d1b9f4d1e18f;
        activZoomControl.Load(localParams);
        localParams.NameHash        = 0xe9aa285542d7be14;
        saliencyMWTuning.Load(localParams);
        localParams.NameHash        = 0xfc1eb750a2ff28ed;
        motionMWTuning.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 chromatixPDMultiwindowType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDMultiwindowType* arrayPtr = (chromatixPDMultiwindowType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDMultiwindowType_multiDepthDetectStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDMultiwindowType::multiDepthDetectStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(percentile);
    PARAMETER_INITIALIZE(detectThLow);
    PARAMETER_INITIALIZE(detectThHigh);

    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 = 0xe1eec73966da5927;
        entry->ReadSimpleTypeFixedArray(&percentile, 1, localParams);
        localParams.NameHash = 0xc7441d83bdaecb6e;
        entry->ReadSimpleTypeFixedArray(&detectThLow, 1, localParams);
        localParams.NameHash = 0xede61c3e780c9fa5;
        entry->ReadSimpleTypeFixedArray(&detectThHigh, 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 chromatixPDMultiwindowType::multiDepthDetectStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        multiDepthDetectStruct* arrayPtr = (multiDepthDetectStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDMultiwindowType_lowLightDetectStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDMultiwindowType::lowLightDetectStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(gainThLow);
    PARAMETER_INITIALIZE(gainThHigh);

    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 = 0xd8956286acb3b599;
        entry->ReadSimpleTypeFixedArray(&gainThLow, 1, localParams);
        localParams.NameHash = 0xd011b5af1f237fe4;
        entry->ReadSimpleTypeFixedArray(&gainThHigh, 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 chromatixPDMultiwindowType::lowLightDetectStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        lowLightDetectStruct* arrayPtr = (lowLightDetectStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDMultiwindowType_activZoomControlStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDMultiwindowType::activZoomControlStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(zoomThreshold);

    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 = 0xe1153e0461691224;
        entry->ReadSimpleTypeFixedArray(&zoomThreshold, 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 chromatixPDMultiwindowType::activZoomControlStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        activZoomControlStruct* arrayPtr = (activZoomControlStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDMultiwindowType_saliencyMWTuningStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDMultiwindowType::saliencyMWTuningStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(saliencyTh);
    PARAMETER_INITIALIZE(saliencyStdTh);
    PARAMETER_INITIALIZE(saliencyPriorityWeight);
    PARAMETER_INITIALIZE(saliencyLUT);
    PARAMETER_INITIALIZE(phaseDiffLUT);
    PARAMETER_INITIALIZE(confidenceLUT);

    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 = 0xe570c73727d14703;
        entry->ReadSimpleTypeFixedArray(&saliencyTh, 1, localParams);
        localParams.NameHash = 0xbeb9d09c7970c34e;
        entry->ReadSimpleTypeFixedArray(&saliencyStdTh, 1, localParams);
        localParams.NameHash = 0x912d5134a330798c;
        entry->ReadSimpleTypeFixedArray(&saliencyPriorityWeight, 1, localParams);
        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0xcb50534d90b35118;
        saliencyLUT.Load(localParams);
        localParams.NameHash        = 0xf60e68252e5a715b;
        phaseDiffLUT.Load(localParams);
        localParams.NameHash        = 0xdfba7bad00fa6576;
        confidenceLUT.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 chromatixPDMultiwindowType::saliencyMWTuningStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        saliencyMWTuningStruct* arrayPtr = (saliencyMWTuningStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDMultiwindowType_motionMWTuningStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDMultiwindowType::motionMWTuningStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(motionTh);

    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 = 0xe0075795c6cc7376;
        entry->ReadSimpleTypeFixedArray(&motionTh, 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 chromatixPDMultiwindowType::motionMWTuningStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        motionMWTuningStruct* arrayPtr = (motionMWTuningStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDInternalType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDInternalType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(type);
    PARAMETER_INITIALIZE(initialPosition);
    PARAMETER_INITIALIZE(PDAFEnableFaceCAFPriority);
    PARAMETER_INITIALIZE(incDefocusThresholdPreviousError);
    PARAMETER_INITIALIZE(fineScanRangeEnhance);
    PARAMETER_INITIALIZE(softRegionThresholdMultiplier);
    PARAMETER_INITIALIZE(enableSoftConfidenceThreshold);
    PARAMETER_INITIALIZE(softConfidenceThresholdDelta);
    PARAMETER_INITIALIZE(softConfidenceFocus_pnt);
    PARAMETER_INITIALIZE(enableSoftRegionThresholdHigh);
    PARAMETER_INITIALIZE(softRegionThresholdHighMultiplier);
    PARAMETER_INITIALIZE(softSceneChangeCount);
    PARAMETER_INITIALIZE(cafStableFrameAllow);

    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 = 0xd7a23f43d1e0d686;
        entry->ReadSimpleTypeFixedArray(&type, 1, localParams);
        localParams.NameHash = 0xcf97e50076230399;
        entry->ReadSimpleTypeFixedArray(&initialPosition, 1, localParams);
        localParams.NameHash = 0xe86ac3a68fcf883f;
        entry->ReadSimpleTypeFixedArray(&PDAFEnableFaceCAFPriority, 1, localParams);
        localParams.NameHash = 0xcb57eca4249647c8;
        entry->ReadSimpleTypeFixedArray(&incDefocusThresholdPreviousError, 1, localParams);
        localParams.NameHash = 0xedc2a307f87968fe;
        entry->ReadSimpleTypeFixedArray(&fineScanRangeEnhance, 1, localParams);
        localParams.NameHash = 0x89c237f16ba409ab;
        entry->ReadSimpleTypeFixedArray(&softRegionThresholdMultiplier, 1, localParams);
        localParams.NameHash = 0xf4009b30efd7661a;
        entry->ReadSimpleTypeFixedArray(&enableSoftConfidenceThreshold, 1, localParams);
        localParams.NameHash = 0x90bfe3db3e0d3138;
        entry->ReadSimpleTypeFixedArray(&softConfidenceThresholdDelta, 1, localParams);
        localParams.NameHash = 0xb09ab87e460c1520;
        entry->ReadSimpleTypeFixedArray(&softConfidenceFocus_pnt, 1, localParams);
        localParams.NameHash = 0xf5ff5aca3a1d197d;
        entry->ReadSimpleTypeFixedArray(&enableSoftRegionThresholdHigh, 1, localParams);
        localParams.NameHash = 0xc990e2d8a99b6ab8;
        entry->ReadSimpleTypeFixedArray(&softRegionThresholdHighMultiplier, 1, localParams);
        localParams.NameHash = 0xa33915103e8d7995;
        entry->ReadSimpleTypeFixedArray(&softSceneChangeCount, 1, localParams);
        localParams.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0xaf166270c07a152b;
        cafStableFrameAllow.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 chromatixPDInternalType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDInternalType* arrayPtr = (chromatixPDInternalType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDInternalType_cafStableFrameAllowStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDInternalType::cafStableFrameAllowStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(frameCount);

    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 = 0x953bf0f6aff57638;
        entry->ReadSimpleTypeFixedArray(&frameCount, 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 chromatixPDInternalType::cafStableFrameAllowStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        cafStableFrameAllowStruct* arrayPtr = (cafStableFrameAllowStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDPreprocessingType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDPreprocessingType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(enableDoNotUseDefocusSampleByPD);
    PARAMETER_INITIALIZE(enableIncMinConfidenceThresholdByPD);
    PARAMETER_INITIALIZE(PDMaxLimitDoNotUseDefocusSample);
    PARAMETER_INITIALIZE(PDMaxLimitIncMinConfidenceThreshold);
    PARAMETER_INITIALIZE(incMinConfidenceThresholdByPDScaler);

    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 = 0xce24900a24b9d440;
        entry->ReadSimpleTypeFixedArray(&enableDoNotUseDefocusSampleByPD, 1, localParams);
        localParams.NameHash = 0xf54b5f35b5cc3512;
        entry->ReadSimpleTypeFixedArray(&enableIncMinConfidenceThresholdByPD, 1, localParams);
        localParams.NameHash = 0x9c33c67697579765;
        entry->ReadSimpleTypeFixedArray(&PDMaxLimitDoNotUseDefocusSample, 1, localParams);
        localParams.NameHash = 0xa0e8e1049af5fb05;
        entry->ReadSimpleTypeFixedArray(&PDMaxLimitIncMinConfidenceThreshold, 1, localParams);
        localParams.NameHash = 0x8eacdfdead137e80;
        entry->ReadSimpleTypeFixedArray(&incMinConfidenceThresholdByPDScaler, 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 chromatixPDPreprocessingType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDPreprocessingType* arrayPtr = (chromatixPDPreprocessingType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDMonitorType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDMonitorType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(waitConfidenceRecoverCount);
    PARAMETER_INITIALIZE(defocusedThreshold);
    PARAMETER_INITIALIZE(depthStableThreshold);
    PARAMETER_INITIALIZE(defocusStableFilterLength);

    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 = 0xec34b50bd7b1aa92;
        entry->ReadSimpleTypeFixedArray(&waitConfidenceRecoverCount, 1, localParams);
        localParams.NameHash = 0xf3d4bfad2503fe4a;
        entry->ReadSimpleTypeFixedArray(&defocusedThreshold, 1, localParams);
        localParams.NameHash = 0x97ff38719ace442f;
        entry->ReadSimpleTypeFixedArray(&depthStableThreshold, 1, localParams);
        localParams.NameHash = 0xefe91bf0ee0c4162;
        entry->ReadSimpleTypeFixedArray(&defocusStableFilterLength, 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 chromatixPDMonitorType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDMonitorType* arrayPtr = (chromatixPDMonitorType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDFocusScanType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDFocusScanType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(focusConvergeFrameSkip);
    PARAMETER_INITIALIZE(enableFineScan);
    PARAMETER_INITIALIZE(minimumFineScanRange);
    PARAMETER_INITIALIZE(fineScanStepSize);
    PARAMETER_INITIALIZE(focusDoneThreshold);
    PARAMETER_INITIALIZE(enableFineScanExtension);
    PARAMETER_INITIALIZE(firstRunNotConfidenceAdd);

    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 = 0x9c337a52affc77ca;
        entry->ReadSimpleTypeFixedArray(&focusConvergeFrameSkip, 1, localParams);
        localParams.NameHash = 0xdfb8e66c73e3e4d2;
        entry->ReadSimpleTypeFixedArray(&enableFineScan, 1, localParams);
        localParams.NameHash = 0x9f785ea2d911c8d9;
        entry->ReadSimpleTypeFixedArray(&minimumFineScanRange, 1, localParams);
        localParams.NameHash = 0x8f2440a9465eee90;
        entry->ReadSimpleTypeFixedArray(&fineScanStepSize, 1, localParams);
        localParams.NameHash = 0xfe697a845560a44a;
        entry->ReadSimpleTypeFixedArray(&focusDoneThreshold, 1, localParams);
        localParams.NameHash = 0xc58e3fb9a398f45c;
        entry->ReadSimpleTypeFixedArray(&enableFineScanExtension, 1, localParams);
        localParams.NameHash = 0xed3e52f803382a86;
        entry->ReadSimpleTypeFixedArray(&firstRunNotConfidenceAdd, 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 chromatixPDFocusScanType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDFocusScanType* arrayPtr = (chromatixPDFocusScanType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDDofScalerEntryType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDDofScalerEntryType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(normalizedLensPosition);
    PARAMETER_INITIALIZE(dofScaler);

    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 = 0xda7f478b901ac9a5;
        entry->ReadSimpleTypeFixedArray(&normalizedLensPosition, 1, localParams);
        localParams.NameHash = 0xbb33c941cf0dd138;
        entry->ReadSimpleTypeFixedArray(&dofScaler, 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 chromatixPDDofScalerEntryType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDDofScalerEntryType* arrayPtr = (chromatixPDDofScalerEntryType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDDofScalerTableType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDDofScalerTableType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(dofScalerEntriesCount);
    PARAMETER_INITIALIZE(dofScalerEntries);

    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 = 0x9c7a972503a0c2cc;
        entry->ReadStructureArray(dofScalerEntries, dofScalerEntriesCount, dofScalerEntriesID, 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 chromatixPDDofScalerTableType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDDofScalerTableType* arrayPtr = (chromatixPDDofScalerTableType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDStableTableEntryType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDStableTableEntryType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(FPS);
    PARAMETER_INITIALIZE(minimumStableCount);

    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 = 0xe4da649aae090f7d;
        entry->ReadSimpleTypeFixedArray(&FPS, 1, localParams);
        localParams.NameHash = 0xc8c5f04e20ab52d7;
        entry->ReadSimpleTypeFixedArray(&minimumStableCount, 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 chromatixPDStableTableEntryType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDStableTableEntryType* arrayPtr = (chromatixPDStableTableEntryType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDStableTableType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDStableTableType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(stableEntriesCount);
    PARAMETER_INITIALIZE(stableEntries);

    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 = 0xf85e1fc2d2104e8d;
        entry->ReadStructureArray(stableEntries, stableEntriesCount, stableEntriesID, 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 chromatixPDStableTableType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDStableTableType* arrayPtr = (chromatixPDStableTableType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load confidenceSensitivityModifierArr
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void confidenceSensitivityModifierArr::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(sceneBasedSensitivityModifierCount);
    PARAMETER_INITIALIZE(sceneBasedSensitivityModifier);
    PARAMETER_INITIALIZE(roiTypeBasedSensitivityModifierCount);
    PARAMETER_INITIALIZE(roiTypeBasedSensitivityModifier);
    PARAMETER_INITIALIZE(roiSizeBasedSensitivityModifierCount);
    PARAMETER_INITIALIZE(roiSizeBasedSensitivityModifier);
    PARAMETER_INITIALIZE(zoomBasedSensitivityModifierCount);
    PARAMETER_INITIALIZE(zoomBasedSensitivityModifier);
    PARAMETER_INITIALIZE(windowBasedSensitivityModifierCount);
    PARAMETER_INITIALIZE(windowBasedSensitivityModifier);
    PARAMETER_INITIALIZE(expIndexBasedSensitivityModifierCount);
    PARAMETER_INITIALIZE(expIndexBasedSensitivityModifier);
    PARAMETER_INITIALIZE(gainBasedSensitivityModifierCount);
    PARAMETER_INITIALIZE(gainBasedSensitivityModifier);

    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 = 0xf76686c86431724c;
        entry->ReadStructureArray(sceneBasedSensitivityModifier, sceneBasedSensitivityModifierCount, sceneBasedSensitivityModifierID, 1, localParams, __COUNTER__);
        localParams.NameHash = 0x96b99cd4f2ef5a34;
        entry->ReadStructureArray(roiTypeBasedSensitivityModifier, roiTypeBasedSensitivityModifierCount, roiTypeBasedSensitivityModifierID, 1, localParams, __COUNTER__);
        localParams.NameHash = 0x8c3706b577807940;
        entry->ReadStructureArray(roiSizeBasedSensitivityModifier, roiSizeBasedSensitivityModifierCount, roiSizeBasedSensitivityModifierID, 1, localParams, __COUNTER__);
        localParams.NameHash = 0xf0feeae49926451c;
        entry->ReadStructureArray(zoomBasedSensitivityModifier, zoomBasedSensitivityModifierCount, zoomBasedSensitivityModifierID, 1, localParams, __COUNTER__);
        localParams.NameHash = 0xf42d6481dbf4a169;
        entry->ReadStructureArray(windowBasedSensitivityModifier, windowBasedSensitivityModifierCount, windowBasedSensitivityModifierID, 1, localParams, __COUNTER__);
        localParams.NameHash = 0x95775044bd864fdc;
        entry->ReadStructureArray(expIndexBasedSensitivityModifier, expIndexBasedSensitivityModifierCount, expIndexBasedSensitivityModifierID, 1, localParams, __COUNTER__);
        localParams.NameHash = 0x967f68cc96bd72d1;
        entry->ReadStructureArray(gainBasedSensitivityModifier, gainBasedSensitivityModifierCount, gainBasedSensitivityModifierID, 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 confidenceSensitivityModifierArr::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        confidenceSensitivityModifierArr* arrayPtr = (confidenceSensitivityModifierArr*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load PDConfidenceThresholdsType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void PDConfidenceThresholdsType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(low);
    PARAMETER_INITIALIZE(mid);
    PARAMETER_INITIALIZE(high);

    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 = 0x8a52ab0cf87a3fa8;
        entry->ReadSimpleTypeFixedArray(&low, 1, localParams);
        localParams.NameHash = 0xa4ffbe83cce5bbea;
        entry->ReadSimpleTypeFixedArray(&mid, 1, localParams);
        localParams.NameHash = 0xbee2a50d22ac0ec5;
        entry->ReadSimpleTypeFixedArray(&high, 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 PDConfidenceThresholdsType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        PDConfidenceThresholdsType* arrayPtr = (PDConfidenceThresholdsType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load sensitivityBasedConfidenceTableType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void sensitivityBasedConfidenceTableType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(normalConfidence);
    PARAMETER_INITIALIZE(highConfidence);
    PARAMETER_INITIALIZE(sensitivityModifiers);

    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.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0xec15421dfe6c5b35;
        normalConfidence.Load(localParams);
        localParams.NameHash        = 0xf6e230e79e934f1b;
        highConfidence.Load(localParams);
        localParams.NameHash        = 0xbb52c0b1f5c4e524;
        sensitivityModifiers.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 sensitivityBasedConfidenceTableType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        sensitivityBasedConfidenceTableType* arrayPtr = (sensitivityBasedConfidenceTableType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDConfidenceTableEntryType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDConfidenceTableEntryType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(noiseGain);
    PARAMETER_INITIALIZE(minimumConfidence);

    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 = 0xaf4106f6f3a168f6;
        entry->ReadSimpleTypeFixedArray(&noiseGain, 1, localParams);
        localParams.NameHash = 0xd0971ac32636e9f0;
        entry->ReadSimpleTypeFixedArray(&minimumConfidence, 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 chromatixPDConfidenceTableEntryType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDConfidenceTableEntryType* arrayPtr = (chromatixPDConfidenceTableEntryType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDConfidenceTableType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDConfidenceTableType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(confidenceEntriesCount);
    PARAMETER_INITIALIZE(confidenceEntries);

    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 = 0xa250eb37ed5d4434;
        entry->ReadStructureArray(confidenceEntries, confidenceEntriesCount, confidenceEntriesID, 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 chromatixPDConfidenceTableType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDConfidenceTableType* arrayPtr = (chromatixPDConfidenceTableType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDNoiseTableEntryType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDNoiseTableEntryType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(noiseGain);
    PARAMETER_INITIALIZE(noiseGainMultiplier);

    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 = 0xaf4106f6f3a168f6;
        entry->ReadSimpleTypeFixedArray(&noiseGain, 1, localParams);
        localParams.NameHash = 0x9b5d118c059c1345;
        entry->ReadSimpleTypeFixedArray(&noiseGainMultiplier, 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 chromatixPDNoiseTableEntryType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDNoiseTableEntryType* arrayPtr = (chromatixPDNoiseTableEntryType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDNoiseTableType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDNoiseTableType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(noiseEntriesCount);
    PARAMETER_INITIALIZE(noiseEntries);

    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 = 0xfdbf1d11956fa48d;
        entry->ReadStructureArray(noiseEntries, noiseEntriesCount, noiseEntriesID, 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 chromatixPDNoiseTableType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDNoiseTableType* arrayPtr = (chromatixPDNoiseTableType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDROIConfigType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDROIConfigType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(ROILocationY);
    PARAMETER_INITIALIZE(ROILocationX);
    PARAMETER_INITIALIZE(ROINumRows);
    PARAMETER_INITIALIZE(ROINumCols);

    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 = 0xa462d9162997788e;
        entry->ReadSimpleTypeFixedArray(&ROILocationY, 1, localParams);
        localParams.NameHash = 0x9c86b3c922acd374;
        entry->ReadSimpleTypeFixedArray(&ROILocationX, 1, localParams);
        localParams.NameHash = 0x925187ef063d98fa;
        entry->ReadSimpleTypeFixedArray(&ROINumRows, 1, localParams);
        localParams.NameHash = 0x87f398869e44f5bd;
        entry->ReadSimpleTypeFixedArray(&ROINumCols, 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 chromatixPDROIConfigType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDROIConfigType* arrayPtr = (chromatixPDROIConfigType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDROIType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDROIType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(ConfigurationCount);
    PARAMETER_INITIALIZE(Configuration);

    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 = 0xe5265196429967c7;
        entry->ReadStructureArray(Configuration, ConfigurationCount, ConfigurationID, 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 chromatixPDROIType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDROIType* arrayPtr = (chromatixPDROIType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatixPDAFType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFType::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(module_version);
    PARAMETER_INITIALIZE(parameter_version);
    PARAMETER_INITIALIZE(is2PDEnable);
    PARAMETER_INITIALIZE(ROI);
    PARAMETER_INITIALIZE(focusTable);
    PARAMETER_INITIALIZE(noiseTable);
    PARAMETER_INITIALIZE(confidenceTable);
    PARAMETER_INITIALIZE(confidenceHighTable);
    PARAMETER_INITIALIZE(sensitivityBasedConfidenceTable);
    PARAMETER_INITIALIZE(fallbackConfidence);
    PARAMETER_INITIALIZE(stableTable);
    PARAMETER_INITIALIZE(dofScalerTable);
    PARAMETER_INITIALIZE(focusScan);
    PARAMETER_INITIALIZE(sceneMonitor);
    PARAMETER_INITIALIZE(PDPreprocessing);
    PARAMETER_INITIALIZE(PDInternal);
    PARAMETER_INITIALIZE(PDMultiWindow);
    PARAMETER_INITIALIZE(AdaptivePDOffsetCorrection);
    PARAMETER_INITIALIZE(enablePDEarlyInterrupt);
    PARAMETER_INITIALIZE(dynamicFrameSkipVBlankThreshold);
    PARAMETER_INITIALIZE(ledPdafMaxFrameAllow);
    PARAMETER_INITIALIZE(sparsePDTouchFaceConfidenceThreshold);
    PARAMETER_INITIALIZE(sparsePDTouchFaceLowDefocusConfidenceThreshold);
    PARAMETER_INITIALIZE(enableEnterLSPLowConfidenceHunting);
    PARAMETER_INITIALIZE(LSPLowConfidenceHuntingThreshold);
    PARAMETER_INITIALIZE(face);
    PARAMETER_INITIALIZE(touch);
    PARAMETER_INITIALIZE(track);
    PARAMETER_INITIALIZE(saliency);
    PARAMETER_INITIALIZE(convergeDoneFilter);
    PARAMETER_INITIALIZE(forceEnterFineSearch);
    PARAMETER_INITIALIZE(advancedSparseControl);
    PARAMETER_INITIALIZE(mlpdControl);
    PARAMETER_INITIALIZE(motionConvergeControl);
    PARAMETER_INITIALIZE(temporalFilter);
    PARAMETER_INITIALIZE(multiROISelection);

    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        = 0xe11cd9f365a2599f;
        module_version.Load(localParams);
        localParams.NameHash        = 0xca3106e199a12935;
        parameter_version.Load(localParams);
        localParams.NameHash = 0x94570c6ae59bbfa0;
        entry->ReadSimpleTypeFixedArray(&is2PDEnable, 1, localParams);
        localParams.NameHash        = 0x8404d7d86f220b4c;
        ROI.Load(localParams);
        localParams.NameHash        = 0xbe4c2765a3dfd0d8;
        focusTable.Load(localParams);
        localParams.NameHash        = 0x9fa8ac009ecee51a;
        noiseTable.Load(localParams);
        localParams.NameHash        = 0xaa62e444f82d63e1;
        confidenceTable.Load(localParams);
        localParams.NameHash        = 0xd146b4a6ebe9d701;
        confidenceHighTable.Load(localParams);
        localParams.NameHash        = 0xaf8f5d7fe6b92a90;
        sensitivityBasedConfidenceTable.Load(localParams);
        localParams.NameHash = 0xd79111aa14019b51;
        entry->ReadSimpleTypeFixedArray(&fallbackConfidence, 1, localParams);
        localParams.NameHash        = 0x8ae09e32f95abb75;
        stableTable.Load(localParams);
        localParams.NameHash        = 0xcdb99c1a065f0b36;
        dofScalerTable.Load(localParams);
        localParams.NameHash        = 0xc8be9173374f919a;
        focusScan.Load(localParams);
        localParams.NameHash        = 0xdbd51259d08aad52;
        sceneMonitor.Load(localParams);
        localParams.NameHash        = 0xc6ca8d98dc9c971b;
        PDPreprocessing.Load(localParams);
        localParams.NameHash        = 0x9a218986082f67df;
        PDInternal.Load(localParams);
        localParams.NameHash        = 0xd981499dfa41d04c;
        PDMultiWindow.Load(localParams);
        localParams.NameHash        = 0x95f8a23323038b2b;
        AdaptivePDOffsetCorrection.Load(localParams);
        localParams.NameHash = 0xf9a5f762f18572dc;
        entry->ReadSimpleTypeFixedArray(&enablePDEarlyInterrupt, 1, localParams);
        localParams.NameHash = 0xd36bd5e60997b39b;
        entry->ReadSimpleTypeFixedArray(&dynamicFrameSkipVBlankThreshold, 1, localParams);
        localParams.NameHash        = 0x9eca2ab6d4372a0a;
        ledPdafMaxFrameAllow.Load(localParams);
        localParams.NameHash = 0xb48a275ea155f18d;
        entry->ReadSimpleTypeFixedArray(&sparsePDTouchFaceConfidenceThreshold, 1, localParams);
        localParams.NameHash = 0xe617461bd4e2a031;
        entry->ReadSimpleTypeFixedArray(&sparsePDTouchFaceLowDefocusConfidenceThreshold, 1, localParams);
        localParams.NameHash = 0xecb24e03dab7b55f;
        entry->ReadSimpleTypeFixedArray(&enableEnterLSPLowConfidenceHunting, 1, localParams);
        localParams.NameHash = 0xe15c249b1c94e443;
        entry->ReadSimpleTypeFixedArray(&LSPLowConfidenceHuntingThreshold, 1, localParams);
        localParams.NameHash        = 0xdf5007c8b25cb4ef;
        face.Load(localParams);
        localParams.NameHash        = 0xde87f4f7cc131ff5;
        touch.Load(localParams);
        localParams.NameHash        = 0xed26c15b1374c94e;
        track.Load(localParams);
        localParams.NameHash        = 0x9fc1749a2b11b9ec;
        saliency.Load(localParams);
        localParams.NameHash        = 0xc91fd38a3878f809;
        convergeDoneFilter.Load(localParams);
        localParams.NameHash        = 0xca76e1f24e33f6fc;
        forceEnterFineSearch.Load(localParams);
        localParams.NameHash        = 0xd7272ea7c8e0f8eb;
        advancedSparseControl.Load(localParams);
        localParams.NameHash        = 0xbdae28285c545afa;
        mlpdControl.Load(localParams);
        localParams.NameHash        = 0xf37fc41f31a08653;
        motionConvergeControl.Load(localParams);
        localParams.NameHash        = 0xd41c44afb237906d;
        temporalFilter.Load(localParams);
        localParams.NameHash        = 0xd01df06dcced9636;
        multiROISelection.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 chromatixPDAFType::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        chromatixPDAFType* arrayPtr = (chromatixPDAFType*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load module_versionStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFType::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 chromatixPDAFType::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* chromatixPDAFType::module_versionStruct::AllocArray(
    UINT32 __count)
{
    module_versionStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW module_versionStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load parameter_versionStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFType::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 chromatixPDAFType::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* chromatixPDAFType::parameter_versionStruct::AllocArray(
    UINT32 __count)
{
    parameter_versionStruct* result = nullptr;
    if (__count > 0)
    {
        result = PARAMETER_NEW parameter_versionStruct[__count];
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load ledPdafMaxFrameAllowStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFType::ledPdafMaxFrameAllowStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(maxFrameCnt);

    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 = 0x89bc726e898b703d;
        entry->ReadSimpleTypeFixedArray(&maxFrameCnt, 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 chromatixPDAFType::ledPdafMaxFrameAllowStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        ledPdafMaxFrameAllowStruct* arrayPtr = (ledPdafMaxFrameAllowStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load motionConvergeControlStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFType::motionConvergeControlStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(motionConvergeTable);

    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.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0xfa11e7de62290522;
        motionConvergeTable.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 chromatixPDAFType::motionConvergeControlStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        motionConvergeControlStruct* arrayPtr = (motionConvergeControlStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load temporalFilterStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFType::temporalFilterStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(search);
    PARAMETER_INITIALIZE(monitor);

    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.UseParent       = false;
        localParams.UseParentOffset = true;
        localParams.NameHash        = 0x807a17364d905c40;
        search.Load(localParams);
        localParams.NameHash        = 0xb2e4eb5019ec8204;
        monitor.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 chromatixPDAFType::temporalFilterStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        temporalFilterStruct* arrayPtr = (temporalFilterStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load multiROISelectionStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFType::multiROISelectionStruct::Load(
    ParameterLoadParameters& parentParams)
{
    PARAMETER_INITIALIZE(enable);
    PARAMETER_INITIALIZE(configArrCount);
    PARAMETER_INITIALIZE(configArr);

    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 = 0x9d525df7ec5075c0;
        entry->ReadStructureArray(configArr, configArrCount, configArrID, 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 chromatixPDAFType::multiROISelectionStruct::LoadArray(
    ParameterLoadParameters& __params,
    void*                    __array,
    UINT32                   __count)
{
    if (__array != nullptr)
    {
        multiROISelectionStruct* arrayPtr = (multiROISelectionStruct*)__array;
        for (UINT32 i = 0; i < __count; i++)
        {
            __params.Index = i;
            arrayPtr[i].Load(__params);
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDAFTemporalFilterSettingType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFTemporalFilterSettingType::Unload(ParameterFileSymbolTable* const __table)
{
    confidenceWeightLUT.Unload(__table);
    lensMoveWeightLUT.Unload(__table);
    frameDelayWeight.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDAFTemporalFilterSettingType_frameDelayWeightStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFTemporalFilterSettingType::frameDelayWeightStruct::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, weights);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDAFTemporalFilterType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFTemporalFilterType::Unload(ParameterFileSymbolTable* const __table)
{
    for (UINT32 i = 0; setting != nullptr && i < settingCount; i++)
    {
        setting[i].Unload(__table);
    }
    ParameterFileSymbolTable::ReleaseObject(__table, setting);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDMotionConvergeType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDMotionConvergeType::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, motionConvergeEntries);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDFocusTableType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDFocusTableType::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, focusEntries);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixAdvancedSparsePDControlType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixAdvancedSparsePDControlType::Unload(ParameterFileSymbolTable* const __table)
{
    focusTable.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDSaliencyControlType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDSaliencyControlType::Unload(ParameterFileSymbolTable* const __table)
{
    saliencyROIProcess.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDSaliencyControlType_saliencyROIProcessStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDSaliencyControlType::saliencyROIProcessStruct::Unload(ParameterFileSymbolTable* const __table)
{
    saliencyROIRoughStable.Unload(__table);
    saliencyROIStrictStable.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDTrackControlType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDTrackControlType::Unload(ParameterFileSymbolTable* const __table)
{
    trackROIProcess.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDTrackControlType_trackROIProcessStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDTrackControlType::trackROIProcessStruct::Unload(ParameterFileSymbolTable* const __table)
{
    trackROIRoughStable.Unload(__table);
    trackROIStrictStable.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDFaceControlType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDFaceControlType::Unload(ParameterFileSymbolTable* const __table)
{
    faceROIProcess.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDFaceControlType_faceROIProcessStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDFaceControlType::faceROIProcessStruct::Unload(ParameterFileSymbolTable* const __table)
{
    ROIRoughStable.Unload(__table);
    ROIStrictStable.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixlensPosIntervalListType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixlensPosIntervalListType::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, lensPosIntervalListEntries);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixluxNodeListType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixluxNodeListType::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, luxNodeListEntries);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixAdaptivePDOffsetCorrectionType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixAdaptivePDOffsetCorrectionType::Unload(ParameterFileSymbolTable* const __table)
{
    luxNodeList.Unload(__table);
    lensPosIntervalList.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDMultiwindowType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDMultiwindowType::Unload(ParameterFileSymbolTable* const __table)
{
    saliencyMWTuning.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDMultiwindowType_saliencyMWTuningStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDMultiwindowType::saliencyMWTuningStruct::Unload(ParameterFileSymbolTable* const __table)
{
    saliencyLUT.Unload(__table);
    phaseDiffLUT.Unload(__table);
    confidenceLUT.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDDofScalerTableType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDDofScalerTableType::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, dofScalerEntries);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDStableTableType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDStableTableType::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, stableEntries);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload confidenceSensitivityModifierArr
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void confidenceSensitivityModifierArr::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, sceneBasedSensitivityModifier);
    ParameterFileSymbolTable::ReleaseObject(__table, roiTypeBasedSensitivityModifier);
    ParameterFileSymbolTable::ReleaseObject(__table, roiSizeBasedSensitivityModifier);
    ParameterFileSymbolTable::ReleaseObject(__table, zoomBasedSensitivityModifier);
    ParameterFileSymbolTable::ReleaseObject(__table, windowBasedSensitivityModifier);
    ParameterFileSymbolTable::ReleaseObject(__table, expIndexBasedSensitivityModifier);
    ParameterFileSymbolTable::ReleaseObject(__table, gainBasedSensitivityModifier);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload sensitivityBasedConfidenceTableType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void sensitivityBasedConfidenceTableType::Unload(ParameterFileSymbolTable* const __table)
{
    sensitivityModifiers.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDConfidenceTableType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDConfidenceTableType::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, confidenceEntries);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDNoiseTableType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDNoiseTableType::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, noiseEntries);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDROIType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDROIType::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, Configuration);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload chromatixPDAFType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFType::Unload(ParameterFileSymbolTable* const __table)
{
    parameter_version.Unload(__table);
    ROI.Unload(__table);
    focusTable.Unload(__table);
    noiseTable.Unload(__table);
    confidenceTable.Unload(__table);
    confidenceHighTable.Unload(__table);
    sensitivityBasedConfidenceTable.Unload(__table);
    stableTable.Unload(__table);
    dofScalerTable.Unload(__table);
    PDMultiWindow.Unload(__table);
    AdaptivePDOffsetCorrection.Unload(__table);
    face.Unload(__table);
    track.Unload(__table);
    saliency.Unload(__table);
    advancedSparseControl.Unload(__table);
    motionConvergeControl.Unload(__table);
    temporalFilter.Unload(__table);
    multiROISelection.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload parameter_versionStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFType::parameter_versionStruct::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, revision);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload motionConvergeControlStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFType::motionConvergeControlStruct::Unload(ParameterFileSymbolTable* const __table)
{
    motionConvergeTable.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload temporalFilterStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFType::temporalFilterStruct::Unload(ParameterFileSymbolTable* const __table)
{
    search.Unload(__table);
    monitor.Unload(__table);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload multiROISelectionStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFType::multiROISelectionStruct::Unload(ParameterFileSymbolTable* const __table)
{
    ParameterFileSymbolTable::ReleaseObject(__table, configArr);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Release the ParameterModule object
/// Requires that this object was created via a ParameterSetManager::GetModule call
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFType::Release()
{
    ((chromatixPDAFTypeClass*)this)->Release();
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Returns the ParameterModule::Modified value
/// The Modified value is incremented when the module's data or pointer values change
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
UINT32 chromatixPDAFType::GetModified()
{
    return ((chromatixPDAFTypeClass*)this)->Modified;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// GetModuleName: Returns ParameterModule::Name variable
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const CHAR* chromatixPDAFType::GetModuleName()
{
    return ((chromatixPDAFTypeClass*)this)->Name;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// GetModuleName: Returns ParameterModule::NameHash variable
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
UINT64 chromatixPDAFType::GetModuleNameHash()
{
    return ((chromatixPDAFTypeClass*)this)->NameHash;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Create module, and return a new object
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ParameterModule* chromatixPDAFTypeClass::Create(
    ModuleData* const    moduleData,
    DefaultModule* const defModule) const
{
    chromatixPDAFTypeClass* 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 = (chromatixPDAFTypeClass*)module;
        }
        else
        {
            cls = PARAMETER_NEW chromatixPDAFTypeClass(Name, moduleData);
            cls->SymbolTableID = id;
            defModule->AddModule((ParameterModule*)cls);
        }
    }
    else if (Version.Value != moduleData->Version.Value)
    {
        PARAMETER_LOG_ERROR(moduleData->SetManager, "Unable to create chromatixPDAFTypeClass, binary version (%lld) does not match source version (%lld)\n",
            moduleData->Version.Value, Version.Value);
    }
    else
    {
        PARAMETER_LOG_ERROR(moduleData->SetManager, "Unable to create chromatixPDAFTypeClass, 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 chromatixPDAFTypeClass::LoadModule(
    ParameterFileSymbolTable* const table)
{
    bool result = true;

#ifdef PARAMETER_USE_MUTEX
    ParameterMutexLocker lock(Mutex); // Unique LOCK
#endif

    if (!Loaded)
    {
        chromatixPDAFTypeClass* 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, "chromatixPDAFTypeClass::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;
        Modified++;
        Loaded = true;
    }

    if (!result)
    {
        /// Module failed to fully load, unload it
        UnloadModule();
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Unload module data
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void chromatixPDAFTypeClass::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 chromatixPDAFTypeClass::Release()
{
    ParameterModule::Release();
}

AFPDAFELEMENTS_NAMESPACE_END
