mirror of
https://github.com/WerWolv/ImHex-Patterns.git
synced 2026-03-27 23:37:04 -05:00
includes/type: Added templates for number types with specific base
This commit is contained in:
31
includes/type/base.pat
Normal file
31
includes/type/base.pat
Normal file
@@ -0,0 +1,31 @@
|
||||
#pragma once
|
||||
|
||||
#include <std/io.pat>
|
||||
#include <std/math.pat>
|
||||
|
||||
namespace type {
|
||||
|
||||
using Hex<T> = T [[format("type::impl::format_hex")]];
|
||||
using Oct<T> = T [[format("type::impl::format_oct")]];
|
||||
using Dec<T> = T [[format("type::impl::format_dec")]];
|
||||
using Bin<T> = T [[format("type::impl::format_bin")]];
|
||||
|
||||
namespace impl {
|
||||
|
||||
fn format_number(auto value, str fmt) {
|
||||
bool negative = value < 0;
|
||||
|
||||
if (negative)
|
||||
return std::format("-" + fmt, std::math::abs(value));
|
||||
else
|
||||
return std::format(fmt, value);
|
||||
};
|
||||
|
||||
fn format_hex(auto value) { return format_number(value, "0x{:02X}"); };
|
||||
fn format_oct(auto value) { return format_number(value, "0o{:03o}"); };
|
||||
fn format_dec(auto value) { return format_number(value, "{}"); };
|
||||
fn format_bin(auto value) { return format_number(value, "0b{:08b}"); };
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user