From 75fd40442b7c88be98174273e429e76984b0c546 Mon Sep 17 00:00:00 2001 From: Nik Date: Sat, 24 Dec 2022 15:10:23 +0100 Subject: [PATCH] includes/type: Added BCD type --- includes/type/bcd.pat | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 includes/type/bcd.pat diff --git a/includes/type/bcd.pat b/includes/type/bcd.pat new file mode 100644 index 0000000..f9b20f3 --- /dev/null +++ b/includes/type/bcd.pat @@ -0,0 +1,29 @@ +#pragma once + +#include + +namespace type { + + struct BCD { + u8 bytes[Digits]; + } [[sealed, format_read("type::impl::format_bcd")]]; + + namespace impl { + + fn format_bcd(ref auto bcd) { + str result; + + for (u32 i = 0, i < sizeof(bcd.bytes), i += 1) { + u8 byte = bcd.bytes[i]; + if (byte >= 10) + return "Invalid"; + + result += std::format("{}", byte); + } + + return result; + }; + + } + +}