Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Get rid of MC_list_comm_pattern_free()
authorGabriel Corona <gabriel.corona@loria.fr>
Wed, 6 Apr 2016 08:58:53 +0000 (10:58 +0200)
committerGabriel Corona <gabriel.corona@loria.fr>
Wed, 6 Apr 2016 12:03:15 +0000 (14:03 +0200)
src/mc/CommunicationDeterminismChecker.cpp
src/mc/mc_comm_pattern.cpp
src/mc/mc_comm_pattern.h

index f016a55..1fec4ed 100644 (file)
@@ -337,9 +337,9 @@ void CommunicationDeterminismChecker::prepare()
   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);
index 31b6bf7..d775fcc 100644 (file)
@@ -127,16 +127,4 @@ void MC_handle_comm_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);
-}
-
 }
index b045794..463f378 100644 (file)
@@ -49,8 +49,14 @@ typedef struct s_mc_comm_pattern{
 } 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;
 
 /**
@@ -100,7 +106,6 @@ static inline e_mc_call_type_t MC_get_call_type(smx_simcall_t req)
 
 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);