//------------------------------------------------------------------------------ void ostream::putNum(uint32_t n, bool neg) { char buf[13]; char* end = buf + sizeof(buf) - 1; char* num; char* str; uint8_t base = flagsToBase(); *end = '\0'; str = num = fmtNum(n, end, base); if (base == 10) { if (neg) { *--str = '-'; } else if (flags() & showpos) { *--str = '+'; } } else if (flags() & showbase) { if (flags() & hex) { *--str = flags() & uppercase ? 'X' : 'x'; } *--str = '0'; } uint8_t len = end - str; fmtflags adj = flags() & adjustfield; if (adj == internal) { while (str < num) putch(*str++); } if (adj != left) { do_fill(len); } putstr(str); do_fill(len); }
//------------------------------------------------------------------------------ void ostream::putNum(int32_t n) { bool neg = n < 0 && flagsToBase() == 10; if (neg) { n = -n; } putNum(n, neg); }