Lines Matching defs:std
29 using map_type = typename std::map<_Key, _Tp>;
30 using filter_type = typename std::function<bool(map_type &)>;
31 using key_type = typename std::map<_Key, _Tp>::key_type;
32 using mapped_type = typename std::map<_Key, _Tp>::mapped_type;
33 using value_type = typename std::map<_Key, _Tp>::value_type;
34 using size_type = typename std::map<_Key, _Tp>::size_type;
35 using reference = typename std::map<_Key, _Tp>::reference;
36 using const_reference = typename std::map<_Key, _Tp>::const_reference;
46 operator=(std::move(other));
49 ConcurrentMap(std::map<_Key, _Tp> &&other) noexcept
51 operator=(std::move(other));
54 ConcurrentMap &operator=(std::map<_Key, _Tp> &&other) noexcept
59 std::unique_lock<decltype(mutex_)> lock(mutex_);
60 entries_ = std::move(other);
70 std::unique_lock<decltype(mutex_)> lock(mutex_);
71 entries_ = std::move(tmp);
77 operator=(std::move(other));
86 std::unique_lock<decltype(mutex_)> lock(mutex_);
87 entries_ = std::move(tmp);
93 std::unique_lock<decltype(mutex_)> lock(mutex_);
99 typename std::enable_if<!std::is_convertible_v<decltype(First<_Args...>()), filter_type>, bool>::type
102 std::unique_lock<decltype(mutex_)> lock(mutex_);
103 auto it = entries_.emplace(std::forward<_Args>(args)...);
108 typename std::enable_if<std::is_convertible_v<_Filter, filter_type>, bool>::type
111 std::unique_lock<decltype(mutex_)> lock(mutex_);
115 auto it = entries_.emplace(std::forward<_Args>(args)...);
119 std::pair<bool, mapped_type> Find(const key_type &key) const noexcept
121 std::shared_lock<decltype(mutex_)> lock(mutex_);
124 return std::pair { false, mapped_type() };
127 return std::pair { true, it->second };
130 bool ContainIf(const key_type &key, const std::function<bool(const mapped_type &value)> &action) const noexcept
132 std::shared_lock<decltype(mutex_)> lock(mutex_);
145 std::shared_lock<decltype(mutex_)> lock(mutex_);
152 std::unique_lock<decltype(mutex_)> lock(mutex_);
153 auto it = entries_.insert_or_assign(key, std::forward<_Obj>(obj));
159 std::unique_lock<decltype(mutex_)> lock(mutex_);
166 std::unique_lock<decltype(mutex_)> lock(mutex_);
171 const std::function<bool(const key_type &key, mapped_type &value)> &action) noexcept
176 std::unique_lock<decltype(mutex_)> lock(mutex_);
186 std::unique_lock<decltype(mutex_)> lock(mutex_);
192 std::shared_lock<decltype(mutex_)> lock(mutex_);
198 std::shared_lock<decltype(mutex_)> lock(mutex_);
204 size_type EraseIf(const std::function<bool(const key_type &key, mapped_type &value)> &action) noexcept
209 std::unique_lock<decltype(mutex_)> lock(mutex_);
211 auto count = std::erase_if(entries_,
227 void ForEach(const std::function<bool(const key_type &, mapped_type &)> &action)
232 std::shared_lock<decltype(mutex_)> lock(mutex_);
240 void ForEachCopies(const std::function<bool(const key_type &, mapped_type &)> &action)
254 bool Compute(const key_type &key, const std::function<bool(const key_type &, mapped_type &)> &action)
259 std::unique_lock<decltype(mutex_)> lock(mutex_);
275 bool ComputeIfPresent(const key_type &key, const std::function<bool(const key_type &, mapped_type &)> &action)
280 std::unique_lock<decltype(mutex_)> lock(mutex_);
291 bool ComputeIfAbsent(const key_type &key, const std::function<mapped_type(const key_type &)> &action)
296 std::unique_lock<decltype(mutex_)> lock(mutex_);
305 void DoActionIfEmpty(const std::function<void(void)> &action)
310 std::shared_lock<decltype(mutex_)> lock(mutex_);
317 void DoActionWhenClone(const std::function<void(const std::map<_Key, _Tp> &)> &action)
323 std::shared_lock<decltype(mutex_)> lock(mutex_);
328 std::map<_Key, _Tp> Clone() const noexcept
330 std::shared_lock<decltype(mutex_)> lock(mutex_);
335 std::map<_Key, _Tp> Steal() noexcept
337 std::lock_guard<decltype(mutex_)> lock(mutex_);
338 return std::move(entries_);
342 mutable std::shared_mutex mutex_;
343 std::map<_Key, _Tp> entries_;