{{! GENERATED FILE — tangled from ores.cpp.oresmd.requirements.org. Edit the org source. }}
{{{cpp_license}}}
#ifndef ORES_MARKETDATA_API_DOMAIN_MARKET_DATA_REQUIREMENT_HPP
#define ORES_MARKETDATA_API_DOMAIN_MARKET_DATA_REQUIREMENT_HPP
#include "ores.marketdata.api/domain/oresmd_enums.hpp"
#include <optional>
#include <string>
#include <variant>
namespace ores::marketdata::domain {
{{#oresmd_variant_specs}}
{{#requirement_brief}}
{{#requirement_brief_multiline}}
/**
* @brief {{{requirement_brief}}}
*/
{{/requirement_brief_multiline}}
{{^requirement_brief_multiline}}
/** @brief {{{requirement_brief}}} */
{{/requirement_brief_multiline}}
{{/requirement_brief}}
struct {{asset_class}}_market_data_requirement final {
{{#fields}}
{{^generated}}
std::optional<{{{cpp_type_inner}}}> {{name}};
{{/generated}}
{{/fields}}
{{#has_quote_type}}
std::optional<{{{quote_type_cpp_inner}}}> quote_type;
{{/has_quote_type}}
{{#has_point}}
std::optional<std::string> point;
{{/has_point}}
bool operator==(const {{asset_class}}_market_data_requirement&) const = default;
};
{{/oresmd_variant_specs}}
/**
* @brief Tagged union of the seven per-asset-class requirement structs -- see
* market_data_identifier.hpp for the rationale against a common base class.
*/
using market_data_requirement = std::variant<
{{#oresmd_variant_specs}}
{{asset_class}}_market_data_requirement{{^last}},{{/last}}
{{/oresmd_variant_specs}}
>;
}
#endif