Index: base/sys_byteorder.h |
diff --git a/base/sys_byteorder.h b/base/sys_byteorder.h |
index 8d9066c70228bfd7c36ec0cb3a2afe30dc006a2d..051f3e22c7cf696ba14d4b1a184b36fb20e681c3 100644 |
--- a/base/sys_byteorder.h |
+++ b/base/sys_byteorder.h |
@@ -46,6 +46,20 @@ inline uint64_t ByteSwap(uint64_t x) { |
#endif |
} |
+inline uintptr_t ByteSwapUintPtrT(uintptr_t x) { |
+#if defined(ARCH_CPU_64_BITS) |
+ static_assert(sizeof(uint64_t) == sizeof(uintptr_t), |
+ "uintptr_t not the same as uint64_t"); |
+ return ByteSwap(static_cast<uint64_t>(x)); |
+#elif defined(ARCH_CPU_32_BITS) |
+ static_assert(sizeof(uint32_t) == sizeof(uintptr_t), |
+ "uintptr_t not the same as uinti32_t"); |
gab
2016/12/09 21:01:56
nit: typo s/uinti32_t/uint32_t/
|
+ return ByteSwap(static_cast<uint32_t>(x)); |
+#else |
+#error architecture not supported |
+#endif |
+} |
+ |
// Converts the bytes in |x| from host order (endianness) to little endian, and |
// returns the result. |
inline uint16_t ByteSwapToLE16(uint16_t x) { |