tools: Add output stream operator for evmc_revision

This commit is contained in:
Paweł Bylica 2019-12-09 21:13:49 +01:00
parent fa9e3d3b30
commit ac11122e67
No known key found for this signature in database
GPG Key ID: 7A0C037434FE77EF
2 changed files with 41 additions and 0 deletions

View File

@ -117,4 +117,42 @@ std::ostream& operator<<(std::ostream& os, evmc_status_code status_code)
return os << s; return os << s;
} }
std::ostream& operator<<(std::ostream& os, evmc_revision revision)
{
const char* s = nullptr;
switch (revision)
{
case EVMC_FRONTIER:
s = "Frontier";
break;
case EVMC_HOMESTEAD:
s = "Homestead";
break;
case EVMC_TANGERINE_WHISTLE:
s = "Tangerine Whistle";
break;
case EVMC_SPURIOUS_DRAGON:
s = "Spurious Dragon";
break;
case EVMC_BYZANTIUM:
s = "Byzantium";
break;
case EVMC_CONSTANTINOPLE:
s = "Constantinople";
break;
case EVMC_PETERSBURG:
s = "Petersburg";
break;
case EVMC_ISTANBUL:
s = "Istanbul";
break;
case EVMC_BERLIN:
s = "Berlin";
break;
default:
throw std::invalid_argument{"invalid EVM revision: " + std::to_string(revision)};
}
return os << s;
}
} // namespace evmc } // namespace evmc

View File

@ -33,4 +33,7 @@ std::string hex(const uint8_t* data, size_t size);
/// Output stream operator for evmc_status_code. /// Output stream operator for evmc_status_code.
std::ostream& operator<<(std::ostream& os, evmc_status_code status_code); std::ostream& operator<<(std::ostream& os, evmc_status_code status_code);
/// Output stream operator for EVM revision.
std::ostream& operator<<(std::ostream& os, evmc_revision revision);
} // namespace evmc } // namespace evmc