diff --git a/src/main.cc b/src/main.cc index cbfcb8f..9360703 100644 --- a/src/main.cc +++ b/src/main.cc @@ -127,11 +127,15 @@ int main() { // std::cout << CommonCode(0x6EC0F8800).to_short_code().to_string() << std::endl; - auto r = RawCode(0x0E58FC85FFEBC4DB); - printf("%015lX\n", r.unwrap()); +// auto r = RawCode(0x0E58FC85FFEBC4DB); +// printf("%015lX\n", r.unwrap()); +// +// std::cout << r.to_common_code().to_string() << std::endl; +// printf("%015lX\n", RawCode(CommonCode(0x4FEA13400)).unwrap()); - std::cout << r.to_common_code().to_string() << std::endl; - printf("%015lX\n", RawCode(CommonCode(0x4FEA13400)).unwrap()); +// auto r = RawCode(0x0E58FC85FFEBC4DB); + auto r = RawCode(0x0E58FC85FFEBC4DD); + std::cout << r.dump_case() << std::endl; return 0; } diff --git a/src/raw_code/raw_code.cc b/src/raw_code/raw_code.cc index 46c2450..b2adb69 100644 --- a/src/raw_code/raw_code.cc +++ b/src/raw_code/raw_code.cc @@ -1,3 +1,4 @@ +#include #include "common.h" #include "raw_code.h" @@ -67,3 +68,43 @@ RawCode::RawCode(const CommonCode &common_code) { } } } + +std::string RawCode::dump_case() const { + + // TODO: result reserve space -> result length + std::string result; + + auto raw_code = code; + + for (int addr = 0; raw_code; ++addr, raw_code >>= 3) { + switch (raw_code & 0b111) { + case B_space: + result.push_back('.'); + break; + case B_fill: + result.push_back('+'); + break; + case B_1x1: + result.push_back('*'); + break; + case B_1x2: + result.push_back('~'); + break; + case B_2x1: + result.push_back('|'); + break; + case B_2x2: + result.push_back('@'); + break; + default: + result.push_back('?'); + } + if (addr % 4 == 3) { + result.push_back('\n'); + } else { + result.push_back(' '); + } + } + + return result; +} diff --git a/src/raw_code/raw_code.h b/src/raw_code/raw_code.h index ac12850..04503fd 100644 --- a/src/raw_code/raw_code.h +++ b/src/raw_code/raw_code.h @@ -26,8 +26,7 @@ public: std::string dump_case() const; CommonCode to_common_code() const; - RawCode(const CommonCode &common_code); - + explicit RawCode(const CommonCode &common_code); explicit RawCode(uint64_t raw_code) : code(raw_code) {} private: