MUDA
Loading...
Searching...
No Matches
debug.h
1#pragma once
2#include <atomic>
3#include <muda/muda_config.h>
4#include <mutex>
5namespace muda
6{
7class Debug
8{
9 private:
10 static auto& _is_debug_sync_all()
11 {
12 static std::atomic<bool> m_is_debug_sync_all(false);
13 return m_is_debug_sync_all;
14 }
15
16 static auto& _mutex()
17 {
18 static std::mutex m_mutex;
19 return m_mutex;
20 }
21
22 static auto& _sync_callback()
23 {
24 static std::function<void()> m_sync_callback = nullptr;
25 return m_sync_callback;
26 }
27
28 public:
29 static bool debug_sync_all(bool value)
30 {
31 _is_debug_sync_all() = value;
32 return value;
33 }
34
35 static bool is_debug_sync_all() { return _is_debug_sync_all(); }
36
37 static void set_sync_callback(std::function<void()> callback)
38 {
39 std::lock_guard<std::mutex> lock(_mutex());
40 _sync_callback() = callback;
41 }
42
43 static void call_sync_callback()
44 {
45 if(_sync_callback())
46 {
47 _sync_callback()();
48 }
49 }
50};
51} // namespace muda
Definition debug.h:8