Files
chatterino2/lib/twitch-eventsub-ws/ast/lib/templates/enum-implementation.tmpl

29 lines
882 B
Cheetah

boost::json::result_for<{{enum.full_name}}, boost::json::value>::type tag_invoke(
boost::json::try_value_to_tag<{{enum.full_name}}> /* tag */, const boost::json::value &jvRoot)
{
if (!jvRoot.is_string())
{
EVENTSUB_BAIL_HERE(error::Kind::ExpectedString);
}
std::string_view eString(jvRoot.get_string());
using namespace std::string_view_literals;
{%- for constant in enum.constants %}
if (eString == "{{constant.json_name}}"sv) {
return {{enum.full_name}}::{{constant.name}};
}
{%- for extra_name in constant.json_extra_enum_constant_names -%}
if (eString == "{{extra_name}}"sv) {
return {{enum.full_name}}::{{constant.name}};
}
{%- endfor -%}
{%- endfor %}
{%- if enum.default -%}
return {{enum.full_name}}::{{enum.default}};
{%- else -%}
EVENTSUB_BAIL_HERE(error::Kind::UnknownEnumValue);
{%- endif -%}
}