Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Big move of all SMPI files in subfolders because it was a mess.
[simgrid.git] / src / smpi / include / smpi_datatype_derived.hpp
diff --git a/src/smpi/include/smpi_datatype_derived.hpp b/src/smpi/include/smpi_datatype_derived.hpp
new file mode 100644 (file)
index 0000000..b450bd9
--- /dev/null
@@ -0,0 +1,107 @@
+/* Copyright (c) 2009-2010, 2012-2017. 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. */
+
+#ifndef SMPI_DATATYPE_DERIVED_HPP
+#define SMPI_DATATYPE_DERIVED_HPP
+
+#include "smpi_datatype.hpp"
+
+namespace simgrid{
+namespace smpi{
+
+class Type_Contiguous: public Datatype {
+  private:
+    int block_count_;
+    MPI_Datatype old_type_;
+  public:
+    Type_Contiguous(int size, MPI_Aint lb, MPI_Aint ub, int flags, int block_count, MPI_Datatype old_type);
+    ~Type_Contiguous();
+    void serialize( void* noncontiguous, void *contiguous,
+                            int count);
+    void unserialize( void* contiguous_vector, void *noncontiguous_vector,
+                              int count, MPI_Op op);
+};
+
+class Type_Vector: public Datatype{
+  private:
+    int block_count_;
+    int block_length_;
+    int block_stride_;
+    MPI_Datatype old_type_;
+  public:
+    Type_Vector(int size,MPI_Aint lb, MPI_Aint ub, int flags, int count, int blocklen, int stride, MPI_Datatype old_type);
+    ~Type_Vector();
+    void serialize( void* noncontiguous, void *contiguous,
+                            int count);
+    void unserialize( void* contiguous_vector, void *noncontiguous_vector,
+                              int count, MPI_Op op);
+};
+
+class Type_Hvector: public Datatype{
+  private:
+    int block_count_;
+    int block_length_;
+    MPI_Aint block_stride_;
+    MPI_Datatype old_type_;
+  public:
+    Type_Hvector(int size,MPI_Aint lb, MPI_Aint ub, int flags, int block_count, int block_length, MPI_Aint block_stride, MPI_Datatype old_type);
+    ~Type_Hvector();
+    void serialize( void* noncontiguous, void *contiguous,
+                            int count);
+    void unserialize( void* contiguous_vector, void *noncontiguous_vector,
+                              int count, MPI_Op op);
+};
+
+class Type_Indexed: public Datatype{
+  private:
+    int block_count_;
+    int* block_lengths_;
+    int* block_indices_;
+    MPI_Datatype old_type_;
+  public:
+    Type_Indexed(int size,MPI_Aint lb, MPI_Aint ub, int flags, int block_count, int* block_lengths, int* block_indices, MPI_Datatype old_type);
+    ~Type_Indexed();
+    void serialize( void* noncontiguous, void *contiguous,
+                            int count);
+    void unserialize( void* contiguous_vector, void *noncontiguous_vector,
+                              int count, MPI_Op op);
+};
+
+class Type_Hindexed: public Datatype{
+  private:
+    int block_count_;
+    int* block_lengths_;
+    MPI_Aint* block_indices_;
+    MPI_Datatype old_type_;
+  public:
+    Type_Hindexed(int size,MPI_Aint lb, MPI_Aint ub, int flags, int block_count, int* block_lengths, MPI_Aint* block_indices, MPI_Datatype old_type);
+    ~Type_Hindexed();
+    void serialize( void* noncontiguous, void *contiguous,
+                            int count);
+    void unserialize( void* contiguous_vector, void *noncontiguous_vector,
+                              int count, MPI_Op op);
+};
+
+class Type_Struct: public Datatype{
+  private:
+    int block_count_;
+    int* block_lengths_;
+    MPI_Aint* block_indices_;
+    MPI_Datatype* old_types_;
+  public:
+    Type_Struct(int size,MPI_Aint lb, MPI_Aint ub, int flags, int block_count, int* block_lengths, MPI_Aint* block_indices, MPI_Datatype* old_types);
+    ~Type_Struct();
+    void serialize( void* noncontiguous, void *contiguous,
+                            int count);
+    void unserialize( void* contiguous_vector, void *noncontiguous_vector,
+                              int count, MPI_Op op);
+};
+
+
+}
+}
+
+#endif