/*
 * SPDX-FileCopyrightText: 2014 Copyright contributors to the cppTango project
 *
 * SPDX-License-Identifier: LGPL-3.0-or-later
 */

#ifndef TANGO_SERVER_USERDEFAULTPIPEPROP_H
#define TANGO_SERVER_USERDEFAULTPIPEPROP_H

#include <memory>
#include <string>

namespace Tango
{

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

class UserDefaultPipeProp
{
  public:
    /**@name Constructor
     * Only one constructor is defined for this class */
    //@{
    /**
     * Constructs a newly allocated UserDefaultPipeProp object.
     */
    UserDefaultPipeProp() :
        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;
    }

    /**
     * Set default description property
     *
     * @param    def_desc    The user default description property
     */
    void set_description(const std::string &def_desc)
    {
        description = def_desc;
    }

    //@}

    /// @privatesection
    ~UserDefaultPipeProp() { }

    std::string label;
    std::string description;

  private:
    class UserDefaultPipePropExt
    {
    };

    std::unique_ptr<UserDefaultPipePropExt> ext; // Class extension
};

} // namespace Tango

#endif /* TANGO_SERVER_USERDEFAULTPIPEPROP_H */
