#include <xbt/Extendable.hpp>
#include <map>
+#include <memory>
#include <string>
namespace simgrid {
explicit FileSystemStorageExt(Storage* ptr);
FileSystemStorageExt(const FileSystemStorageExt&) = delete;
FileSystemStorageExt& operator=(const FileSystemStorageExt&) = delete;
- ~FileSystemStorageExt();
std::map<std::string, sg_size_t>* parse_content(const std::string& filename);
- std::map<std::string, sg_size_t>* get_content() { return content_; }
+ std::map<std::string, sg_size_t>* get_content() { return content_.get(); }
sg_size_t get_size() { return size_; }
sg_size_t get_used_size() { return used_size_; }
void decr_used_size(sg_size_t size) { used_size_ -= size; }
void incr_used_size(sg_size_t size) { used_size_ += size; }
private:
- std::map<std::string, sg_size_t>* content_;
+ std::unique_ptr<std::map<std::string, sg_size_t>> content_;
sg_size_t used_size_ = 0;
sg_size_t size_ = 0;
};
FileDescriptorHostExt() = default;
FileDescriptorHostExt(const FileDescriptorHostExt&) = delete;
FileDescriptorHostExt& operator=(const FileDescriptorHostExt&) = delete;
- ~FileDescriptorHostExt() { delete file_descriptor_table; }
- std::vector<int>* file_descriptor_table = nullptr; // Created lazily on need
+ std::unique_ptr<std::vector<int>> file_descriptor_table = nullptr; // Created lazily on need
};
} // namespace s4u
} // namespace simgrid
// assign a file descriptor id to the newly opened File
FileDescriptorHostExt* ext = host->extension<simgrid::s4u::FileDescriptorHostExt>();
if (ext->file_descriptor_table == nullptr) {
- ext->file_descriptor_table = new std::vector<int>(sg_storage_max_file_descriptors);
+ ext->file_descriptor_table.reset(new std::vector<int>(sg_storage_max_file_descriptors));
std::iota(ext->file_descriptor_table->rbegin(), ext->file_descriptor_table->rend(), 0); // Fill with ..., 1, 0.
}
xbt_assert(not ext->file_descriptor_table->empty(), "Too much files are opened! Some have to be closed.");
FileSystemStorageExt::FileSystemStorageExt(simgrid::s4u::Storage* ptr)
{
- content_ = parse_content(ptr->get_impl()->content_name);
+ content_.reset(parse_content(ptr->get_impl()->content_name));
size_ = ptr->get_impl()->size_;
}
-FileSystemStorageExt::~FileSystemStorageExt()
-{
- delete content_;
-}
-
std::map<std::string, sg_size_t>* FileSystemStorageExt::parse_content(const std::string& filename)
{
if (filename.empty())