]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Extract and implement more bytes from/to int macros
authorJoel Rosdahl <joel@rosdahl.net>
Wed, 19 Jun 2019 19:54:42 +0000 (21:54 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Wed, 26 Jun 2019 19:14:53 +0000 (21:14 +0200)
src/ccache.h
src/common_header.c
src/int_bytes_conversion.h [new file with mode: 0644]
src/result.c

index 1a809bebecf7203275e20213228ee5dcfb1375e8..4ab06086836bbc8ff2cdf0ff84fe5c3d08fef895 100644 (file)
@@ -280,28 +280,6 @@ bool is_precompiled_header(const char *path);
 typedef int (*COMPAR_FN_T)(const void *, const void *);
 #endif
 
-#define BYTES_FROM_UINT64(bytes_, uint64_) \
-       do { \
-               (bytes_)[0] = uint64_ >> 56 & 0xFF; \
-               (bytes_)[1] = uint64_ >> 48 & 0xFF; \
-               (bytes_)[2] = uint64_ >> 40 & 0xFF; \
-               (bytes_)[3] = uint64_ >> 32 & 0xFF; \
-               (bytes_)[4] = uint64_ >> 24 & 0xFF; \
-               (bytes_)[5] = uint64_ >> 16 & 0xFF; \
-               (bytes_)[6] = uint64_ >>  8 & 0xFF; \
-               (bytes_)[7] = uint64_ >>  0 & 0xFF; \
-       } while (false)
-
-#define UINT64_FROM_BYTES(bytes_) \
-       ((uint64_t)(uint8_t)(bytes_)[0] << 56 | \
-        (uint64_t)(uint8_t)(bytes_)[1] << 48 | \
-        (uint64_t)(uint8_t)(bytes_)[2] << 40 | \
-        (uint64_t)(uint8_t)(bytes_)[3] << 32 | \
-        (uint64_t)(uint8_t)(bytes_)[4] << 24 | \
-        (uint64_t)(uint8_t)(bytes_)[5] << 16 | \
-        (uint64_t)(uint8_t)(bytes_)[6] <<  8 | \
-        (uint64_t)(uint8_t)(bytes_)[7] <<  0)
-
 // Work with silly DOS binary open.
 #ifndef O_BINARY
 #define O_BINARY 0
index cdc6b8327f35482d7a3659bfac6eb3ce75f78668..4d931ac50146139d2e6ba6eb4e41e86962701649 100644 (file)
@@ -15,6 +15,7 @@
 // Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
 #include "ccache.h"
+#include "int_bytes_conversion.h"
 #include "common_header.h"
 
 bool common_header_from_file(struct common_header *header, FILE *f)
diff --git a/src/int_bytes_conversion.h b/src/int_bytes_conversion.h
new file mode 100644 (file)
index 0000000..6671b6a
--- /dev/null
@@ -0,0 +1,67 @@
+#define BYTES_FROM_UINT16(bytes, uint16) \
+       do { \
+               (bytes)[0] = (uint16) >>  8 & 0xFF; \
+               (bytes)[1] = (uint16) >>  0 & 0xFF; \
+       } while (false)
+
+#define UINT16_FROM_BYTES(bytes) \
+       ((uint16_t)(uint8_t)(bytes)[0] <<  8 | \
+        (uint16_t)(uint8_t)(bytes)[1] <<  0)
+
+#define BYTES_FROM_UINT32(bytes, uint32) \
+       do { \
+               (bytes)[0] = (uint32) >> 24 & 0xFF; \
+               (bytes)[1] = (uint32) >> 16 & 0xFF; \
+               (bytes)[2] = (uint32) >>  8 & 0xFF; \
+               (bytes)[3] = (uint32) >>  0 & 0xFF; \
+       } while (false)
+
+#define UINT32_FROM_BYTES(bytes) \
+       ((uint32_t)(uint8_t)(bytes)[0] << 24 | \
+        (uint32_t)(uint8_t)(bytes)[1] << 16 | \
+        (uint32_t)(uint8_t)(bytes)[2] <<  8 | \
+        (uint32_t)(uint8_t)(bytes)[3] <<  0)
+
+#define BYTES_FROM_INT64(bytes, int64) \
+       do { \
+               (bytes)[0] = (int64) >> 56 & 0xFF; \
+               (bytes)[1] = (int64) >> 48 & 0xFF; \
+               (bytes)[2] = (int64) >> 40 & 0xFF; \
+               (bytes)[3] = (int64) >> 32 & 0xFF; \
+               (bytes)[4] = (int64) >> 24 & 0xFF; \
+               (bytes)[5] = (int64) >> 16 & 0xFF; \
+               (bytes)[6] = (int64) >>  8 & 0xFF; \
+               (bytes)[7] = (int64) >>  0 & 0xFF; \
+       } while (false)
+
+#define INT64_FROM_BYTES(bytes) \
+       ((int64_t)(uint8_t)(bytes)[0] << 56 | \
+        (int64_t)(uint8_t)(bytes)[1] << 48 | \
+        (int64_t)(uint8_t)(bytes)[2] << 40 | \
+        (int64_t)(uint8_t)(bytes)[3] << 32 | \
+        (int64_t)(uint8_t)(bytes)[4] << 24 | \
+        (int64_t)(uint8_t)(bytes)[5] << 16 | \
+        (int64_t)(uint8_t)(bytes)[6] <<  8 | \
+        (int64_t)(uint8_t)(bytes)[7] <<  0)
+
+#define BYTES_FROM_UINT64(bytes, uint64) \
+       do { \
+               (bytes)[0] = (uint64) >> 56 & 0xFF; \
+               (bytes)[1] = (uint64) >> 48 & 0xFF; \
+               (bytes)[2] = (uint64) >> 40 & 0xFF; \
+               (bytes)[3] = (uint64) >> 32 & 0xFF; \
+               (bytes)[4] = (uint64) >> 24 & 0xFF; \
+               (bytes)[5] = (uint64) >> 16 & 0xFF; \
+               (bytes)[6] = (uint64) >>  8 & 0xFF; \
+               (bytes)[7] = (uint64) >>  0 & 0xFF; \
+       } while (false)
+
+#define UINT64_FROM_BYTES(bytes) \
+       ((uint64_t)(uint8_t)(bytes)[0] << 56 | \
+        (uint64_t)(uint8_t)(bytes)[1] << 48 | \
+        (uint64_t)(uint8_t)(bytes)[2] << 40 | \
+        (uint64_t)(uint8_t)(bytes)[3] << 32 | \
+        (uint64_t)(uint8_t)(bytes)[4] << 24 | \
+        (uint64_t)(uint8_t)(bytes)[5] << 16 | \
+        (uint64_t)(uint8_t)(bytes)[6] <<  8 | \
+        (uint64_t)(uint8_t)(bytes)[7] <<  0)
index 8b1831c355b7e8b04863d5a177752f6c98865606..43e46d10d06e0cd4c242f9d1da0bc147234a9cf1 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "ccache.h"
 #include "common_header.h"
+#include "int_bytes_conversion.h"
 #include "compression.h"
 #include "result.h"