/*
DO NOT MODIFY THIS FILE.  It is automatically generated and changes will be over-written
on the next generation.

It contains enumerations used by the {{stinger.name}} interface.

LICENSE: This generated code is not subject to any license restrictions from the generator itself.
TODO: Get license text from stinger file
*/

#pragma once

#include <map>
#include <string>

{%for ns in config.cpp.namespace%}
namespace {{ns}} {
{%endfor-%}
namespace {{stinger.name|snake_case}} {

{%for ie_name, ie in stinger.enums.items() %}
/** 
 * @enum {{ie_name | UpperCamelCase }}{%if ie.documentation %}
 * @brief {{ie.documentation}}{%endif%}
 */
enum class {{ie_name | UpperCamelCase }} {
    {%-for item in ie.items %}
    {{item.name | CONST_CASE}} = {{item.integer}}{%if not loop.last%},{%endif%} {%if item.description%}// {{item.description}}{%endif%}
    {%-endfor%}
};
static const std::map<int, std::string> {{ie_name | camelCase }}Strings = { {%-for item in ie.items %}
    { {{-item.integer}}, "{{item.name}}"}{%if not loop.last%}, {%endif%}
{%endfor-%} };
{%endfor%}

} // namespace {{stinger.name|snake_case}}
{%for ns in config.cpp.namespace|reverse%}
} // namespace {{ns}}
{%endfor-%}
