@@ -47,9 +47,12 @@ namespace ESPressio {
4747 T _value;
4848 std::mutex _mutex;
4949 std::function<void (T,T)> _onChange = nullptr ;
50+ std::function<bool (T,T)> _onCompare = [&](T a, T b) -> bool { return a == b; };
5051 public:
5152 // Constructor/Destructor
52- Mutex (T value, std::function<void (T,T)> onChange = nullptr ) : _value(value), _onChange((onChange)) { }
53+ Mutex (T value, std::function<void (T,T)> onChange = nullptr , std::function<bool (T,T)> onCompare = nullptr ) : _value(value), _onChange((onChange)) {
54+ if (onCompare) != nullptr { _onCompare = onCompare; }
55+ }
5356 // Methods
5457 T Get () {
5558 std::lock_guard<std::mutex> lock (_mutex);
@@ -75,7 +78,7 @@ namespace ESPressio {
7578 void Set (T value) {
7679 std::lock_guard<std::mutex> lock (_mutex);
7780 T oldValue = _value;
78- if (oldValue == value) { return ; }
81+ if (_onCompare ( oldValue, value) ) { return ; }
7982 _value = value;
8083 if (_onChange != nullptr ) { (_onChange)(oldValue, value); }
8184 }
@@ -148,9 +151,12 @@ namespace ESPressio {
148151 T _value;
149152 std::shared_mutex _mutex;
150153 std::function<void (T,T)> _onChange = nullptr ;
154+ std::function<bool (T,T)> _onCompare = [&](T a, T b) -> bool { return a == b; };
151155 public:
152156 // Constructor/Destructor
153- ReadWriteMutex (T value, std::function<void (T,T)> onChange = nullptr ) : _value(value), _onChange((onChange)) { }
157+ ReadWriteMutex (T value, std::function<void (T,T)> onChange = nullptr , std::function<bool (T,T)> onCompare = nullptr ) : _value(value), _onChange((onChange)) {
158+ if (onCompare) != nullptr { _onCompare = onCompare; }
159+ }
154160 // Methods
155161 T Get () {
156162 std::shared_lock<std::shared_mutex> lock (_mutex);
@@ -176,7 +182,7 @@ namespace ESPressio {
176182 void Set (T value) {
177183 std::unique_lock<std::shared_mutex> lock (_mutex);
178184 T oldValue = _value;
179- if (oldValue == value) { return ; }
185+ if (_onCompare ( oldValue, value) ) { return ; }
180186 _value = value;
181187 if (_onChange != nullptr ) { (_onChange)(oldValue, value); }
182188 }
0 commit comments