diff options
Diffstat (limited to 'cpp/src/Slice/SignalHandler.cpp')
-rw-r--r-- | cpp/src/Slice/SignalHandler.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/cpp/src/Slice/SignalHandler.cpp b/cpp/src/Slice/SignalHandler.cpp index b1606a6b4f1..bbe5a3a4757 100644 --- a/cpp/src/Slice/SignalHandler.cpp +++ b/cpp/src/Slice/SignalHandler.cpp @@ -17,11 +17,13 @@ using namespace std; +using namespace Slice; // // Signal handler routine to unlink output files in case of translator // being interrupted. // +static SignalHandlerCallback _callback = 0; static vector<string> _fileList; #ifdef _WIN32 @@ -30,6 +32,11 @@ static BOOL WINAPI signalHandler(DWORD dwCtrlType) static void signalHandler(int signal) #endif { + if(_callback != 0) + { + _callback(); + } + for(unsigned int i = 0; i < _fileList.size(); ++i) { remove(_fileList[i].c_str()); @@ -64,6 +71,12 @@ Slice::SignalHandler::~SignalHandler() } void +Slice::SignalHandler::setCallback(SignalHandlerCallback callback) +{ + _callback = callback; +} + +void Slice::SignalHandler::addFile(const string& file) { _fileList.push_back(file); |