116{
119 auto processor_it = std::ranges::find(regular_it->second, processor);
120 if (processor_it != regular_it->second.end()) {
121 processor->on_detach(
buffer);
122 regular_it->second.erase(processor_it);
125 return;
126 }
127 }
128
129 auto remove_slot = [&processor, &
buffer](
auto& slots,
const auto& key) {
130 auto it = slots.find(key);
131 if (it == slots.end() || it->second != processor)
132 return false;
133
134 it->second->on_detach(
buffer);
135 slots.erase(it);
136 return true;
137 };
138
142 return;
143 }
144}
std::shared_ptr< NetworkGeometryBuffer > buffer
std::unordered_map< std::shared_ptr< Buffer >, std::shared_ptr< BufferProcessor > > m_final_processors
Map of buffers to their final processors.
std::unordered_map< std::shared_ptr< Buffer >, std::unordered_set< std::shared_ptr< BufferProcessor > > > m_pending_removal
Map of buffers to processors pending removal.
std::unordered_map< std::shared_ptr< Buffer >, std::vector< std::shared_ptr< BufferProcessor > > > m_buffer_processors
Map of buffers to their processor sequences.
std::unordered_map< std::shared_ptr< Buffer >, std::shared_ptr< BufferProcessor > > m_preprocessors
Map of buffers to their preprocessors.
std::unordered_map< std::shared_ptr< Buffer >, std::unordered_set< std::shared_ptr< BufferProcessor > > > m_conditional_processors
Map of buffers to processors that are conditionally applied.
std::unordered_map< std::shared_ptr< Buffer >, std::shared_ptr< BufferProcessor > > m_postprocessors
Map of buffers to their postprocessors.