X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/87e5cfdacaaaafd46c8b8d62fbc8089409468fbc..e51fd157704f026607d5ef1b79334cb2decf8d5f:/src/smpi/include/smpi_datatype.hpp diff --git a/src/smpi/include/smpi_datatype.hpp b/src/smpi/include/smpi_datatype.hpp index 5952daa1ad..5832334bd8 100644 --- a/src/smpi/include/smpi_datatype.hpp +++ b/src/smpi/include/smpi_datatype.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2009-2018. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -8,6 +8,7 @@ #include "smpi_f2c.hpp" #include "smpi_keyvals.hpp" +#include #define DT_FLAG_DESTROYED 0x0001 /**< user destroyed but some other layers still have a reference */ #define DT_FLAG_COMMITED 0x0002 /**< ready to be used for a send/recv operation */ @@ -76,6 +77,11 @@ namespace smpi{ class Datatype : public F2C, public Keyval{ char* name_; + /* The id here is the (unique) datatype id used for this datastructure. + * It's default value is set to -1 since some code expects this return value + * when no other id has been assigned + */ + std::string id = "-1"; size_t size_; MPI_Aint lb_; MPI_Aint ub_; @@ -86,6 +92,8 @@ public: static std::unordered_map keyvals_; static int keyval_id_; + Datatype(int id, int size, MPI_Aint lb, MPI_Aint ub, int flags); + Datatype(char* name, int id, int size, MPI_Aint lb, MPI_Aint ub, int flags); Datatype(int size, MPI_Aint lb, MPI_Aint ub, int flags); Datatype(char* name, int size, MPI_Aint lb, MPI_Aint ub, int flags); Datatype(Datatype* datatype, int* ret); @@ -103,6 +111,8 @@ public: void commit(); bool is_valid(); bool is_basic(); + static const char* encode(MPI_Datatype dt); + static MPI_Datatype decode(std::string datatype_id); bool is_replayable(); void addflag(int flag); int extent(MPI_Aint* lb, MPI_Aint* extent);