diff options
Diffstat (limited to 'tools/versioner/src/Arch.cpp')
-rw-r--r-- | tools/versioner/src/Arch.cpp | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/tools/versioner/src/Arch.cpp b/tools/versioner/src/Arch.cpp index 8d1d41efc..4cd9e07b4 100644 --- a/tools/versioner/src/Arch.cpp +++ b/tools/versioner/src/Arch.cpp @@ -44,20 +44,19 @@ std::string to_string(const Arch& arch) { errx(1, "unknown arch '%zu'", size_t(arch)); } -Arch arch_from_string(const std::string& name) { - if (name == "arm") { - return Arch::arm; - } else if (name == "arm64") { - return Arch::arm64; - } else if (name == "mips") { - return Arch::mips; - } else if (name == "mips64") { - return Arch::mips64; - } else if (name == "x86") { - return Arch::x86; - } else if (name == "x86_64") { - return Arch::x86_64; +static const std::unordered_map<std::string, Arch> arch_name_map{ + {"arm", Arch::arm}, + {"arm64", Arch::arm64}, + {"mips", Arch::mips}, + {"mips64", Arch::mips64}, + {"x86", Arch::x86}, + {"x86_64", Arch::x86_64}, +}; + +std::optional<Arch> arch_from_string(const std::string& name) { + auto it = arch_name_map.find(name); + if (it == arch_name_map.end()) { + return std::nullopt; } - - errx(1, "unknown architecture '%s'", name.c_str()); + return std::make_optional(it->second); } |