X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fe304706848f0a64477d4687b3ea97d5b9a0c35c..6d004c352f7b26fba38486001f874e65466b5bee:/src/smpi/mpi/smpi_datatype.cpp?ds=sidebyside diff --git a/src/smpi/mpi/smpi_datatype.cpp b/src/smpi/mpi/smpi_datatype.cpp index 8cfb5508cf..a22b3d45cf 100644 --- a/src/smpi/mpi/smpi_datatype.cpp +++ b/src/smpi/mpi/smpi_datatype.cpp @@ -18,20 +18,20 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_datatype, smpi, "Logging specific to SMPI ( static std::unordered_map id2type_lookup; #define CREATE_MPI_DATATYPE(name, id, type) \ - static simgrid::smpi::Datatype mpi_##name((char*)#name, id, sizeof(type), /* size */ \ - 0, /* lb */ \ - sizeof(type), /* ub = lb + size */ \ - DT_FLAG_BASIC /* flags */ \ - ); \ - const MPI_Datatype name = &mpi_##name; + static simgrid::smpi::Datatype _XBT_CONCAT(mpi_, name)((char*)_XBT_STRINGIFY(name), id, sizeof(type), /* size */ \ + 0, /* lb */ \ + sizeof(type), /* ub = lb + size */ \ + DT_FLAG_BASIC /* flags */ \ + ); \ + const MPI_Datatype name = &_XBT_CONCAT(mpi_, name); #define CREATE_MPI_DATATYPE_NULL(name, id) \ - static simgrid::smpi::Datatype mpi_##name((char*)#name, id, 0, /* size */ \ - 0, /* lb */ \ - 0, /* ub = lb + size */ \ - DT_FLAG_BASIC /* flags */ \ - ); \ - const MPI_Datatype name = &mpi_##name; + static simgrid::smpi::Datatype _XBT_CONCAT(mpi_, name)((char*)_XBT_STRINGIFY(name), id, 0, /* size */ \ + 0, /* lb */ \ + 0, /* ub = lb + size */ \ + DT_FLAG_BASIC /* flags */ \ + ); \ + const MPI_Datatype name = &_XBT_CONCAT(mpi_, name); // Predefined data types CREATE_MPI_DATATYPE(MPI_CHAR, 2, char); @@ -79,9 +79,9 @@ CREATE_MPI_DATATYPE(MPI_REAL4, 39, float); CREATE_MPI_DATATYPE(MPI_REAL8, 40, double); CREATE_MPI_DATATYPE(MPI_REAL16, 41, long double); CREATE_MPI_DATATYPE_NULL(MPI_DATATYPE_NULL, -1); -CREATE_MPI_DATATYPE_NULL(MPI_COMPLEX8, 42); -CREATE_MPI_DATATYPE_NULL(MPI_COMPLEX16, 43); -CREATE_MPI_DATATYPE_NULL(MPI_COMPLEX32, 44); +CREATE_MPI_DATATYPE(MPI_COMPLEX8, 42, float_float); +CREATE_MPI_DATATYPE(MPI_COMPLEX16, 43, double_double); +CREATE_MPI_DATATYPE(MPI_COMPLEX32, 44, double_double); CREATE_MPI_DATATYPE(MPI_INTEGER1, 45, int); CREATE_MPI_DATATYPE(MPI_INTEGER2, 46, int16_t); CREATE_MPI_DATATYPE(MPI_INTEGER4, 47, int32_t); @@ -129,8 +129,6 @@ Datatype::Datatype(Datatype *datatype, int* ret) : name_(nullptr), size_(datatyp { flags_ &= ~DT_FLAG_PREDEFINED; *ret = MPI_SUCCESS; - if(datatype->name_) - name_ = xbt_strdup(datatype->name_); if (not datatype->attributes()->empty()) { int flag=0; @@ -240,8 +238,12 @@ int Datatype::extent(MPI_Aint * lb, MPI_Aint * extent){ } void Datatype::get_name(char* name, int* length){ - *length = strlen(name_); - strncpy(name, name_, *length+1); + if(name_!=nullptr){ + *length = strlen(name_); + strncpy(name, name_, *length+1); + }else{ + *length = 0; + } } void Datatype::set_name(const char* name){