From 637bbbfd7ace2ee4d1f55420d3ecda32ea4d9ef3 Mon Sep 17 00:00:00 2001 From: Fred Suter Date: Thu, 15 Jun 2023 11:17:47 -0400 Subject: [PATCH] add a get_unique_data to Extendable and test it in one example --- examples/cpp/io-disk-raw/s4u-io-disk-raw.cpp | 5 ++--- include/xbt/Extendable.hpp | 3 +++ 2 files changed, 5 insertions(+), 3 deletions(-) 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(); -- 2.20.1