#include #include #include #include
#include #include namespace mira { struct input_parameter_wrapper { // проблема, что нет взаимоисключения, что если PLAIN_PARAMETER, то обязательно ТОЛЬКО parameter должен быть struct market_parameter { mira::parsing::e_market market; mira::e_strategy strategy; std::string symbol_str; }; e_input_parameter_type type; union { // м.б. вместо union использовать std::variant? std::string parameter; std::vector market_parameters; }; static std::unordered_map convert_market_input_to_plain(const std::unordered_map&); e_input_parameter_type& operator=(input_parameter_wrapper& other) { type = other.type; if (type == e_input_parameter_type::PLAIN_PARAMETER) { parameter = other.parameter; } else if (type == e_input_parameter_type::MARKET_PARAMETER) { market_parameters = other.market_parameters; } } ~input_parameter_wrapper() { // is it necessary to do? if (type == e_input_parameter_type::MARKET_PARAMETER) { market_parameters.~vector(); } else if (type == e_input_parameter_type::PLAIN_PARAMETER) { parameter.~basic_string(); } } }; } // namespace mira