#ifndef SIGNALHANDLE_WNM4OBKG #define SIGNALHANDLE_WNM4OBKG #include #include #include typedef std::function SigFunc; // return 0 on success. int CatchSignals(const int signals[], const size_t count, SigFunc f); int WaitForSignals(const int signals[], const size_t count, SigFunc f = SigFunc()); template inline int CatchSignals(const int (& signals)[N], SigFunc f) { return CatchSignals(signals, N, f); } template inline void CatchSignals(std::initializer_list list, T...t) { std::vector arr(list.begin(), list.end()); CatchSignals(arr.data(), arr.size(), t...); } template inline int WaitForSignals(const int (&signals)[N]) { return WaitForSignals(signals, N, SigFunc()); } template inline int WaitForSignals(int (&signals)[N], Func f) { return WaitForSignals(signals, N, f); } template inline void WaitForSignals(std::initializer_list list, T...t) { std::vector arr(list.begin(), list.end()); WaitForSignals(arr.data(), arr.size(), t...); } #endif // end of include guard: SIGNALHANDLE_WNM4OBKG