Make Growth Rate library use unique_ptr

This commit is contained in:
Deukhoofd 2020-05-26 14:58:16 +02:00
parent aba56d2fdd
commit ecf1c47a53
Signed by: Deukhoofd
GPG Key ID: ADF2E9256009EDCE
2 changed files with 6 additions and 9 deletions

View File

@ -37,9 +37,9 @@ uint32_t CreatureLib::Library::GrowthRateLibrary::CalculateExperience(uint32_t h
void CreatureLib::Library::GrowthRateLibrary::AddGrowthRate(const ConstString& name, void CreatureLib::Library::GrowthRateLibrary::AddGrowthRate(const ConstString& name,
CreatureLib::Library::GrowthRate* rate) { CreatureLib::Library::GrowthRate* rate) {
_growthRates.insert({name, rate}); _growthRates.insert({name, std::unique_ptr<const GrowthRate>(rate)});
} }
void CreatureLib::Library::GrowthRateLibrary::AddGrowthRate(uint32_t hash, CreatureLib::Library::GrowthRate* rate) { void CreatureLib::Library::GrowthRateLibrary::AddGrowthRate(uint32_t hash, CreatureLib::Library::GrowthRate* rate) {
_growthRates.insert({hash, rate}); _growthRates.insert({hash, std::unique_ptr<const GrowthRate>(rate)});
} }

View File

@ -3,6 +3,7 @@
#include <Arbutils/ConstString.hpp> #include <Arbutils/ConstString.hpp>
#include <cstdint> #include <cstdint>
#include <memory>
#include <string> #include <string>
#include <unordered_map> #include <unordered_map>
#include "GrowthRate.hpp" #include "GrowthRate.hpp"
@ -12,17 +13,13 @@ using ConstString = Arbutils::CaseInsensitiveConstString;
namespace CreatureLib::Library { namespace CreatureLib::Library {
class GrowthRateLibrary { class GrowthRateLibrary {
private: private:
std::unordered_map<uint32_t, GrowthRate*> _growthRates; std::unordered_map<uint32_t, std::unique_ptr<const GrowthRate>> _growthRates;
public: public:
GrowthRateLibrary(size_t initialCapacity = 10) GrowthRateLibrary(size_t initialCapacity = 10)
: _growthRates(std::unordered_map<uint32_t, GrowthRate*>(initialCapacity)) {} : _growthRates(std::unordered_map<uint32_t, std::unique_ptr<const GrowthRate>>(initialCapacity)) {}
virtual ~GrowthRateLibrary() { virtual ~GrowthRateLibrary() = default;
for (auto gr : _growthRates) {
delete gr.second;
}
}
[[nodiscard]] uint8_t CalculateLevel(const ConstString& growthRate, uint32_t experience) const; [[nodiscard]] uint8_t CalculateLevel(const ConstString& growthRate, uint32_t experience) const;
[[nodiscard]] uint8_t CalculateLevel(uint32_t hash, uint32_t experience) const; [[nodiscard]] uint8_t CalculateLevel(uint32_t hash, uint32_t experience) const;