diff --git a/console.cpp b/console.cpp index 5c1920b..6fc73a2 100644 --- a/console.cpp +++ b/console.cpp @@ -34,14 +34,14 @@ uint8_t console::get_char() void console::operator()() { while(!*terminate) { - auto c = wait_for_char(500); + int c = wait_for_char(500); - if (c.has_value() == false) + if (c == -1) continue; if (c == 3) *terminate = true; else - buffer.push_back(c.value()); + buffer.push_back(c); } } diff --git a/console.h b/console.h index 3229fbc..958462e 100644 --- a/console.h +++ b/console.h @@ -1,7 +1,6 @@ #pragma once #include -#include #include #include @@ -16,7 +15,7 @@ private: std::vector buffer; protected: - virtual std::optional wait_for_char(const int timeout) = 0; + virtual int wait_for_char(const int timeout) = 0; public: console(std::atomic_bool *const terminate); diff --git a/console_ncurses.cpp b/console_ncurses.cpp index f671444..bd3c0fd 100644 --- a/console_ncurses.cpp +++ b/console_ncurses.cpp @@ -25,14 +25,14 @@ console_ncurses::~console_ncurses() endwin(); } -std::optional console_ncurses::wait_for_char(const int timeout) +int console_ncurses::wait_for_char(const int timeout) { struct pollfd fds[] = { { STDIN_FILENO, POLLIN, timeout } }; if (poll(fds, 1, 0) == 1 && fds[0].revents) return getch(); - return { }; + return -1; } void console_ncurses::put_char(const char c) diff --git a/console_ncurses.h b/console_ncurses.h index ee9d1d8..a255bc5 100644 --- a/console_ncurses.h +++ b/console_ncurses.h @@ -11,7 +11,7 @@ private: NEWWIN *w_main { nullptr }; protected: - std::optional wait_for_char(const int timeout) override; + int wait_for_char(const int timeout) override; public: console_ncurses(std::atomic_bool *const terminate); diff --git a/console_posix.cpp b/console_posix.cpp index 3a31210..581883b 100644 --- a/console_posix.cpp +++ b/console_posix.cpp @@ -25,14 +25,14 @@ console_posix::~console_posix() error_exit(true, "~console_posix: tcsetattr failed"); } -std::optional console_posix::wait_for_char(const int timeout) +int console_posix::wait_for_char(const int timeout) { struct pollfd fds[] = { { STDIN_FILENO, POLLIN, timeout } }; if (poll(fds, 1, 0) == 1 && fds[0].revents) return getchar(); - return { }; + return -1; } void console_posix::put_char(const char c) diff --git a/console_posix.h b/console_posix.h index 35f36a7..7722576 100644 --- a/console_posix.h +++ b/console_posix.h @@ -9,7 +9,7 @@ private: struct termios org_tty_opts { 0 }; protected: - std::optional wait_for_char(const int timeout) override; + int wait_for_char(const int timeout) override; public: console_posix(std::atomic_bool *const terminate);