Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

m_options can't be static #345

Merged
merged 1 commit into from
Dec 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cpp-terminal/options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,25 @@

#include <algorithm>

Term::Options::Options(const std::initializer_list<Term::Option>& option) : m_Options(option) { clean(); }

Check warning on line 14 in cpp-terminal/options.cpp

View workflow job for this annotation

GitHub Actions / cpp-linter

cpp-terminal/options.cpp:14:35 [misc-include-cleaner]

no header providing "std::initializer_list" is directly included

bool Term::Options::operator==(const Options& options) { return m_Options == options.m_Options; }
bool Term::Options::operator!=(const Options& options) { return !(m_Options == options.m_Options); }

void Term::Options::clean()
{
std::vector<Term::Option> cleaned;

Check warning on line 21 in cpp-terminal/options.cpp

View workflow job for this annotation

GitHub Actions / cpp-linter

cpp-terminal/options.cpp:21:8 [misc-include-cleaner]

no header providing "std::vector" is directly included
std::sort(m_Options.begin(), m_Options.end());
while(!m_Options.empty())
{
const std::size_t count = std::count(m_Options.begin(), m_Options.end(), m_Options[0]);

Check warning on line 25 in cpp-terminal/options.cpp

View workflow job for this annotation

GitHub Actions / cpp-linter

cpp-terminal/options.cpp:25:16 [misc-include-cleaner]

no header providing "std::size_t" is directly included
const std::size_t anti_count = std::count(m_Options.begin(), m_Options.end(), static_cast<Term::Option>(-1 * static_cast<std::int16_t>(m_Options[0])));

Check warning on line 26 in cpp-terminal/options.cpp

View workflow job for this annotation

GitHub Actions / cpp-linter

cpp-terminal/options.cpp:26:16 [misc-include-cleaner]

no header providing "std::size_t" is directly included

Check warning on line 26 in cpp-terminal/options.cpp

View workflow job for this annotation

GitHub Actions / cpp-linter

cpp-terminal/options.cpp:26:131 [misc-include-cleaner]

no header providing "std::int16_t" is directly included
if(count > anti_count) { cleaned.emplace_back(m_Options[0]); }
else if(count < anti_count) { cleaned.emplace_back(static_cast<Term::Option>(-1 * static_cast<std::int16_t>(m_Options[0]))); }

Check warning on line 28 in cpp-terminal/options.cpp

View workflow job for this annotation

GitHub Actions / cpp-linter

cpp-terminal/options.cpp:28:104 [misc-include-cleaner]

no header providing "std::int16_t" is directly included
m_Options.erase(std::remove(m_Options.begin(), m_Options.end(), static_cast<Term::Option>(-1 * static_cast<std::int16_t>(m_Options[0]))), m_Options.end());

Check warning on line 29 in cpp-terminal/options.cpp

View workflow job for this annotation

GitHub Actions / cpp-linter

cpp-terminal/options.cpp:29:117 [misc-include-cleaner]

no header providing "std::int16_t" is directly included
m_Options.erase(std::remove(m_Options.begin(), m_Options.end(), m_Options[0]), m_Options.end());
}
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(); }
3 changes: 1 addition & 2 deletions cpp-terminal/options.hpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*

Check warning on line 1 in cpp-terminal/options.hpp

View workflow job for this annotation

GitHub Actions / cpp-linter

cpp-terminal/options.hpp:1:1 [llvm-header-guard]

header is missing header guard
* cpp-terminal
* C++ library for writing multi-platform terminal applications.
*
Expand Down Expand Up @@ -40,8 +40,7 @@

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();
Expand Down
2 changes: 1 addition & 1 deletion cpp-terminal/private/terminal_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
*/

#include "cpp-terminal/cursor.hpp"
#include "cpp-terminal/private/env.hpp"

Check warning on line 11 in cpp-terminal/private/terminal_impl.cpp

View workflow job for this annotation

GitHub Actions / cpp-linter

cpp-terminal/private/terminal_impl.cpp:11:1 [misc-include-cleaner]

included header env.hpp is not used directly
#include "cpp-terminal/private/exception.hpp"
#include "cpp-terminal/private/file.hpp"
#include "cpp-terminal/terminal.hpp"

Check warning on line 14 in cpp-terminal/private/terminal_impl.cpp

View workflow job for this annotation

GitHub Actions / cpp-linter

cpp-terminal/private/terminal_impl.cpp:14:1 [misc-include-cleaner]

included header terminal.hpp is not used directly

#if defined(_WIN32)
#include <io.h>
Expand Down Expand Up @@ -157,7 +157,7 @@
#endif
}

void Term::Terminal::setMode()
void Term::Terminal::setMode() const
{
static bool activated{false};
#if defined(_WIN32)
Expand Down
14 changes: 6 additions & 8 deletions cpp-terminal/terminal_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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();
Expand All @@ -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();
}
22 changes: 11 additions & 11 deletions cpp-terminal/terminal_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<typename... Args> static void setOptions(const Args&&... args)
Terminal(const Terminal&) = delete;
Terminal(Terminal&&) = delete;
Terminal& operator=(Terminal&&) = delete;
Terminal& operator=(const Terminal&) = delete;
template<typename... Args> void setOptions(const Args&&... args)
{
m_options = {args...};
applyOptions();
}
static Term::Options getOptions() noexcept;
Term::Options getOptions() const noexcept;

private:
///
Expand All @@ -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
Loading