/*
 * SPDX-FileCopyrightText: 2011 Copyright contributors to the cppTango project
 *
 * SPDX-License-Identifier: LGPL-3.0-or-later
 */
// NOLINTBEGIN(*)
#ifndef TANGO_TEST_DEVICE_SERVER_GENERIC_IOADDATTRIBUTE_H
  #define TANGO_TEST_DEVICE_SERVER_GENERIC_IOADDATTRIBUTE_H

  #include <tango/tango.h>

//
// Define classes for four commands
//

class IOAddAttribute : public Tango::Command
{
  public:
    IOAddAttribute(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *);

    ~IOAddAttribute() { }

    virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &);
    virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &);
};

class IORemoveAttribute : public Tango::Command
{
  public:
    IORemoveAttribute(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *);

    ~IORemoveAttribute() { }

    virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &);
    virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &);
};

class IOAddCommand : public Tango::Command
{
  public:
    IOAddCommand(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *);

    ~IOAddCommand() { }

    virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &);
    virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &);
};

class IORemoveCommand : public Tango::Command
{
  public:
    IORemoveCommand(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *);

    ~IORemoveCommand() { }

    virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &);
    virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &);
};

class DynCommand : public Tango::Command
{
  public:
    DynCommand(const char *, Tango::CmdArgType, Tango::CmdArgType, const char *, const char *);

    ~DynCommand() { }

    virtual bool is_allowed(Tango::DeviceImpl *, const CORBA::Any &);
    virtual CORBA::Any *execute(Tango::DeviceImpl *, const CORBA::Any &);
};

#endif
// NOLINTEND(*)
