ores.cpp.oresmd.requirements

Table of Contents

1. Template

{{! 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

Emacs 29.3 (Org mode 9.6.15)