diff --git a/cpp-terminal/options.cpp b/cpp-terminal/options.cpp index e5702e1f..8b9e29e1 100644 --- a/cpp-terminal/options.cpp +++ b/cpp-terminal/options.cpp @@ -32,4 +32,4 @@ void Term::Options::clean() m_Options = cleaned; } -bool Term::Options::has(const Option& option) { return std::find(m_Options.begin(), m_Options.end(), option) != m_Options.end(); } +bool Term::Options::has(const Option& option) const noexcept { return std::find(m_Options.begin(), m_Options.end(), option) != m_Options.end(); } diff --git a/cpp-terminal/options.hpp b/cpp-terminal/options.hpp index 86e11004..ce9bdf4c 100644 --- a/cpp-terminal/options.hpp +++ b/cpp-terminal/options.hpp @@ -40,8 +40,7 @@ class Options bool operator==(const Options& options); bool operator!=(const Options& options); - - bool has(const Option& option); + bool has(const Option& option) const noexcept; private: void clean(); diff --git a/cpp-terminal/private/terminal_impl.cpp b/cpp-terminal/private/terminal_impl.cpp index b28ffcbe..e869cf5d 100644 --- a/cpp-terminal/private/terminal_impl.cpp +++ b/cpp-terminal/private/terminal_impl.cpp @@ -157,7 +157,7 @@ std::size_t Term::Terminal::unsetFocusEvents() #endif } -void Term::Terminal::setMode() +void Term::Terminal::setMode() const { static bool activated{false}; #if defined(_WIN32) diff --git a/cpp-terminal/terminal_impl.cpp b/cpp-terminal/terminal_impl.cpp index 96179710..d8a71bc7 100644 --- a/cpp-terminal/terminal_impl.cpp +++ b/cpp-terminal/terminal_impl.cpp @@ -18,9 +18,7 @@ #include "cpp-terminal/style.hpp" #include "cpp-terminal/terminal.hpp" //FIXME avoid recursion -Term::Options Term::Terminal::m_options{}; //NOLINT(fuchsia-statically-constructed-objects) - -Term::Options Term::Terminal::getOptions() noexcept { return m_options; } +Term::Options Term::Terminal::getOptions() const noexcept { return m_options; } Term::Terminal::Terminal() noexcept try @@ -39,8 +37,8 @@ catch(...) Term::Terminal::~Terminal() noexcept try { - if(m_options.has(Option::ClearScreen)) { Term::Private::out.write(clear_buffer() + style(Style::Reset) + cursor_move(1, 1) + screen_load()); } - if(m_options.has(Option::NoCursor)) { Term::Private::out.write(cursor_on()); } + if(getOptions().has(Option::ClearScreen)) { Term::Private::out.write(clear_buffer() + style(Style::Reset) + cursor_move(1, 1) + screen_load()); } + if(getOptions().has(Option::NoCursor)) { Term::Private::out.write(cursor_on()); } set_unset_utf8(); store_and_restore(); unsetFocusEvents(); @@ -51,9 +49,9 @@ catch(...) ExceptionHandler(Private::ExceptionDestination::StdErr); } -void Term::Terminal::applyOptions() +void Term::Terminal::applyOptions() const { - if(m_options.has(Option::ClearScreen)) { Term::Private::out.write(screen_save() + clear_buffer() + style(Style::Reset) + cursor_move(1, 1)); } - if(m_options.has(Option::NoCursor)) { Term::Private::out.write(cursor_off()); } + if(getOptions().has(Option::ClearScreen)) { Term::Private::out.write(screen_save() + clear_buffer() + style(Style::Reset) + cursor_move(1, 1)); } + if(getOptions().has(Option::NoCursor)) { Term::Private::out.write(cursor_off()); } setMode(); } diff --git a/cpp-terminal/terminal_impl.hpp b/cpp-terminal/terminal_impl.hpp index 5a1329b1..183bc8e5 100644 --- a/cpp-terminal/terminal_impl.hpp +++ b/cpp-terminal/terminal_impl.hpp @@ -22,16 +22,16 @@ class Terminal public: ~Terminal() noexcept; Terminal() noexcept; - Terminal(const Terminal&) = delete; - Terminal(Terminal&&) = delete; - Terminal& operator=(Terminal&&) = delete; - Terminal& operator=(const Terminal&) = delete; - template static void setOptions(const Args&&... args) + Terminal(const Terminal&) = delete; + Terminal(Terminal&&) = delete; + Terminal& operator=(Terminal&&) = delete; + Terminal& operator=(const Terminal&) = delete; + template void setOptions(const Args&&... args) { m_options = {args...}; applyOptions(); } - static Term::Options getOptions() noexcept; + Term::Options getOptions() const noexcept; private: /// @@ -43,18 +43,18 @@ class Terminal ///@brief Set mode raw/cooked. ///First call is to save the good state set-up by cpp-terminal. /// - static void setMode(); + void setMode() const; - static void setOptions(); - static void applyOptions(); + void setOptions(); + void applyOptions() const; static std::size_t setMouseEvents(); static std::size_t unsetMouseEvents(); static std::size_t setFocusEvents(); static std::size_t unsetFocusEvents(); - static void set_unset_utf8(); - static Term::Options m_options; + static void set_unset_utf8(); + Term::Options m_options; }; } // namespace Term