46void grk_read(
const uint8_t* src, TYPE* value, uint32_t numBytes)
48 assert(numBytes > 0 && numBytes <=
sizeof(TYPE));
49 if(numBytes == 0 || numBytes >
sizeof(TYPE))
50 throw std::runtime_error(
"read size too large");
53 memcpy(value, src, numBytes);
57 *value = (TYPE)_byteswap_uint64((uint64_t)*value);
59 else if(numBytes == 4)
61 *value = (TYPE)_byteswap_ulong((uint32_t)*value);
63 else if(numBytes == 2)
65 *value = (TYPE)_byteswap_ushort((uint16_t)*value);
67#elif defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || \
72 *value = (TYPE)bswap_64((uint64_t)*value);
74 else if(numBytes == 4)
76 *value = (TYPE)bswap_32((uint32_t)*value);
78 else if(numBytes == 2)
80 *value = (TYPE)bswap_16((uint16_t)*value);
85 uint64_t tmp = *(uint64_t*)value;
86 *value = (TYPE)(((tmp >> 56) & 0xFF) | ((tmp >> 40) & 0xFF00) | ((tmp >> 24) & 0xFF0000) |
87 ((tmp >> 8) & 0xFF000000) | ((tmp << 8) & 0xFF00000000) |
88 ((tmp << 24) & 0xFF0000000000) | ((tmp << 40) & 0xFF000000000000) |
89 ((tmp << 56) & 0xFF00000000000000));
91 else if(numBytes == 4)
93 uint32_t tmp = *(uint32_t*)value;
94 *value = (TYPE)(((tmp >> 24) & 0xFF) | ((tmp >> 8) & 0xFF00) | ((tmp << 8) & 0xFF0000) |
95 ((tmp << 24) & 0xFF000000));
97 else if(numBytes == 2)
99 uint16_t tmp = *(uint16_t*)value;
100 *value = (TYPE)(((tmp >> 8) & 0xFF) | ((tmp << 8) & 0xFF00));
void grk_write(uint8_t *dest, const uint8_t *value, uint8_t sizeOfType, uint32_t numBytes)
Definition StreamIO.cpp:25