Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' into adrien
[simgrid.git] / src / smpi / mpi / smpi_datatype_derived.cpp
index 55deb44..21d04c9 100644 (file)
 namespace simgrid{
 namespace smpi{
 
-
-Datatype_contents::Datatype_contents(int combiner,
-                    int number_of_integers, const int* integers,
-                    int number_of_addresses, const MPI_Aint* addresses,
-                    int number_of_datatypes, const MPI_Datatype* datatypes)
-: combiner_(combiner), number_of_integers_(number_of_integers), 
-  number_of_addresses_(number_of_addresses), 
-  number_of_datatypes_(number_of_datatypes)
+Datatype_contents::Datatype_contents(int combiner, int number_of_integers, const int* integers, int number_of_addresses,
+                                     const MPI_Aint* addresses, int number_of_datatypes, const MPI_Datatype* datatypes)
+    : combiner_(combiner)
+    , integers_(integers, integers + number_of_integers)
+    , addresses_(addresses, addresses + number_of_addresses)
+    , datatypes_(datatypes, datatypes + number_of_datatypes)
 {
-  integers_=new int[number_of_integers_];
-  for(int i=0; i<number_of_integers_; i++){
-    integers_[i]=integers[i];
-  }
-  addresses_=new MPI_Aint[number_of_addresses_];
-  for(int i=0; i<number_of_addresses_; i++){
-    addresses_[i]=addresses[i];
-  }
-  datatypes_=new MPI_Datatype[number_of_datatypes_];
-  for(int i=0; i<number_of_datatypes_; i++){
-    datatypes_[i]=datatypes[i];
-  }
-};
-Datatype_contents::~Datatype_contents(){
-  delete[] integers_;
-  delete[] addresses_;
-  delete[] datatypes_;
 }
 
 Type_Contiguous::Type_Contiguous(int size, MPI_Aint lb, MPI_Aint ub, int flags, int block_count, MPI_Datatype old_type)
     : Datatype(size, lb, ub, flags), block_count_(block_count), old_type_(old_type)
 {
-  contents_ = new Datatype_contents(MPI_COMBINER_CONTIGUOUS, 1, &size, 0, nullptr, 1, &old_type);
+  contents_ = new Datatype_contents(MPI_COMBINER_CONTIGUOUS, 1, &block_count, 0, nullptr, 1, &old_type);
   old_type_->ref();
 }