#include "CommonTechset.h" #include namespace techset { CommonTechniqueTypeNames::CommonTechniqueTypeNames(const char** names, const size_t nameCount) : m_names(nameCount) { std::copy(names, &names[nameCount], m_names.data()); m_technique_type_lookup.reserve(nameCount); for (size_t i = 0; i < nameCount; i++) m_technique_type_lookup.emplace(names[i], i); } const char* CommonTechniqueTypeNames::GetTechniqueTypeName(const size_t techniqueTypeIndex) const { if (techniqueTypeIndex >= m_names.size()) return nullptr; return m_names[techniqueTypeIndex]; } [[nodiscard]] std::optional CommonTechniqueTypeNames::GetTechniqueTypeByName(const std::string& name) const { const auto foundValue = m_technique_type_lookup.find(name); if (foundValue != m_technique_type_lookup.end()) return foundValue->second; return std::nullopt; } size_t CommonTechniqueTypeNames::GetTechniqueTypeCount() const { return m_names.size(); } CommonTechset::CommonTechset(const size_t techniqueTypeCount) : m_technique_names(techniqueTypeCount) { } CommonTechset::CommonTechset(std::string name, std::vector techniqueNames) : m_name(std::move(name)), m_technique_names(std::move(techniqueNames)) { } CommonTechset::CommonTechset(std::string name, const size_t techniqueTypeCount) : m_name(std::move(name)), m_technique_names(techniqueTypeCount) { } } // namespace techset