Удалил UType::object_ptr и заменил его на комбинацию из std::shared_ptr и std::weak_ptr из-за ужасной реализации.
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "ISave.h"
|
||||
#include "Types/object_ptr.hpp"
|
||||
|
||||
#include <unordered_map>
|
||||
#include <memory>
|
||||
@@ -18,18 +17,18 @@ class SaveMap final
|
||||
std::unordered_map<std::string, long long> save_long;
|
||||
std::unordered_map<std::string, double> save_double;
|
||||
std::unordered_map<std::string, std::string> save_string;
|
||||
std::unordered_map<std::string, UType::object_ptr<ISave>> save_objects;
|
||||
std::unordered_map<std::string, std::shared_ptr<ISave>> save_objects;
|
||||
|
||||
// Массивы
|
||||
std::unordered_map<std::string, std::vector<long long>> save_vector_integer;
|
||||
std::unordered_map<std::string, std::vector<double>> save_vector_double;
|
||||
std::unordered_map<std::string, std::vector<UType::object_ptr<ISave>>> save_vector_objects;
|
||||
std::unordered_map<std::string, std::vector<std::shared_ptr<ISave>>> save_vector_objects;
|
||||
std::unordered_map<std::string, std::vector<std::string>> save_vector_strings;
|
||||
|
||||
// Связаные списки
|
||||
std::unordered_map<std::string, std::list<long long>> save_list_integer;
|
||||
std::unordered_map<std::string, std::list<double>> save_list_double;
|
||||
std::unordered_map<std::string, std::list<UType::object_ptr<ISave>>> save_list_objects;
|
||||
std::unordered_map<std::string, std::list<std::shared_ptr<ISave>>> save_list_objects;
|
||||
std::unordered_map<std::string, std::list<std::string>> save_list_strings;
|
||||
|
||||
static ISave* MakeObjectByName(const std::string& name);
|
||||
@@ -48,29 +47,29 @@ public:
|
||||
std::shared_ptr<SaveMap> SaveInteger(const char* name, int value) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveDouble(const char* name, double value) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveString(const char* name, const std::string& value) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveObject(const char* name, UType::object_ptr<ISave> object) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveObject(const char* name, std::shared_ptr<ISave> object) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveVectorInteger(const char* name, std::vector<long long>&& value) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveVectorDouble(const char* name, std::vector<double>&& value) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveVectorStrings(const char* name, std::vector<std::string>&& value) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveVectorObject(const char* name, std::vector<UType::object_ptr<ISave>>&& value) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveVectorObject(const char* name, std::vector<std::shared_ptr<ISave>>&& value) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveListInteger(const char* name, std::list<long long>&& value) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveListDouble(const char* name, std::list<double>&& value) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveListStrings(const char* name, std::list<std::string>&& value) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveListObject(const char* name, std::list<UType::object_ptr<ISave>>&& value) noexcept;
|
||||
std::shared_ptr<SaveMap> SaveListObject(const char* name, std::list<std::shared_ptr<ISave>>&& value) noexcept;
|
||||
|
||||
// Методы получения значенй
|
||||
long long GetInteger(const char* name);
|
||||
double GetDouble(const char* name);
|
||||
std::string GetString(const char* name);
|
||||
UType::object_ptr<ISave> GetObject(const char* name);
|
||||
std::shared_ptr<ISave> GetObject(const char* name);
|
||||
std::vector<long long>& GetVectorInteger(const char* name);
|
||||
std::vector<double>& GetVectorDouble(const char* name);
|
||||
std::vector<std::string> GetVectorString(const char* name);
|
||||
std::vector<UType::object_ptr<ISave>>& GetVectorObject(const char* name);
|
||||
std::vector<std::shared_ptr<ISave>>& GetVectorObject(const char* name);
|
||||
std::list<long long>& GetListInteger(const char* name);
|
||||
std::list<double>& GetListDouble(const char* name);
|
||||
std::list<std::string>& GetListString(const char* name);
|
||||
std::list<UType::object_ptr<ISave>>& GetListObject(const char* name);
|
||||
std::list<std::shared_ptr<ISave>>& GetListObject(const char* name);
|
||||
|
||||
std::shared_ptr<SaveMap> getParent() const { return parent_; }
|
||||
const std::string& getClassName() const { return class_name; }
|
||||
|
||||
Reference in New Issue
Block a user