/*
 * SPDX-FileCopyrightText: 2025 Copyright contributors to the cppTango project
 *
 * SPDX-License-Identifier: LGPL-3.0-or-later
 */
#ifndef TANGO_CLIENT_DEVICEATTRIBUTECONFIG_H
#define TANGO_CLIENT_DEVICEATTRIBUTECONFIG_H

#include <tango/common/tango_const.h>

#include <string>
#include <vector>

namespace Tango
{
/**
 * Base structure for Attribute configuration
 *
 * @headerfile tango.h
 */
struct DeviceAttributeConfig
{
    std::string name;                    ///< Name
    AttrWriteType writable;              ///< Writable type (Read, Write,...)
    AttrDataFormat data_format;          ///< Data format (Scalar, Spectrum,...)
    int data_type;                       ///< Data type
    int max_dim_x;                       ///< Max dim X
    int max_dim_y;                       ///< Max dim Y
    std::string description;             ///< Description
    std::string label;                   ///< Label
    std::string unit;                    ///< Unit
    std::string standard_unit;           ///< Standard unit
    std::string display_unit;            ///< Display unit
    std::string format;                  ///< Format
    std::string min_value;               ///< Min value
    std::string max_value;               ///< Max value
    std::string min_alarm;               ///< Min alarm
    std::string max_alarm;               ///< Max alarm
    std::string writable_attr_name;      ///< Writable att. name
    std::vector<std::string> extensions; ///< For future extensions

    /// @privatesection
    bool operator==(const DeviceAttributeConfig &);
};
} // namespace Tango
#endif
