//------------------------------------------------------------------------------
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);
}
Example #2
0
//------------------------------------------------------------------------------
void ostream::putNum(int32_t n) {
  bool neg = n < 0 && flagsToBase() == 10;
  if (neg) {
    n = -n;
  }
  putNum(n, neg);
}