#pragma once #include "generator/factory_utils.hpp" #include "generator/translator_coastline.hpp" #include "generator/translator_country.hpp" #include "generator/translator_geo_objects.hpp" #include "generator/translator_interface.hpp" #include "generator/translator_region.hpp" #include "generator/translator_world.hpp" #include "base/assert.hpp" #include #include namespace generator { enum class TranslatorType { Regions, GeoObjects, Country, Coastline, World }; 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::Regions: return create(std::forward(args)...); case TranslatorType::GeoObjects: return create(std::forward(args)...); case TranslatorType::World: return create(std::forward(args)...); } UNREACHABLE(); } } // namespace generator