Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Replace fixed-size C-style arrays with std::array.
[simgrid.git] / src / smpi / mpi / smpi_datatype.cpp
index a7ea791..3f770e9 100644 (file)
@@ -12,6 +12,7 @@
 #include "src/smpi/include/smpi_actor.hpp"
 
 #include <algorithm>
+#include <array>
 #include <functional>
 #include <string>
 
@@ -423,8 +424,8 @@ int Datatype::create_vector(int count, int block_length, int stride, MPI_Datatyp
     /* in this situation the data are contiguous thus it's not required to serialize and unserialize it*/
     *new_type = new Datatype(count * block_length * old_type->size(), 0, ((count -1) * stride + block_length)*
                          old_type->size(), DT_FLAG_CONTIGUOUS);
-    int ints[3] = {count, block_length, stride};
-    (*new_type)->contents_ = new Datatype_contents(MPI_COMBINER_VECTOR, 3, ints, 0, nullptr, 1, &old_type);
+    const std::array<int, 3> ints = {{count, block_length, stride}};
+    (*new_type)->contents_ = new Datatype_contents(MPI_COMBINER_VECTOR, 3, ints.data(), 0, nullptr, 1, &old_type);
     retval=MPI_SUCCESS;
   }
   return retval;
@@ -449,8 +450,8 @@ int Datatype::create_hvector(int count, int block_length, MPI_Aint stride, MPI_D
   }else{
     /* in this situation the data are contiguous thus it's not required to serialize and unserialize it*/
     *new_type = new Datatype(count * block_length * old_type->size(), 0, count * block_length * old_type->size(), DT_FLAG_CONTIGUOUS);
-    int ints[2] = {count, block_length};
-    (*new_type)->contents_ = new Datatype_contents(MPI_COMBINER_HVECTOR, 2, ints, 1, &stride, 1, &old_type);
+    const std::array<int, 2> ints = {{count, block_length}};
+    (*new_type)->contents_ = new Datatype_contents(MPI_COMBINER_HVECTOR, 2, ints.data(), 1, &stride, 1, &old_type);
     retval=MPI_SUCCESS;
   }
   return retval;
@@ -618,10 +619,10 @@ int Datatype::create_subarray(int ndims, const int* array_of_sizes,
       tmp = *newtype;
   }
 
-  MPI_Aint lbs[1] = {lb * extent};
-  int sizes [1]={1};
+  const MPI_Aint lbs = lb * extent;
+  const int sizes    = 1;
   //handle LB and UB with a resized call
-  create_hindexed( 1, sizes, lbs, tmp, newtype);
+  create_hindexed(1, &sizes, &lbs, tmp, newtype);
   unref(tmp);
 
   tmp = *newtype;
@@ -632,11 +633,12 @@ int Datatype::create_subarray(int ndims, const int* array_of_sizes,
 }
 
 int Datatype::create_resized(MPI_Datatype oldtype,MPI_Aint lb, MPI_Aint extent, MPI_Datatype *newtype){
-  int blocks[3]         = {1, 1, 1};
-  MPI_Aint disps[3]     = {lb, 0, lb + extent};
-  MPI_Datatype types[3] = {MPI_LB, oldtype, MPI_UB};
+  const std::array<int, 3> blocks         = {{1, 1, 1}};
+  const std::array<MPI_Aint, 3> disps     = {{lb, 0, lb + extent}};
+  const std::array<MPI_Datatype, 3> types = {{MPI_LB, oldtype, MPI_UB}};
 
-  *newtype = new simgrid::smpi::Type_Struct(oldtype->size(), lb, lb + extent, DT_FLAG_DERIVED, 3, blocks, disps, types);
+  *newtype = new simgrid::smpi::Type_Struct(oldtype->size(), lb, lb + extent, DT_FLAG_DERIVED, 3, blocks.data(),
+                                            disps.data(), types.data());
 
   (*newtype)->addflag(~DT_FLAG_COMMITED);
   return MPI_SUCCESS;