#ifndef STATE_H #define STATE_H class Context; class State { protected: Context* context_ = nullptr; public: virtual ~State() = default; void set_context(Context* context) { context_ = context; } virtual const char* name() const = 0; virtual void on_entry() = 0; virtual void on_do() = 0; virtual void on_exit() = 0; // Events virtual void reset() { } virtual void set_operational() { } virtual void set_pre_operational() { } virtual void fault() { } }; #endif