/*
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 <string>
#include <rapidjson/document.h>
#include "{{stinger.cpp.enum_header_file}}"
#include "structs.hpp"

{%for prop_name, prop in stinger.properties.items()%}
{%-if prop.documentation %}/**
{{prop.documentation |commentblock(' * ')}}
 */{%endif%}
struct {{prop.name | UpperCamelCase}}Property {
    static {{prop.name | UpperCamelCase}}Property FromRapidJsonObject(const rapidjson::Value& jsonObj);
    void AddToRapidJsonObject(rapidjson::Value& parent, rapidjson::Document::AllocatorType& allocator) const;
{%-for arg in prop.arg_list %}
    {%if arg.arg_type.name.lower() == "struct"-%}
    {%if arg.optional%}std::optional<{{arg.cpp_type}}>{%else%}{{arg.cpp_type}}{%endif%} {{arg.name|lowerCamelCase}};{%if arg.description %}  ///< {{arg.description}}{%endif%}
    {%-else-%}
    {{arg.cpp_temp_type}} {{arg.name|lowerCamelCase}};{%if arg.description %}  ///< {{arg.description}}{%endif%}
    {%-endif-%}
{%endfor-%}{# end for arg #}
};
{%endfor%}{# end for each property #}