const int maxpid = MC_smx_get_maxpid();
// Create initial_communications_pattern elements:
- initial_communications_pattern = xbt_dynar_new(sizeof(mc_list_comm_pattern_t), MC_list_comm_pattern_free_voidp);
+ initial_communications_pattern = simgrid::xbt::newDeleteDynar<mc_list_comm_pattern_t>();
for (i=0; i < maxpid; i++){
- mc_list_comm_pattern_t process_list_pattern = xbt_new0(s_mc_list_comm_pattern_t, 1);
+ mc_list_comm_pattern_t process_list_pattern = new s_mc_list_comm_pattern_t();
process_list_pattern->list = simgrid::xbt::newDeleteDynar<s_mc_comm_pattern_t>();
process_list_pattern->index_comm = 0;
xbt_dynar_insert_at(initial_communications_pattern, i, &process_list_pattern);
}
-static void MC_list_comm_pattern_free(mc_list_comm_pattern_t l)
-{
- xbt_dynar_free(&(l->list));
- xbt_free(l);
- l = nullptr;
-}
-
-void MC_list_comm_pattern_free_voidp(void *p)
-{
- MC_list_comm_pattern_free((mc_list_comm_pattern_t) * (void **) p);
-}
-
}
} s_mc_comm_pattern_t, *mc_comm_pattern_t;
typedef struct s_mc_list_comm_pattern{
- unsigned int index_comm;
- xbt_dynar_t list;
+ unsigned int index_comm = 0;
+ xbt_dynar_t list = nullptr;
+
+ s_mc_list_comm_pattern() {}
+ ~s_mc_list_comm_pattern()
+ {
+ xbt_dynar_free(&(this->list));
+ }
}s_mc_list_comm_pattern_t, *mc_list_comm_pattern_t;
/**
XBT_PRIVATE void MC_get_comm_pattern(xbt_dynar_t communications_pattern, smx_simcall_t request, e_mc_call_type_t call_type, int backtracking);
XBT_PRIVATE void MC_handle_comm_pattern(e_mc_call_type_t call_type, smx_simcall_t request, int value, xbt_dynar_t current_pattern, int backtracking);
-XBT_PRIVATE void MC_list_comm_pattern_free_voidp(void *p);
XBT_PRIVATE void MC_complete_comm_pattern(xbt_dynar_t list, smx_synchro_t comm_addr, unsigned int issuer, int backtracking);
XBT_PRIVATE void MC_restore_communications_pattern(simgrid::mc::State* state);