For sparse enums, use a switch statement to generate EnumNameXXX(). (#4845)
This commit is contained in:
parent
8b39a0ee53
commit
0d1559bdd4
|
@ -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_ += "";
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue