}
inline const char *EnumNameColor(Color e) {
+ if (e < Color_Red || e > Color_Blue) return "";
const size_t index = static_cast<int>(e);
return EnumNamesColor()[index];
}
}
inline const char *EnumNameEquipment(Equipment e) {
+ if (e < Equipment_NONE || e > Equipment_Weapon) return "";
const size_t index = static_cast<int>(e);
return EnumNamesEquipment()[index];
}
code_ += "inline const char *EnumName{{ENUM_NAME}}({{ENUM_NAME}} e) {";
+ code_ += " if (e < " + GetEnumValUse(enum_def, *enum_def.vals.vec.front()) +
+ " || e > " + GetEnumValUse(enum_def, *enum_def.vals.vec.back()) +
+ ") return \"\";";
+
code_ += " const size_t index = static_cast<int>(e)\\";
if (enum_def.vals.vec.front()->value) {
auto vals = GetEnumValUse(enum_def, *enum_def.vals.vec.front());
}
inline const char *EnumNameColor(Color e) {
+ if (e < Color_Red || e > Color_Blue) return "";
const size_t index = static_cast<int>(e) - static_cast<int>(Color_Red);
return EnumNamesColor()[index];
}
}
inline const char *EnumNameAny(Any e) {
+ if (e < Any_NONE || e > Any_MyGame_Example2_Monster) return "";
const size_t index = static_cast<int>(e);
return EnumNamesAny()[index];
}
}
inline const char *EnumNameEnumInNestedNS(EnumInNestedNS e) {
+ if (e < EnumInNestedNS_A || e > EnumInNestedNS_C) return "";
const size_t index = static_cast<int>(e);
return EnumNamesEnumInNestedNS()[index];
}
true);
}
+void EnumNamesTest() {
+ TEST_EQ_STR("Red", EnumNameColor(Color_Red));
+ TEST_EQ_STR("Green", EnumNameColor(Color_Green));
+ TEST_EQ_STR("Blue", EnumNameColor(Color_Blue));
+ TEST_EQ_STR("", EnumNameColor(static_cast<Color>(-1)));
+ TEST_EQ_STR("", EnumNameColor(static_cast<Color>(1000)));
+}
+
void IntegerOutOfRangeTest() {
TestError("table T { F:byte; } root_type T; { F:128 }",
"constant does not fit");
ErrorTest();
ValueTest();
EnumStringsTest();
+ EnumNamesTest();
IntegerOutOfRangeTest();
IntegerBoundaryTest();
UnicodeTest();
}
inline const char *EnumNameCharacter(Character e) {
+ if (e < Character_NONE || e > Character_Unused) return "";
const size_t index = static_cast<int>(e);
return EnumNamesCharacter()[index];
}