Program Listing for File param.idl#

Return to documentation for file (interfaces\param.idl)

/********************************************************************************
 * Copyright (c) 2025-2026 Contributors to the Eclipse Foundation
 *
 * This program and the accompanying materials are made available under the
 * terms of the Apache License Version 2.0 which is available at
 * https://www.apache.org/licenses/LICENSE-2.0
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Contributors:
 *   Erik Verhoeven - initial API and implementation
 ********************************************************************************/

#include "core.idl"

module sdv
{
    enum EParamFlags : uint32
    {
        mask            = 0xff,
        read_write      = 0x00,
        read_only       = 0x01,
        temporary       = 0x20,

        state_mask      = 0xff00,
        dirty           = 0x0100,
        locked          = 0x0400,
    };

    enum EParamType
    {
        boolean_param,
        number_param,
        string_param,
        enum_param,
        bitmask_param
    };

    struct SNumberInfo
    {
        any     anyLowerLimit;
        boolean bIncludeLowerLinit;
        any     anyUpperLimit;
        boolean bIncludeUpperLimit;
    };

    struct SStringInfo
    {
        u8string ssPattern;
    };

    struct SLabelInfo
    {
        struct SLabel
        {
            any         anyValue;
            u8string    ssLabel;
        };
        sequence<SLabel> seqLabels;
    };

    struct SParamInfo
    {
        EParamType  eType;
        uint32      uiFlags;
        u8string    ssName;
        u8string    ssGroup;
        u8string    ssUnit;
        u8string    ssDescription;
        any         anyDefaultVal;

        union switch (eType)
        {
        case EParamType::number_param:
            SNumberInfo     sNumberInfo;
        case EParamType::string_param:
            SStringInfo     sStringInfo;
        case EParamType::enum_param:
            SLabelInfo      sEnumInfo;
        case EParamType::bitmask_param:
            SLabelInfo      sBitmaskInfo;
        } uExtInfo;
    };

    interface IParameters
    {
        sequence<u8string> GetParamPaths() const;

        any GetParam(in u8string ssPath) const;

        boolean SetParam(in u8string ssPath, in any anyValue);

        SParamInfo GetParamInfo(in u8string ssPath) const;

        boolean IsParamDirty(in u8string ssPath) const;

        void ResetParamDirtyFlag(in u8string ssPath);

        boolean IsParamMapDirty() const;

        void ResetParamMapDirtyFlags();
    };
}; // sdv