#pragma once #include "generator/factory_utils.hpp" #include "generator/processor_booking.hpp" #include "generator/processor_coastline.hpp" #include "generator/processor_complex.hpp" #include "generator/processor_country.hpp" #include "generator/processor_interface.hpp" #include "generator/processor_noop.hpp" #include "generator/processor_simple.hpp" #include "generator/processor_world.hpp" #include "base/assert.hpp" #include #include namespace generator { enum class ProcessorType { Simple, Country, Coastline, World, Noop, Complex // Booking }; template std::shared_ptr CreateProcessor(ProcessorType type, Args &&... args) { switch (type) { case ProcessorType::Coastline: return create(std::forward(args)...); case ProcessorType::Country: return create(std::forward(args)...); case ProcessorType::Simple: return create(std::forward(args)...); case ProcessorType::World: return create(std::forward(args)...); case ProcessorType::Noop: return create(std::forward(args)...); case ProcessorType::Complex: return create(std::forward(args)...); } UNREACHABLE(); } } // namespace generator