From a3c8f8efbfa31f9c093237dd8647bff9554efeac Mon Sep 17 00:00:00 2001
From: Jan Breuer <jan.breuer@jaybee.cz>
Date: 周五, 13 11月 2015 08:38:44 +0800
Subject: [PATCH] Fix warnings and override bug in GCC

---
 libscpi/src/utils.c |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/libscpi/src/utils.c b/libscpi/src/utils.c
index f69428d..eaa3b35 100644
--- a/libscpi/src/utils.c
+++ b/libscpi/src/utils.c
@@ -928,3 +928,54 @@
     strncpy(__s, buffer, __ssize);
     return __s;
 }
+
+/**
+ * Get native CPU endiannes
+ * @return 
+ */
+scpi_array_format_t SCPI_GetNativeFormat(void) {
+    union {
+        uint32_t i;
+        char c[4];
+    } bint = {0x01020304};
+
+    return bint.c[0] == 1 ? SCPI_FORMAT_BIGENDIAN : SCPI_FORMAT_LITTLEENDIAN;
+}
+
+/**
+ * Swap 16bit number
+ * @param val
+ * @return 
+ */
+uint16_t SCPI_Swap16(uint16_t val) {
+    return ((val & 0x00FF) << 8) | 
+            ((val & 0xFF00) >> 8);
+}
+
+/**
+ * Swap 32bit number
+ * @param val
+ * @return 
+ */
+uint32_t SCPI_Swap32(uint32_t val) {
+    return ((val & 0x000000FF) << 24) |
+            ((val & 0x0000FF00) << 8) |
+            ((val & 0x00FF0000) >> 8) |
+            ((val & 0xFF000000) >> 24);
+}
+
+/**
+ * Swap 64bit number
+ * @param val
+ * @return 
+ */
+uint64_t SCPI_Swap64(uint64_t val) {
+    return ((val & 0x00000000000000FFul) << 56) |
+            ((val & 0x000000000000FF00ul) << 40) |
+            ((val & 0x0000000000FF0000ul) << 24) |
+            ((val & 0x00000000FF000000ul) << 8) |
+            ((val & 0x000000FF00000000ul) >> 8) |
+            ((val & 0x0000FF0000000000ul) >> 24) |
+            ((val & 0x00FF000000000000ul) >> 40) |
+            ((val & 0xFF00000000000000ul) >> 56);
+}
\ No newline at end of file

--
Gitblit v1.9.1