X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fe304706848f0a64477d4687b3ea97d5b9a0c35c..b6dde5ff6f208b83545a4b4e9e81712d0d8617a1:/src/smpi/include/smpi_datatype.hpp diff --git a/src/smpi/include/smpi_datatype.hpp b/src/smpi/include/smpi_datatype.hpp index 01206eae64..5b4d4c0281 100644 --- a/src/smpi/include/smpi_datatype.hpp +++ b/src/smpi/include/smpi_datatype.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2019. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2009-2020. 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. */ @@ -13,7 +13,7 @@ constexpr unsigned DT_FLAG_DESTROYED = 0x0001; /**< user destroyed but some other layers still have a reference */ constexpr unsigned DT_FLAG_COMMITED = 0x0002; /**< ready to be used for a send/recv operation */ constexpr unsigned DT_FLAG_CONTIGUOUS = 0x0004; /**< contiguous datatype */ -constexpr unsigned DT_FLAG_OVERLAP = 0x0008; /**< datatype is unpropper for a recv operation */ +constexpr unsigned DT_FLAG_OVERLAP = 0x0008; /**< datatype is unproper for a recv operation */ constexpr unsigned DT_FLAG_USER_LB = 0x0010; /**< has a user defined LB */ constexpr unsigned DT_FLAG_USER_UB = 0x0020; /**< has a user defined UB */ constexpr unsigned DT_FLAG_PREDEFINED = 0x0040; /**< cannot be removed: initial and predefined datatypes */ @@ -77,7 +77,7 @@ namespace simgrid{ namespace smpi{ class Datatype : public F2C, public Keyval{ - char* name_; + char* name_ = nullptr; /* 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 @@ -87,7 +87,7 @@ class Datatype : public F2C, public Keyval{ MPI_Aint lb_; MPI_Aint ub_; int flags_; - int refcount_; + int refcount_ = 1; public: static std::unordered_map keyvals_; @@ -114,7 +114,7 @@ public: void commit(); bool is_valid(); bool is_basic(); - static const char* encode(MPI_Datatype dt) { return dt->id.c_str(); } + static const char* encode(const Datatype* dt) { return dt->id.c_str(); } static MPI_Datatype decode(const std::string& datatype_id); bool is_replayable(); void addflag(int flag); @@ -129,8 +129,8 @@ public: static int keyval_create(MPI_Type_copy_attr_function* copy_fn, MPI_Type_delete_attr_function* delete_fn, int* keyval, void* extra_state); static int keyval_free(int* keyval); - int pack(const void* inbuf, int incount, void* outbuf, int outcount, int* position, MPI_Comm comm); - int unpack(const void* inbuf, int insize, int* position, void* outbuf, int outcount, MPI_Comm comm); + int pack(const void* inbuf, int incount, void* outbuf, int outcount, int* position, const Comm* comm); + int unpack(const void* inbuf, int insize, int* position, void* outbuf, int outcount, const Comm* comm); static int create_contiguous(int count, MPI_Datatype old_type, MPI_Aint lb, MPI_Datatype* new_type); static int create_vector(int count, int blocklen, int stride, MPI_Datatype old_type, MPI_Datatype* new_type);