diff options
| author | Lioncash <mathew1800@gmail.com> | 2018-08-15 05:38:37 -0400 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2018-08-15 05:52:37 -0400 |
| commit | aaed7027903544c80df4e03f62a96ba8ffa9cf5e (patch) | |
| tree | d242adb55cd5998b6f5ee20462717d6a916bb552 /src/core/loader | |
| parent | 26a456e76f3808f8a499c8c31052fb68f8bccf5c (diff) | |
loader: Make ResultStatus directly compatible with fmt
We can make the enum class type compatible with fmt by providing an
overload of operator<<.
While we're at it, perform proper bounds checking. If something exceeds
the array, it should be a hard fail, because it's, without a doubt, a
programmer error in this case.
Diffstat (limited to 'src/core/loader')
| -rw-r--r-- | src/core/loader/loader.cpp | 12 | ||||
| -rw-r--r-- | src/core/loader/loader.h | 4 |
2 files changed, 6 insertions, 10 deletions
diff --git a/src/core/loader/loader.cpp b/src/core/loader/loader.cpp index b143f043cd..5e07a3f107 100644 --- a/src/core/loader/loader.cpp +++ b/src/core/loader/loader.cpp @@ -3,6 +3,7 @@ // Refer to the license.txt file included. #include <memory> +#include <ostream> #include <string> #include "common/logging/log.h" #include "common/string_util.h" @@ -119,14 +120,9 @@ constexpr std::array<const char*, 36> RESULT_MESSAGES{ "There is no control data available.", }; -std::string GetMessageForResultStatus(ResultStatus status) { - return GetMessageForResultStatus(static_cast<u16>(status)); -} - -std::string GetMessageForResultStatus(u16 status) { - if (status >= 36) - return ""; - return RESULT_MESSAGES[status]; +std::ostream& operator<<(std::ostream& os, ResultStatus status) { + os << RESULT_MESSAGES.at(static_cast<size_t>(status)); + return os; } /** diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h index 6dffe451a6..b74cfbf8a8 100644 --- a/src/core/loader/loader.h +++ b/src/core/loader/loader.h @@ -5,6 +5,7 @@ #pragma once #include <algorithm> +#include <iosfwd> #include <memory> #include <string> #include <utility> @@ -94,8 +95,7 @@ enum class ResultStatus : u16 { ErrorNoControl, }; -std::string GetMessageForResultStatus(ResultStatus status); -std::string GetMessageForResultStatus(u16 status); +std::ostream& operator<<(std::ostream& os, ResultStatus status); /// Interface for loading an application class AppLoader : NonCopyable { |
