Add TechsetDefinitionCache to cache loaded techset definitions

This commit is contained in:
Jan
2022-08-06 10:52:35 +02:00
parent b474109452
commit a3a01660d6
5 changed files with 69 additions and 14 deletions

View File

@ -0,0 +1,18 @@
#include "TechsetDefinitionCache.h"
using namespace techset;
TechsetDefinition* TechsetDefinitionCache::GetCachedTechsetDefinition(const std::string& techsetName) const
{
const auto foundTechset = m_cache.find(techsetName);
if (foundTechset != m_cache.end())
return foundTechset->second.get();
return nullptr;
}
void TechsetDefinitionCache::AddTechsetDefinitionToCache(std::string name, std::unique_ptr<TechsetDefinition> definition)
{
m_cache.emplace(std::make_pair(std::move(name), std::move(definition)));
}

View File

@ -0,0 +1,22 @@
#pragma once
#include <unordered_map>
#include <string>
#include <memory>
#include "Utils/ClassUtils.h"
#include "TechsetDefinition.h"
#include "AssetLoading/IZoneAssetLoaderState.h"
namespace techset
{
class TechsetDefinitionCache final : public IZoneAssetLoaderState
{
public:
_NODISCARD TechsetDefinition* GetCachedTechsetDefinition(const std::string& techsetName) const;
void AddTechsetDefinitionToCache(std::string name, std::unique_ptr<TechsetDefinition> definition);
private:
std::unordered_map<std::string, std::unique_ptr<TechsetDefinition>> m_cache;
};
}

View File

@ -20,6 +20,6 @@ namespace techset
public:
TechsetFileReader(std::istream& stream, std::string fileName, const char** validTechniqueTypeNames, size_t validTechniqueTypeNameCount);
_NODISCARD std::unique_ptr<techset::TechsetDefinition> ReadTechsetDefinition() const;
_NODISCARD std::unique_ptr<TechsetDefinition> ReadTechsetDefinition() const;
};
}