diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index 5db8e5a03..b8f14951c 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -981,6 +981,23 @@ class CppGenerator : public BaseGenerator { code_ += ";"; code_ += " return EnumNames{{ENUM_NAME}}()[index];"; + code_ += "}"; + code_ += ""; + } else { + code_ += "inline const char *EnumName{{ENUM_NAME}}({{ENUM_NAME}} e) {"; + + code_ += " switch (e) {"; + + for (auto it = enum_def.vals.vec.begin(); it != enum_def.vals.vec.end(); + ++it) { + const auto &ev = **it; + code_ += " case {{ENUM_NAME}}_" + Name(ev) + ": return \"" + + Name(ev) + "\";"; + } + + code_ += " default: return \"\";"; + code_ += " }"; + code_ += "}"; code_ += ""; }