X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d20f024dba9ff1e9c8822237caaf963b9e913889..d74e061a2eb65f5b3be26db160dad6c5f74d8aff:/src/smpi/mpi/smpi_datatype.cpp diff --git a/src/smpi/mpi/smpi_datatype.cpp b/src/smpi/mpi/smpi_datatype.cpp index e23986d976..8da55c7077 100644 --- a/src/smpi/mpi/smpi_datatype.cpp +++ b/src/smpi/mpi/smpi_datatype.cpp @@ -189,11 +189,21 @@ void Datatype::commit() flags_ |= DT_FLAG_COMMITED; } - bool Datatype::is_valid(){ return (flags_ & DT_FLAG_COMMITED); } +bool Datatype::is_basic() +{ + return (flags_ & DT_FLAG_BASIC); +} + +bool Datatype::is_replayable() +{ + return ((this==MPI_BYTE)||(this==MPI_DOUBLE)||(this==MPI_INT)|| + (this==MPI_CHAR)||(this==MPI_SHORT)||(this==MPI_LONG)||(this==MPI_FLOAT)); +} + size_t Datatype::size(){ return size_; } @@ -279,9 +289,9 @@ int Datatype::copy(void *sendbuf, int sendcount, MPI_Datatype sendtype, if (not smpi_process()->replaying()) memcpy(recvbuf, sendbuf, count); } else if (not(sendtype->flags() & DT_FLAG_DERIVED)) { - recvtype->unserialize( sendbuf, recvbuf, recvcount/recvtype->size(), MPI_REPLACE); + recvtype->unserialize(sendbuf, recvbuf, count / recvtype->size(), MPI_REPLACE); } else if (not(recvtype->flags() & DT_FLAG_DERIVED)) { - sendtype->serialize(sendbuf, recvbuf, sendcount/sendtype->size()); + sendtype->serialize(sendbuf, recvbuf, count / sendtype->size()); }else{ void * buf_tmp = xbt_malloc(count);