From: Soeren Apel Date: Mon, 7 Dec 2015 19:26:11 +0000 (+0100) Subject: Add RL64 and RL64S endianness helper macros X-Git-Tag: libsigrok-0.4.0~71 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=8a66b0777ce093fcab54ae9cf89a645cc03c6731;p=libsigrok.git Add RL64 and RL64S endianness helper macros --- diff --git a/src/libsigrok-internal.h b/src/libsigrok-internal.h index dc514744..12b556ae 100644 --- a/src/libsigrok-internal.h +++ b/src/libsigrok-internal.h @@ -150,6 +150,35 @@ struct zip_stat; ((uint64_t)((const uint8_t*)(x))[6] << 8) | \ (uint64_t)((const uint8_t*)(x))[7]) +/** + * Read a 64 bits little endian unsigned integer out of memory. + * @param x a pointer to the input memory + * @return the corresponding unsigned integer + */ +#define RL64(x) (((uint64_t)((const uint8_t*)(x))[7] << 56) | \ + ((uint64_t)((const uint8_t*)(x))[6] << 48) | \ + ((uint64_t)((const uint8_t*)(x))[5] << 40) | \ + ((uint64_t)((const uint8_t*)(x))[4] << 32) | \ + ((uint64_t)((const uint8_t*)(x))[3] << 24) | \ + ((uint64_t)((const uint8_t*)(x))[2] << 16) | \ + ((uint64_t)((const uint8_t*)(x))[1] << 8) | \ + (uint64_t)((const uint8_t*)(x))[0]) + +/** + * Read a 64 bits little endian signed integer out of memory. + * @param x a pointer to the input memory + * @return the corresponding unsigned integer + */ +#define RL64S(x) ((int64_t) \ + (((uint64_t)((const uint8_t*)(x))[7] << 56) | \ + ((uint64_t)((const uint8_t*)(x))[6] << 48) | \ + ((uint64_t)((const uint8_t*)(x))[5] << 40) | \ + ((uint64_t)((const uint8_t*)(x))[4] << 32) | \ + ((uint64_t)((const uint8_t*)(x))[3] << 24) | \ + ((uint64_t)((const uint8_t*)(x))[2] << 16) | \ + ((uint64_t)((const uint8_t*)(x))[1] << 8) | \ + (uint64_t)((const uint8_t*)(x))[0])) + /** * Read a 32 bits big endian float out of memory. * @param x a pointer to the input memory