3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-07 18:05:21 +00:00
z3/lib/trace.cpp
Leonardo de Moura e9eab22e5c Z3 sources
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2012-10-02 11:35:25 -07:00

69 lines
1.2 KiB
C++

/*++
Copyright (c) 2006 Microsoft Corporation
Module Name:
trace.cpp
Abstract:
Trace message support.
Author:
Leonardo de Moura (leonardo) 2006-09-13.
Revision History:
--*/
#include"trace.h"
#include"str_hashtable.h"
#ifdef _TRACE
std::ofstream tout(".z3-trace");
#endif
bool g_enable_all_trace_tags = false;
str_hashtable* g_enabled_trace_tags = 0;
static str_hashtable& get_enabled_trace_tags() {
if (!g_enabled_trace_tags) {
g_enabled_trace_tags = alloc(str_hashtable);
}
return *g_enabled_trace_tags;
}
void finalize_trace() {
dealloc(g_enabled_trace_tags);
g_enabled_trace_tags = 0;
}
void enable_trace(const char * tag) {
get_enabled_trace_tags().insert(const_cast<char *>(tag));
}
void enable_all_trace(bool flag) {
g_enable_all_trace_tags = flag;
}
void disable_trace(const char * tag) {
get_enabled_trace_tags().erase(const_cast<char *>(tag));
}
bool is_trace_enabled(const char * tag) {
return g_enable_all_trace_tags ||
(g_enabled_trace_tags && get_enabled_trace_tags().contains(const_cast<char *>(tag)));
}
void close_trace() {
#ifdef _TRACE
tout.close();
#endif
}
void open_trace() {
#ifdef _TRACE
tout.open(".z3-trace");
#endif
}