+/** \ingroup sg_storage_management
+ * \brief Finds a sg_storage_t using its name.
+ * \param name the name of a storage
+ * \return the corresponding storage
+ */
+sg_storage_t sg_storage_get_by_name(const char* name)
+{
+ return simgrid::s4u::Storage::byName(name);
+}
+
+/** \ingroup sg_storage_management
+ * \brief Returns a dynar containing all the storage elements declared at a given point of time
+ */
+xbt_dynar_t sg_storages_as_dynar()
+{
+ std::map<std::string, simgrid::s4u::Storage*>* storage_list = new std::map<std::string, simgrid::s4u::Storage*>;
+ simgrid::s4u::getStorageList(storage_list);
+ xbt_dynar_t res = xbt_dynar_new(sizeof(sg_storage_t), nullptr);
+ for (auto const& s : *storage_list)
+ xbt_dynar_push(res, &(s.second));
+ delete storage_list;
+ return res;
+}
+
+void* sg_storage_get_data(sg_storage_t storage)
+{
+ xbt_assert((storage != nullptr), "Invalid parameters");
+ return storage->getUserdata();
+}
+
+void sg_storage_set_data(sg_storage_t storage, void* data)
+{
+ storage->setUserdata(data);
+}
+
+sg_size_t sg_storage_read(sg_storage_t storage, sg_size_t size)
+{
+ return storage->read(size);
+}
+
+sg_size_t sg_storage_write(sg_storage_t storage, sg_size_t size)
+{
+ return storage->write(size);
+}
+SG_END_DECL()