From: Fred Suter Date: Thu, 15 Jun 2023 15:17:47 +0000 (-0400) Subject: add a get_unique_data to Extendable and test it in one example X-Git-Tag: v3.34~14^2~7^2~2 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/a12c32acea1c020e7b3feea52fa11462c67fac32 add a get_unique_data to Extendable and test it in one example --- diff --git a/examples/cpp/io-disk-raw/s4u-io-disk-raw.cpp b/examples/cpp/io-disk-raw/s4u-io-disk-raw.cpp index 8f2fc22adc..3c50a7bc79 100644 --- a/examples/cpp/io-disk-raw/s4u-io-disk-raw.cpp +++ b/examples/cpp/io-disk-raw/s4u-io-disk-raw.cpp @@ -43,14 +43,13 @@ static void host() /* - Attach some user data to disk1 */ XBT_INFO("*** Get/set data for storage element: Disk1 ***"); - const auto* data = disk->get_data(); + auto data = disk->get_unique_data(); XBT_INFO("Get storage data: '%s'", data ? data->c_str() : "No user data"); disk->set_data(new std::string("Some user data")); - data = disk->get_data(); + data = disk->get_unique_data(); XBT_INFO("Set and get data: '%s'", data->c_str()); - delete data; } int main(int argc, char** argv) diff --git a/include/xbt/Extendable.hpp b/include/xbt/Extendable.hpp index e315219f5c..8dbc3ab3d9 100644 --- a/include/xbt/Extendable.hpp +++ b/include/xbt/Extendable.hpp @@ -11,6 +11,7 @@ #include #include #include +#include #include namespace simgrid::xbt { @@ -109,6 +110,8 @@ public: extensions_[0]=data; } template D* get_data() const { return static_cast(extensions_[0]); } + template std::unique_ptr get_unique_data() { return std::unique_ptr(get_data()); } + XBT_ATTRIB_DEPRECATED_v334("Please use typed template Extendable::get_data<>()") void* get_data() const { return get_data();