/* Copyright (c) 2013 Microsoft Corporation. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Author: Leonardo de Moura */ #include #include #include #include "util/trace.h" #ifndef LEAN_TRACE_OUT #define LEAN_TRACE_OUT ".lean_trace" #endif namespace lean { #ifdef LEAN_TRACE std::ofstream tout(LEAN_TRACE_OUT); mutex trace_mutex; #endif static std::set * g_enabled_trace_tags = nullptr; void initialize_trace() { // lazy initialization } void finalize_trace() { if (g_enabled_trace_tags) delete g_enabled_trace_tags; } void enable_trace(char const * tag) { if (!g_enabled_trace_tags) g_enabled_trace_tags = new std::set(); g_enabled_trace_tags->insert(tag); } void disable_trace(char const * tag) { if (g_enabled_trace_tags) g_enabled_trace_tags->erase(tag); } bool is_trace_enabled(char const * tag) { return g_enabled_trace_tags && g_enabled_trace_tags->find(tag) != g_enabled_trace_tags->end(); } }