8 #ifndef SCARAB_SIGNAL_HANDLER_HH_ 9 #define SCARAB_SIGNAL_HANDLER_HH_ 121 static void add_cancelable( std::shared_ptr< cancelable > a_cancelable );
123 static void remove_cancelable( std::shared_ptr< cancelable > a_cancelable );
125 static void remove_cancelable(
cancelable* a_cancelable );
131 static void handle_signals();
133 static void unhandle_signals();
135 static bool is_handling(
int a_signal );
138 [[noreturn]]
static void handle_terminate() noexcept;
141 static void handle_exit_error(
int a_sig );
144 static void handle_exit_success(
int a_sig );
147 [[noreturn]]
static void terminate(
int a_code ) noexcept;
150 static void exit(
int a_code );
153 static void print_current_exception(
bool a_use_logging );
156 static void print_stack_trace(
bool a_use_logging );
159 static void cancel_all(
int a_code );
167 typedef std::map< cancelable*, cancelable_wptr_t >
cancelers;
191 typedef void (*handler_t)(int);
std::weak_ptr< cancelable > cancelable_wptr_t
#define mv_accessible_static_noset
cancelers::iterator cancelers_it_t
static cancelers s_cancelers
cancelers::const_iterator cancelers_cit_t
std::map< cancelable *, cancelable_wptr_t > cancelers
Deals with cleanly exiting an application, and includes signal and std::terminate handler functions...
#define mv_accessible_static
static std::recursive_mutex s_mutex
Base class for a cancelable object (i.e. an object that can be canceled by scarab::signal_handler or ...
#define mv_referrable_static