Skip to content

Commit a975c2d

Browse files
committed
clean
1 parent d1a69ff commit a975c2d

File tree

4 files changed

+17
-13
lines changed

4 files changed

+17
-13
lines changed

cpp-terminal/private/signals.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
#include "cpp-terminal/private/signals.hpp"
1111

12-
#include "cpp-terminal/terminal.hpp"
12+
#include "cpp-terminal/terminal_impl.hpp"
1313
#include "signals.hpp"
1414

1515
#include <algorithm>
@@ -36,10 +36,7 @@ static BOOL WINAPI consoleHandler(DWORD signal)
3636
}
3737
#endif
3838

39-
void Term::Private::Signals::clean_terminal() noexcept
40-
{
41-
Term::terminal.clean();
42-
}
39+
void Term::Private::Signals::clean_terminal() noexcept { const_cast<Term::Terminal*>(m_term)->clean(); }
4340

4441
const std::size_t Term::Private::Signals::m_signals_number{NSIG - 1};
4542

@@ -58,8 +55,11 @@ void Term::Private::Signals::setHandler(const sighandler_t& handler) noexcept
5855
#endif
5956
}
6057

61-
Term::Private::Signals::Signals() noexcept
58+
const Term::Terminal* Term::Private::Signals::m_term{nullptr};
59+
60+
Term::Private::Signals::Signals(const Terminal& terminal) noexcept
6261
{
62+
m_term = &terminal;
6363
m_handlers.reserve(m_signals_number);
6464
for(std::size_t signal = 0; signal != m_signals_number; ++signal)
6565
{

cpp-terminal/private/signals.hpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,24 @@ using sighandler_t = void (*)(int);
1616
namespace Term
1717
{
1818

19+
class Terminal;
20+
1921
namespace Private
2022
{
2123

2224
class Signals
2325
{
2426
public:
25-
Signals() noexcept;
27+
Signals(const Terminal&) noexcept;
2628
~Signals() noexcept = default;
2729
void setHandler(const sighandler_t& handler) noexcept;
28-
void reset_and_raise(const int &sign) noexcept;
29-
static void clean_terminal() noexcept;
30+
void reset_and_raise(const int& sign) noexcept;
31+
static void clean_terminal() noexcept;
3032

3133
private:
32-
const static std::size_t m_signals_number;
33-
std::vector<sighandler_t> m_handlers;
34+
const static std::size_t m_signals_number;
35+
std::vector<sighandler_t> m_handlers;
36+
const static Term::Terminal* m_term;
3437
};
3538

3639
} // namespace Private

cpp-terminal/terminal_initializer.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "cpp-terminal/private/file_initializer.hpp"
1414
#include "cpp-terminal/private/signals.hpp"
1515
#include "cpp-terminal/terminal.hpp"
16+
#include "terminal.hpp"
1617

1718
#include <new>
1819

@@ -25,7 +26,7 @@ try
2526
{
2627
static const Private::FileInitializer files_init;
2728
new(&Term::terminal) Terminal();
28-
static Term::Private::Signals signals;
29+
static Term::Private::Signals signals(Term::terminal);
2930
sighandler_t handler = [](int signum) { signals.reset_and_raise(signum); };
3031
signals.setHandler(handler);
3132
}

examples/signal.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ int main()
2020
{
2121
Term::terminal.setOptions(Term::Option::Raw, Term::Option::SignalKeys, Term::Option::ClearScreen);
2222
std::signal(SIGINT,
23-
[](int sig)
23+
[](int)
2424
{
2525
std::ofstream outfile("cpp_terminal_signal.txt");
2626
outfile << "my text here!" << std::endl;

0 commit comments

Comments
 (0)