| 210 | } |
| 211 | |
| 212 | void unmap( const T1& in, const T2& out ) |
| 213 | { |
| 214 | if( !this->has_mapping_input( in ) ) |
| 215 | { |
| 216 | return; |
| 217 | } |
| 218 | auto& in_map = this->in2out_mapping().at( in ); |
| 219 | const auto itr = absl::c_find( in_map, out ); |
| 220 | if( itr == in_map.end() ) |
| 221 | { |
| 222 | return; |
| 223 | } |
| 224 | in_map.erase( itr ); |
| 225 | if( this->in2out( in ).empty() ) |
| 226 | { |
| 227 | this->in2out_mapping().erase( in ); |
| 228 | } |
| 229 | auto& out_map = this->out2in_mapping().at( out ); |
| 230 | const auto itr2 = absl::c_find( out_map, in ); |
| 231 | if( itr2 == out_map.end() ) |
| 232 | { |
| 233 | return; |
| 234 | } |
| 235 | out_map.erase( itr2 ); |
| 236 | if( this->out2in( out ).empty() ) |
| 237 | { |
| 238 | this->out2in_mapping().erase( out ); |
| 239 | } |
| 240 | } |
| 241 | |
| 242 | void erase_in( const T1& in ) |
| 243 | { |
nothing calls this directly
no test coverage detected