void hexdump_line(uintptr_t addr, uint8_t *buf, int nbytes, int grouping, int maxbytes) { if(!nbytes) return; int i=0; null_color(); set_color(COLOR_BLUE, COLOR_DEFAULT); printf("0x%0*lx: ", (int)sizeof(void *)*2, addr); for(i=0; i<maxbytes; i++) { if(grouping && (i % grouping == 0)) { null_color(); printf(" "); } if(i < nbytes) { char_color(buf[i]); printf("%02x", buf[i]); } else { null_color(); printf(" "); } } null_color(); printf(" "); for(i=0; i<maxbytes; i++) { if(i < nbytes) { char_color(buf[i]); print_char(buf[i]); } else { null_color(); printf(" "); } } null_color(); printf("\n"); }
bool null() const { return *this == null_color(); }