{{> header}}

#pragma once

#include <app-common/zap-generated/cluster-enums.h>

namespace chip {
namespace app {
namespace Clusters {
{{#zcl_clusters}}
{{#zcl_enums}}
static auto __attribute__((unused)) EnsureKnownEnumValue({{asUpperCamelCase ../name}}::{{asType label}} val)
{
    using EnumType = {{asUpperCamelCase ../name}}::{{asType label}};
    switch (val) {
{{#if (isWeaklyTypedEnum label)}}
// Need to convert consumers to using the new enum classes, so we
// don't just have casts all over.
#ifdef CHIP_USE_ENUM_CLASS_FOR_IM_ENUM
{{/if}}
    {{#zcl_enum_items}}
    case EnumType::k{{asUpperCamelCase label}}:
    {{/zcl_enum_items}}
{{#if (isWeaklyTypedEnum label)}}
#else // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM
    {{#zcl_enum_items}}
    case EMBER_ZCL_{{asDelimitedMacro parent.label}}_{{asDelimitedMacro label}}:
    {{/zcl_enum_items}}
#endif // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM
{{/if}}
        return val;
    default:
        return static_cast<EnumType>({{first_unused_enum_value mode="first_unused"}});
    }
}
{{/zcl_enums}}

{{/zcl_clusters}}
} // namespace Clusters
} // namespace app
} // namespace chip
