// WARNING: This file is machine generated by fidlc.

#include <lib/fidl/internal.h>


extern const struct FidlCodedEnum fidl_test_enum_MyStrictEnumTable;
extern const struct FidlCodedEnum fidl_test_enum_MyFlexibleEnumWithCustomUnknownTable;
extern const struct FidlCodedEnum fidl_test_enum_MyFlexibleEnumTable;



static bool EnumValidatorFor_fidl_test_enum_MyStrictEnum(uint64_t v) {
  switch (v) {
    case 1ul:
    case 2ul:
      return true;
    default:
      return false;
  }
}

const struct FidlCodedEnum fidl_test_enum_MyStrictEnumTable = {.tag=kFidlTypeEnum, .underlying_type=kFidlCodedPrimitiveSubtype_Uint32, .strictness=kFidlStrictness_Strict, .validate=&EnumValidatorFor_fidl_test_enum_MyStrictEnum, .name="fidl.test.enum/MyStrictEnum"};

const struct FidlCodedEnum fidl_test_enum_MyFlexibleEnumWithCustomUnknownTable = {.tag=kFidlTypeEnum, .underlying_type=kFidlCodedPrimitiveSubtype_Uint32, .strictness=kFidlStrictness_Flexible, .validate=NULL, .name="fidl.test.enum/MyFlexibleEnumWithCustomUnknown"};

const struct FidlCodedEnum fidl_test_enum_MyFlexibleEnumTable = {.tag=kFidlTypeEnum, .underlying_type=kFidlCodedPrimitiveSubtype_Uint32, .strictness=kFidlStrictness_Flexible, .validate=NULL, .name="fidl.test.enum/MyFlexibleEnum"};

