#ifndef STATEFLAGS_H
#define	STATEFLAGS_H

#include <cstdint>

class StateFlags
{
  public:

    // MARK is used to indicate that sub-objects
    // of the marked object have warnings or alerts
    enum class state : uint16_t
    {
        NORM,
        MARK,
        WARN,
        ALERT
    };

    StateFlags() = default;
    StateFlags(const StateFlags& orig) = default;
    StateFlags& operator=(const StateFlags& orig) = default;
    StateFlags(StateFlags&& orig) = default;
    StateFlags& operator=(StateFlags&& orig) = default;
    virtual ~StateFlags() noexcept
    {
    }

    virtual bool has_mark_state() const;
    virtual bool has_warn_state() const;
    virtual bool has_alert_state() const;
    virtual void set_mark();
    virtual void set_warn();
    virtual void set_alert();
    virtual state get_state() const;
    virtual void clear_state_flags();
    virtual state update_state_flags() = 0;

  protected:
    state obj_state {StateFlags::state::NORM};
};

#endif	/* STATEFLAGS_H */
