diff options
author | crupest <crupest@outlook.com> | 2019-03-21 22:22:53 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2019-03-21 22:22:53 +0800 |
commit | b514247f79469c15959b00ca3276879033f932ff (patch) | |
tree | b5568daf09889fd43196627af4dcb4231589f2f4 /src/util/any_map.cpp | |
parent | 962dc18ee4827b464764ec3708be3d00a9143971 (diff) | |
download | cru-b514247f79469c15959b00ca3276879033f932ff.tar.gz cru-b514247f79469c15959b00ca3276879033f932ff.tar.bz2 cru-b514247f79469c15959b00ca3276879033f932ff.zip |
...
Diffstat (limited to 'src/util/any_map.cpp')
-rw-r--r-- | src/util/any_map.cpp | 30 |
1 files changed, 0 insertions, 30 deletions
diff --git a/src/util/any_map.cpp b/src/util/any_map.cpp deleted file mode 100644 index c49464d3..00000000 --- a/src/util/any_map.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include "any_map.hpp" - -namespace cru::util { -AnyMap::ListenerToken AnyMap::RegisterValueChangeListener( - const String& key, const Listener& listener) { - const auto token = current_listener_token_++; - map_[key].second.push_back(token); - listeners_.emplace(token, listener); - return token; -} - -void AnyMap::UnregisterValueChangeListener(const ListenerToken token) { - const auto find_result = listeners_.find(token); - if (find_result != listeners_.cend()) listeners_.erase(find_result); -} - -void AnyMap::InvokeListeners(std::list<ListenerToken>& listener_list, - const std::any& value) { - auto i = listener_list.cbegin(); - while (i != listener_list.cend()) { - auto current_i = i++; - const auto find_result = listeners_.find(*current_i); - if (find_result != listeners_.cend()) - find_result->second(value); - else - listener_list.erase( - current_i); // otherwise remove the invalid listener token. - } -} -} // namespace cru::util |