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

#ifndef TANGO_SERVER_MULTICLASSATTRIBUTE_H
#define TANGO_SERVER_MULTICLASSATTRIBUTE_H

#include <string>
#include <vector>

namespace Tango
{
class Attr;

//=============================================================================
//
//            The MultiClassAttribute class
//
//
// description :    This class is a holder for all the ClassAttribute
//            instance. There is one instance of this class for each
//            Tango device pattern implementation. This instance is
//            stored in the DeviceClass object of the pattern
//
//=============================================================================

class MultiClassAttribute
{
  public:
    MultiClassAttribute();
    ~MultiClassAttribute();

    void init_class_attribute(const std::string &class_name, long base = 0);

    std::vector<Tango::Attr *> &get_attr_list()
    {
        return attr_list;
    }

    Attr &get_attr(const std::string &attr_name);
    void remove_attr(const std::string &, const std::string &);

  protected:
    std::vector<Tango::Attr *> attr_list;
};

} // namespace Tango

#endif // TANGO_SERVER_MULTICLASSATTRIBUTE_H
