Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[SMPI] Remove all references to decode_datatype
[simgrid.git] / src / smpi / include / smpi_datatype.hpp
index fa59556..160a9f9 100644 (file)
@@ -76,6 +76,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
+   */
+  int id = -1;
   size_t size_;
   MPI_Aint lb_;
   MPI_Aint ub_;
@@ -86,6 +91,8 @@ public:
   static std::unordered_map<int, smpi_key_elem> 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 +110,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);
@@ -130,6 +139,8 @@ public:
   static int create_subarray(int ndims, int* array_of_sizes,
                              int* array_of_subsizes, int* array_of_starts,
                              int order, MPI_Datatype oldtype, MPI_Datatype *newtype);
+  static int create_resized(MPI_Datatype oldtype,MPI_Aint lb, MPI_Aint extent,
+                             MPI_Datatype *newtype);
   static Datatype* f2c(int id);
 };