13fb52e53SBen Tyner #pragma once 23fb52e53SBen Tyner #include <bitset> 33fb52e53SBen Tyner 43fb52e53SBen Tyner namespace attn 53fb52e53SBen Tyner { 63fb52e53SBen Tyner 73fb52e53SBen Tyner /** @brief configuration flags */ 83fb52e53SBen Tyner enum AttentionFlag 93fb52e53SBen Tyner { 103fb52e53SBen Tyner enVital = 0, 113fb52e53SBen Tyner enCheckstop = 1, 123fb52e53SBen Tyner enTerminate = 2, 133fb52e53SBen Tyner enBreakpoints = 3, 14fe15649eSBen Tyner dfltTi = 4, 15*d28d5f8bSaustinfcui enClrAttnIntr = 5, 163fb52e53SBen Tyner lastFlag 173fb52e53SBen Tyner }; 183fb52e53SBen Tyner 193fb52e53SBen Tyner /** @brief Objhects to hold configuration data */ 203fb52e53SBen Tyner class Config 213fb52e53SBen Tyner { 223fb52e53SBen Tyner public: // methods 233fb52e53SBen Tyner /** @brief Default constructor */ 2472feadcfSBen Tyner Config(); 253fb52e53SBen Tyner 263fb52e53SBen Tyner /** @brief Default destructor */ 273fb52e53SBen Tyner ~Config() = default; 283fb52e53SBen Tyner 293fb52e53SBen Tyner /** @brief Get state of flag */ 303fb52e53SBen Tyner bool getFlag(AttentionFlag i_flag) const; 313fb52e53SBen Tyner 323fb52e53SBen Tyner /** @brief Set configuration flag */ 333fb52e53SBen Tyner void setFlag(AttentionFlag i_flag); 343fb52e53SBen Tyner 3572feadcfSBen Tyner /** @brief Set all configuration flags */ 3672feadcfSBen Tyner void setFlagAll(); 3772feadcfSBen Tyner 383fb52e53SBen Tyner /** @brief Clear configuration flag */ 393fb52e53SBen Tyner void clearFlag(AttentionFlag i_flag); 403fb52e53SBen Tyner 4172feadcfSBen Tyner /** @brief Clear all configuration flags */ 4272feadcfSBen Tyner void clearFlagAll(); 4372feadcfSBen Tyner 443fb52e53SBen Tyner private: 453fb52e53SBen Tyner std::bitset<lastFlag> iv_flags; // configuration flags 463fb52e53SBen Tyner }; 473fb52e53SBen Tyner 483fb52e53SBen Tyner } // namespace attn 49