]> sigrok.org Git - libsigrok.git/commitdiff
Add the RB64 macro.
authorTilman Sauerbeck <redacted>
Mon, 16 Nov 2015 18:47:04 +0000 (19:47 +0100)
committerUwe Hermann <redacted>
Fri, 4 Dec 2015 00:04:33 +0000 (01:04 +0100)
Reads an unsigned 64 bit integer from memory.

src/libsigrok-internal.h

index f3ee2e3b3ec11f820a93d85ea53d8cceb9595971..41754b288ac9a7126953f323c18922c9209d981f 100644 (file)
@@ -116,6 +116,20 @@ struct zip_stat;
                   ((unsigned)((const uint8_t*)(x))[1] <<  8) |  \
                    (unsigned)((const uint8_t*)(x))[0]))
 
+/**
+ * Read a 64 bits big endian unsigned integer out of memory.
+ * @param x a pointer to the input memory
+ * @return the corresponding unsigned integer
+ */
+#define RB64(x)  (((uint64_t)((const uint8_t*)(x))[0] << 56) | \
+                  ((uint64_t)((const uint8_t*)(x))[1] << 48) |  \
+                  ((uint64_t)((const uint8_t*)(x))[2] << 40) |  \
+                  ((uint64_t)((const uint8_t*)(x))[3] << 32) |  \
+                  ((uint64_t)((const uint8_t*)(x))[4] << 24) |  \
+                  ((uint64_t)((const uint8_t*)(x))[5] << 16) |  \
+                  ((uint64_t)((const uint8_t*)(x))[6] <<  8) |  \
+                   (uint64_t)((const uint8_t*)(x))[7])
+
 /**
  * Read a 32 bits big endian float out of memory.
  * @param x a pointer to the input memory