void (*serialize)(const void * input, void *output, int count, void* subtype);
void (*unserialize)(const void * input, void *output, int count, void* subtype, MPI_Op op);
void (*subtype_free)(MPI_Datatype* type);
+ void (*subtype_use)(MPI_Datatype* type);
} s_smpi_subtype_t;
typedef struct s_smpi_mpi_datatype{
char* name;
size_t size;
/* this let us know if a serialization is required*/
- size_t has_subtype;
+ size_t sizeof_substruct;
MPI_Aint lb;
MPI_Aint ub;
int flags;
XBT_PRIVATE int smpi_datatype_struct(int count, int* blocklens, MPI_Aint* indices, MPI_Datatype* old_types,
MPI_Datatype* new_type);
-XBT_PRIVATE void smpi_datatype_create(MPI_Datatype* new_type, int size,int lb, int ub, int has_subtype,
+XBT_PRIVATE void smpi_datatype_create(MPI_Datatype* new_type, int size,int lb, int ub, int sizeof_substruct,
void *struct_type, int flags);
XBT_PRIVATE void smpi_datatype_free(MPI_Datatype* type);