#pragma once #include #include #include class console { private: std::atomic_bool *const terminate { nullptr }; std::thread *th { nullptr }; std::vector buffer; protected: virtual int wait_for_char(const int timeout) = 0; public: console(std::atomic_bool *const terminate); virtual ~console(); bool poll_char(); uint8_t get_char(); virtual void put_char(const char c) = 0; virtual void resize_terminal() = 0; void operator()(); };