File debug.h
Go to the documentation of this file
#pragma once
#include <atomic>
#include <muda/muda_config.h>
#include <mutex>
namespace muda
{
class Debug
{
private:
static auto& _is_debug_sync_all()
{
static std::atomic<bool> m_is_debug_sync_all(false);
return m_is_debug_sync_all;
}
static auto& _mutex()
{
static std::mutex m_mutex;
return m_mutex;
}
static auto& _sync_callback()
{
static std::function<void()> m_sync_callback = nullptr;
return m_sync_callback;
}
public:
static bool debug_sync_all(bool value)
{
_is_debug_sync_all() = value;
return value;
}
static bool is_debug_sync_all() { return _is_debug_sync_all(); }
static void set_sync_callback(std::function<void()> callback)
{
std::lock_guard<std::mutex> lock(_mutex());
_sync_callback() = callback;
}
static void call_sync_callback()
{
if(_sync_callback())
{
_sync_callback()();
}
}
};
} // namespace muda