MCPcopy Create free account
hub / github.com/OpenSteam001/OpenSteamTool / emitEnum

Method emitEnum

tools/ipc_codegen/ipc_codegen.cpp:639–663  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

637
638private:
639 void emitEnum(const EnumDecl& decl) {
640 out_ << "enum class " << decl.name << " : " << decl.underlying << " {\n";
641 for (const auto& member : decl.members)
642 out_ << " " << member.name << " = " << member.value << ",\n";
643 out_ << "};\n\n"
644 << "inline const char* " << decl.name << "Name(" << decl.name << " value) {\n"
645 " switch (value) {\n";
646 for (const auto& member : decl.members)
647 out_ << " case " << decl.name << "::" << member.name << ": return \""
648 << member.name << "\";\n";
649 out_ << " default: return \"Unknown\";\n"
650 " }\n"
651 "}\n\n"
652 << "inline std::optional<" << decl.name << "> " << decl.name
653 << "FromName(std::string_view name) {\n";
654 for (const auto& member : decl.members)
655 out_ << " if (name == \"" << member.name << "\") return "
656 << decl.name << "::" << member.name << ";\n";
657 out_ << " return std::nullopt;\n"
658 "}\n\n"
659 << "inline std::ostream& operator<<(std::ostream& os, " << decl.name
660 << " value) {\n"
661 " return os << " << decl.name << "Name(value);\n"
662 "}\n\n";
663 }
664
665 void emitHelpers() {
666 out_ << "namespace detail {\n"

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected