+ for (; self->ptr < self->end; self->ptr += self->width) {
+ union {
+ uint8_t u8;
+ uint16_t u16;
+ uint32_t u32;
+ uint64_t u64;
+ char buf[0];
+ } u;
+ memcpy(u.buf, self->ptr, self->width);
+ switch (self->width) {
+ case 1: u.u64 = u.u8; break;
+ case 2: u.u64 = u.u16; break;
+ case 4: u.u64 = u.u32; break;
+ }
+ uint64_t c = u.u64;
+