summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/SignalHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Slice/SignalHandler.cpp')
-rw-r--r--cpp/src/Slice/SignalHandler.cpp13
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);