#pragma once #include "generator/factory_utils.hpp" #include "generator/translator_coastline.hpp" #include "generator/translator_complex.hpp" #include "generator/translator_country.hpp" #include "generator/translator_interface.hpp" #include "generator/translator_world.hpp" #include "base/assert.hpp" #include #include namespace generator { enum class TranslatorType { Country, Coastline, World, Complex }; template std::shared_ptr CreateTranslator(TranslatorType type, Args &&... args) { switch (type) { case TranslatorType::Coastline: return create(std::forward(args)...); case TranslatorType::Country: return create(std::forward(args)...); case TranslatorType::World: return create(std::forward(args)...); case TranslatorType::Complex: return create(std::forward(args)...); } UNREACHABLE(); } } // namespace generator