use crate::is;
#[doc = crate::_tags!(fmt num)]
#[doc = crate::_doc_location!("text/fmt")]
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct FmtNumShape {
pub prefix: u16,
pub left: u16,
pub right: u16,
}
impl FmtNumShape {
#[inline(always)]
pub const fn new(prefix: u16, left: u16, right: u16) -> Self {
Self { prefix, left, right }
}
#[inline(always)]
pub const fn has_radix(&self) -> bool {
self.right > 0
}
#[inline(always)]
pub const fn total(&self) -> usize {
self.prefix as usize
+ self.left as usize
+ is![self.has_radix(), 1, 0]
+ self.right as usize
}
#[inline(always)]
pub const fn left_block(self) -> usize {
(self.prefix + self.left) as usize
}
}