10 enum class Endianess : uint8_t
25 operator<<(std::ostream& os, Endianess e);
35 operator<<(std::wostream& wos, Endianess e);
41 enum class ArchitectureType : uint8_t
60 std::string_view name {};
61 ArchitectureType
id {};
64 std::array<std::string_view, 4> aliases {};
99 Find(std::string_view
const& architecture_name);
108 {ArchitectureType::x64,
110 ArchitectureType::x64,
116 {ArchitectureType::x86,
118 ArchitectureType::x86,
124 {ArchitectureType::arm64, {
"arm64"sv, ArchitectureType::arm64, 8, Endianess::little, {
"aarch64"sv}}},
125 {ArchitectureType::arm, {
"arm"sv, ArchitectureType::arm, 4, Endianess::little}},
136 struct std::formatter<Endianess, char> : std::formatter<std::string, char>
138 template<
typename FormatContext>
140 format(Endianess a, FormatContext& ctx)
142 const char* e = (a == Endianess::little) ?
"LITTLE" : (a == Endianess::big) ?
"BIG" :
"UNKNOWN";
143 return std::formatter<std::string, char>::format(std::string(e), ctx);
154 struct std::formatter<
Architecture, char> : std::formatter<std::string, char>
156 template<
typename FormatContext>
160 return std::formatter<std::string, char>::format(std::string(a.name), ctx);
Logging header: Wide string support on linux is at best flaky, so only Windows version gets both stri...
Architecture class definition, with its wstring representation.
Definition: Architecture.hpp:59
friend std::ostream & operator<<(std::ostream &os, Architecture const &a)
Output Architecture to std::wostream.
static Architecture const & Find(std::string_view const &architecture_name)
Find an architecture by name. The function will throw std::range_error
A constexpr map https://xuhuisun.com/post/c++-weekly-2-constexpr-map/.
Definition: Common.hpp:146