1 // 2 // Copyright(c) 2015 Gabi Melman. 3 // Distributed under the MIT License (http://opensource.org/licenses/MIT) 4 // 5 6 #pragma once 7 8 #include <atomic> 9 // null, no cost dummy "mutex" and dummy "atomic" int 10 11 namespace spdlog 12 { 13 namespace details 14 { 15 struct null_mutex 16 { locknull_mutex17 void lock() {} unlocknull_mutex18 void unlock() {} try_locknull_mutex19 bool try_lock() 20 { 21 return true; 22 } 23 }; 24 25 struct null_atomic_int 26 { 27 int value; 28 null_atomic_int() = default; 29 null_atomic_intnull_atomic_int30 null_atomic_int(int val):value(val) 31 {} 32 loadnull_atomic_int33 int load(std::memory_order) const 34 { 35 return value; 36 } 37 storenull_atomic_int38 void store(int val) 39 { 40 value = val; 41 } 42 }; 43 44 } 45 } 46