XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_comm_pattern, mc,
"Logging specific to MC communication patterns");
-extern "C" {
-
-simgrid::mc::PatternCommunication* MC_comm_pattern_dup(simgrid::mc::PatternCommunication* comm)
-{
- simgrid::mc::PatternCommunication* res = new simgrid::mc::PatternCommunication();
- res->index = comm->index;
- res->type = comm->type;
- res->comm_addr = comm->comm_addr;
- res->rdv = comm->rdv;
- res->data = comm->data;
- res->dst_proc = comm->dst_proc;
- res->dst_host = comm->dst_host;
- return res;
-}
-
-xbt_dynar_t MC_comm_patterns_dup(xbt_dynar_t patterns)
+static xbt_dynar_t MC_comm_patterns_dup(xbt_dynar_t patterns)
{
xbt_dynar_t res = simgrid::xbt::newDeleteDynar<simgrid::mc::PatternCommunication>();
simgrid::mc::PatternCommunication* comm;
unsigned int cursor;
xbt_dynar_foreach(patterns, cursor, comm) {
- simgrid::mc::PatternCommunication* copy_comm = MC_comm_pattern_dup(comm);
+ simgrid::mc::PatternCommunication* copy_comm = new simgrid::mc::PatternCommunication(comm->dup());
xbt_dynar_push(res, ©_comm);
}
unsigned int cursor;
simgrid::mc::PatternCommunication* comm;
xbt_dynar_foreach(source, cursor, comm) {
- simgrid::mc::PatternCommunication* copy_comm = MC_comm_pattern_dup(comm);
+ simgrid::mc::PatternCommunication* copy_comm = new simgrid::mc::PatternCommunication(comm->dup());
xbt_dynar_push(dest, ©_comm);
}
}
}
}
-
-}
std::memset(&comm_addr, 0, sizeof(comm_addr));
}
- // No copy:
- PatternCommunication(PatternCommunication const&) = delete;
- PatternCommunication& operator=(PatternCommunication const&) = delete;
+ PatternCommunication dup() const
+ {
+ simgrid::mc::PatternCommunication res;
+ // num?
+ res.comm_addr = this->comm_addr;
+ res.type = this->type;
+ // src_proc?
+ // dst_proc?
+ res.dst_proc = this->dst_proc;
+ res.dst_host = this->dst_host;
+ res.rdv = this->rdv;
+ res.data = this->data;
+ // tag?
+ res.index = this->index;
+ return res;
+ }
};
XBT_PRIVATE void MC_restore_communications_pattern(simgrid::mc::State* state);
-XBT_PRIVATE simgrid::mc::PatternCommunication* MC_comm_pattern_dup(simgrid::mc::PatternCommunication* comm);
-XBT_PRIVATE xbt_dynar_t MC_comm_patterns_dup(xbt_dynar_t state);
-
XBT_PRIVATE void MC_state_copy_incomplete_communications_pattern(simgrid::mc::State* state);
XBT_PRIVATE void MC_state_copy_index_communications_pattern(simgrid::mc::State* state);