X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ea74f5d95928a521a588737e81f1de94eef25d19..89d7a404bbe64b7f19e6743d2979468f1cac42a2:/src/smpi/include/smpi_keyvals.hpp diff --git a/src/smpi/include/smpi_keyvals.hpp b/src/smpi/include/smpi_keyvals.hpp index b594f09a13..768bc51553 100644 --- a/src/smpi/include/smpi_keyvals.hpp +++ b/src/smpi/include/smpi_keyvals.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2022. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2010-2023. 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. */ @@ -38,8 +38,7 @@ struct smpi_key_elem { bool delete_attr; // if true, xbt_free(attr) on delete: used by Fortran bindings }; -namespace simgrid{ -namespace smpi{ +namespace simgrid::smpi { class Keyval{ private: @@ -106,8 +105,7 @@ template int Keyval::attr_delete(int keyval){ smpi_key_elem& elem = elem_it->second; int flag = 0; - int ret = call_deleter((T*)this, elem, keyval, attr->second, &flag); - if (ret != MPI_SUCCESS) + if (int ret = call_deleter((T*)this, elem, keyval, attr->second, &flag); ret != MPI_SUCCESS) return ret; elem.refcount--; @@ -119,12 +117,10 @@ template int Keyval::attr_delete(int keyval){ template int Keyval::attr_get(int keyval, void* attr_value, int* flag){ - auto elem_it = T::keyvals_.find(keyval); - if (elem_it == T::keyvals_.end() || elem_it->second.deleted) + if (auto elem_it = T::keyvals_.find(keyval); elem_it == T::keyvals_.end() || elem_it->second.deleted) return MPI_ERR_ARG; - auto attr = attributes().find(keyval); - if (attr != attributes().end()) { + if (auto attr = attributes().find(keyval); attr != attributes().end()) { *static_cast(attr_value) = attr->second; *flag=1; } else { @@ -139,14 +135,13 @@ template int Keyval::attr_put(int keyval, void* attr_value){ return MPI_ERR_ARG; smpi_key_elem& elem = elem_it->second; - int flag=0; - auto p = attributes().emplace(keyval, attr_value); - if (p.second) { + if (auto [attr, inserted] = attributes().try_emplace(keyval, attr_value); inserted) { elem.refcount++; } else { - int ret = call_deleter((T*)this, elem, keyval,p.first->second,&flag); + int flag = 0; + int ret = call_deleter((T*)this, elem, keyval, attr->second, &flag); // overwrite previous value - p.first->second = attr_value; + attr->second = attr_value; if(ret!=MPI_SUCCESS) return ret; } @@ -154,12 +149,12 @@ template int Keyval::attr_put(int keyval, void* attr_value){ } template void Keyval::cleanup_attr(){ - for (auto const& it : attributes()) { - auto elem_it = T::keyvals_.find(it.first); + for (auto const& [key, value] : attributes()) { + auto elem_it = T::keyvals_.find(key); xbt_assert(elem_it != T::keyvals_.end()); smpi_key_elem& elem = elem_it->second; int flag = 0; - call_deleter((T*)this, elem, it.first, it.second, &flag); + call_deleter((T*)this, elem, key, value, &flag); elem.refcount--; if (elem.deleted && elem.refcount == 0) T::keyvals_.erase(elem_it); @@ -167,7 +162,6 @@ template void Keyval::cleanup_attr(){ attributes().clear(); } -} -} +} // namespace simgrid::smpi #endif