uint32 hio_read24l(HIO_HANDLE *h) { switch (HIO_HANDLE_TYPE(h)) { case HIO_HANDLE_TYPE_FILE: return read24l(h->handle.file); case HIO_HANDLE_TYPE_MEMORY: return mread24l(h->handle.mem); default: return 0; } }
uint32 hio_read24l(HIO_HANDLE *h) { if (HIO_HANDLE_TYPE(h) == HIO_HANDLE_TYPE_FILE) { return read24l(h->f); } else { ptrdiff_t can_read = CAN_READ(h); if (can_read >= 3) { uint32 n = readmem24l(h->start + h->pos); h->pos += 3; return n; } else { h->pos += can_read; return EOF; } } }