File tree Expand file tree Collapse file tree 4 files changed +17
-13
lines changed
Expand file tree Collapse file tree 4 files changed +17
-13
lines changed Original file line number Diff line number Diff line change 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
4441const 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 {
Original file line number Diff line number Diff line change @@ -16,21 +16,24 @@ using sighandler_t = void (*)(int);
1616namespace Term
1717{
1818
19+ class Terminal ;
20+
1921namespace Private
2022{
2123
2224class Signals
2325{
2426public:
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
3133private:
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
Original file line number Diff line number Diff line change 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
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 }
Original file line number Diff line number Diff 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;
You can’t perform that action at this time.
0 commit comments