29 lines
882 B
Cheetah
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 -%}
|
|
}
|