- xbt_dynar_foreach(xbt_dynar_get_as(incomplete_communications_pattern, issuer, xbt_dynar_t), cursor, current_comm_pattern)
- if (remote(current_comm_pattern->comm_addr) == comm_addr) {
- update_comm_pattern(current_comm_pattern, comm_addr);
- completed = 1;
- simgrid::mc::PatternCommunication* temp;
- xbt_dynar_remove_at(xbt_dynar_get_as(incomplete_communications_pattern, issuer, xbt_dynar_t), cursor, &temp);
- comm_pattern = std::unique_ptr<simgrid::mc::PatternCommunication>(temp);
- XBT_DEBUG("Remove incomplete comm pattern for process %u at cursor %u", issuer, cursor);
- break;
- }
-
- if (not completed)
+ std::vector<simgrid::mc::PatternCommunication*>& incomplete_pattern = incomplete_communications_pattern[issuer];
+ auto current_comm_pattern = std::find_if(
+ begin(incomplete_pattern), end(incomplete_pattern),
+ [&comm_addr](simgrid::mc::PatternCommunication* comm) { return remote(comm->comm_addr) == comm_addr; });
+ if (current_comm_pattern == std::end(incomplete_pattern))