/* - Attach some user data to disk1 */
XBT_INFO("*** Get/set data for storage element: Disk1 ***");
- const auto* data = disk->get_data<std::string>();
+ auto data = disk->get_unique_data<std::string>();
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<std::string>();
+ data = disk->get_unique_data<std::string>();
XBT_INFO("Set and get data: '%s'", data->c_str());
- delete data;
}
int main(int argc, char** argv)
#include <cstddef>
#include <functional>
#include <limits>
+#include <memory>
#include <vector>
namespace simgrid::xbt {
extensions_[0]=data;
}
template <typename D> D* get_data() const { return static_cast<D*>(extensions_[0]); }
+ template <typename D> std::unique_ptr<D> get_unique_data() { return std::unique_ptr<D>(get_data<D>()); }
+
XBT_ATTRIB_DEPRECATED_v334("Please use typed template Extendable::get_data<>()") void* get_data() const
{
return get_data<void>();