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

#include <memory>
#include <string>

namespace Tango
{
/**
 * User class to set forwarded attribute default properties.
 *
 * This class is used to set forwarded attribute default properties. Three levels of
 * attributes properties setting are implemented within Tango. The highest
 * property setting level is the database. Then the user default (set using
 * this UserDefaultFwdAttrProp class) and finally a Tango library default
 * value
 *
 *
 * @headerfile tango.h
 * @ingroup Server
 */

class UserDefaultFwdAttrProp
{
  public:
    /**@name Constructor
     * Only one constructor is defined for this class */
    //@{
    /**
     * Constructs a newly allocated UserDefaultAttrProp object.
     */
    UserDefaultFwdAttrProp() :
        ext(nullptr)
    {
    }

    //@}

    /**@name Set default property methods */
    //@{
    /**
     * Set default label property
     *
     * @param    def_label    The user default label property
     */
    void set_label(const std::string &def_label)
    {
        label = def_label;
    }

    //@}

    /// @privatesection
    ~UserDefaultFwdAttrProp() { }

    std::string label;

  private:
    class UserDefaultFwdAttrPropExt
    {
    };

    std::unique_ptr<UserDefaultFwdAttrPropExt> ext; // Class extension
};
} // namespace Tango
#endif
