X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3c23a60b837326e0e9cecfdd2cf0cc0487f0b04d..b2852b7c61948f495d7437ffaa7fd9aced12849c:/src/smpi/include/smpi_f2c.hpp diff --git a/src/smpi/include/smpi_f2c.hpp b/src/smpi/include/smpi_f2c.hpp index ee02512b23..344c838ccc 100644 --- a/src/smpi/include/smpi_f2c.hpp +++ b/src/smpi/include/smpi_f2c.hpp @@ -1,6 +1,6 @@ /* Handle Fortran - C conversion for MPI Types*/ -/* Copyright (c) 2010-2021. The SimGrid Team. +/* Copyright (c) 2010-2023. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -11,9 +11,9 @@ #include #include +#include -namespace simgrid{ -namespace smpi{ +namespace simgrid::smpi { class F2C { private: @@ -26,6 +26,7 @@ private: static f2c_lookup_type::size_type num_default_handles_; int my_f2c_id_ = -1; bool deleted_ = false; + std::string call_location_; protected: static void allocate_lookup() @@ -33,18 +34,20 @@ protected: if (not f2c_lookup_) f2c_lookup_ = std::make_unique(); } - static int f2c_id() { return f2c_id_; } + int f2c_id() const { return my_f2c_id_; } + static int global_f2c_id() { return f2c_id_; } static void f2c_id_increment() { f2c_id_++; } - void mark_as_deleted() { deleted_ = true; }; public: + void mark_as_deleted() { deleted_ = true; }; bool deleted() const { return deleted_; } static f2c_lookup_type* lookup() { return f2c_lookup_.get(); } F2C(); virtual ~F2C() = default; + virtual std::string name() const = 0; int add_f(); - static void free_f(int id) { f2c_lookup_->erase(id); } + static void free_f(int id) { if(id!=-1) f2c_lookup_->erase(id); } int c2f(); // This method should be overridden in all subclasses to avoid casting the result when calling it. @@ -52,9 +55,9 @@ public: static F2C* f2c(int id); static void finish_initialization() { num_default_handles_ = f2c_lookup_->size(); } static f2c_lookup_type::size_type get_num_default_handles() { return num_default_handles_; } + const std::string& call_location() const { return call_location_; } }; -} -} +} // namespace simgrid::smpi #endif