mirror of
https://github.com/Z3Prover/z3
synced 2025-04-10 11:17:07 +00:00
43 lines
882 B
C++
43 lines
882 B
C++
/*++
|
|
Copyright (c) 2011 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
scoped_ctrl_c.h
|
|
|
|
Abstract:
|
|
|
|
Scoped control-c handler.
|
|
|
|
Author:
|
|
|
|
Leonardo de Moura (leonardo) 2011-04-27.
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
#ifndef _SCOPED_CTRL_C_H_
|
|
#define _SCOPED_CTRL_C_H_
|
|
|
|
#include"event_handler.h"
|
|
|
|
struct scoped_ctrl_c {
|
|
event_handler & m_cancel_eh;
|
|
bool m_first;
|
|
bool m_once;
|
|
bool m_enabled;
|
|
void (*m_old_handler)(int);
|
|
scoped_ctrl_c * m_old_scoped_ctrl_c;
|
|
static scoped_ctrl_c * g_obj;
|
|
static void on_ctrl_c(int);
|
|
public:
|
|
// If once == true, then the cancel_eh is invoked only at the first Ctrl-C.
|
|
// The next time, the old signal handler will take over.
|
|
// if enabled == false, then scoped_ctrl_c is a noop
|
|
scoped_ctrl_c(event_handler & eh, bool once=true, bool enabled=true);
|
|
~scoped_ctrl_c();
|
|
void reset() { m_first = true; }
|
|
};
|
|
|
|
#endif
|