void view()

in src/cpp/RiderLink/Source/RD/src/rd_core_cpp/src/main/reactive/base/IViewableMap.h [145:178]


	void view(Lifetime lifetime, std::function<void(Lifetime lifetime, std::pair<K const*, V const*> const&)

									 >
									 handler) const override
	{
		advise_add_remove(lifetime, [this, lifetime, handler](AddRemove kind, K const& key, V const& value) {
			const std::pair<K const*, V const*> entry = std::make_pair(&key, &value);
			switch (kind)
			{
				case AddRemove::ADD:
				{
					if (lifetimes[lifetime].count(key) == 0)
					{
						/*auto const &[it, inserted] = lifetimes[lifetime].emplace(key, LifetimeDefinition(lifetime));*/
						auto const& pair = lifetimes[lifetime].emplace(&key, LifetimeDefinition(lifetime));
						auto& it = pair.first;
						auto& inserted = pair.second;
						RD_ASSERT_MSG(inserted, "lifetime definition already exists in viewable map by key:" + to_string(key));
						handler(it->second.lifetime, entry);
					}
					break;
				}
				case AddRemove::REMOVE:
				{
					RD_ASSERT_MSG(lifetimes.at(lifetime).count(key) > 0,
						"attempting to remove non-existing lifetime in viewable map by key:" + to_string(key));
					LifetimeDefinition def = std::move(lifetimes.at(lifetime).at(key));
					lifetimes.at(lifetime).erase(key);
					def.terminate();
					break;
				}
			}
		});
	}