{%- set enum_config = 'iwa_enums' | load_config -%} {% macro cpp_enum(name) -%} enum class {{ enum_config[name].cpp_type_name }} { {%- for key, value in enum_config[name].entries.items(): %} {{ key }} = {{ value }}, {%- endfor %} }; inline mijin::Optional<{{ enum_config[name].cpp_type_name }}> {{ enum_config[name].cpp_type_name[0] | lower }}{{ enum_config[name].cpp_type_name[1:] }}FromString(std::string_view name) { {%- for key in enum_config[name].entries.keys(): %} if (name == "{{ key | lower }}") { return {{ enum_config[name].cpp_type_name }}::{{ key }}; } {%- endfor %} return mijin::NULL_OPTIONAL; } {%- endmacro %} {% macro glsl_enum(name) -%} {%- for key, value in enum_config[name].entries.items(): -%} const int {{ enum_config[name].glsl_prefix }}{{ key }} = {{ value }}; {% endfor -%} {%- endmacro %}