From ac11122e673ef5d82488db6e00774d577107f02c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Mon, 9 Dec 2019 21:13:49 +0100 Subject: [PATCH] tools: Add output stream operator for evmc_revision --- tools/evmc/utils.cpp | 38 ++++++++++++++++++++++++++++++++++++++ tools/evmc/utils.hpp | 3 +++ 2 files changed, 41 insertions(+) diff --git a/tools/evmc/utils.cpp b/tools/evmc/utils.cpp index fdb87b0..e41238c 100644 --- a/tools/evmc/utils.cpp +++ b/tools/evmc/utils.cpp @@ -117,4 +117,42 @@ std::ostream& operator<<(std::ostream& os, evmc_status_code status_code) 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 diff --git a/tools/evmc/utils.hpp b/tools/evmc/utils.hpp index 8591fa7..df0851f 100644 --- a/tools/evmc/utils.hpp +++ b/tools/evmc/utils.hpp @@ -33,4 +33,7 @@ std::string hex(const uint8_t* data, size_t size); /// Output stream operator for evmc_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