ircd:Ⓜ️:vm: Add reverse reflection of phase enum.

This commit is contained in:
Jason Volk 2023-03-23 01:12:38 -07:00
parent 4339639732
commit 66629046e1
2 changed files with 20 additions and 0 deletions

View File

@ -16,6 +16,7 @@ namespace ircd::m::vm
enum phase :uint;
string_view reflect(const phase &);
phase phase_reflect(const string_view &) noexcept; // default NONE
}
/// Evaluation phases

View File

@ -109,6 +109,25 @@ noexcept
assert(retired == sequence::retired || ircd::read_only);
}
ircd::m::vm::phase
ircd::m::vm::phase_reflect(const string_view &str)
noexcept
{
phase ret{phase::NONE};
util::for_each<phase>([&ret, &str]
(const auto &phase)
{
if(reflect(phase) == str)
{
ret = phase;
return false;
}
else return true;
});
return ret;
}
ircd::string_view
ircd::m::vm::reflect(const enum phase &code)
{