]> granicus.if.org Git - taglib/commitdiff
Run-time check for integer byte order rather than CMake check.
authorTsuda Kageyu <tsuda.kageyu@gmail.com>
Mon, 3 Aug 2015 04:08:58 +0000 (13:08 +0900)
committerTsuda Kageyu <tsuda.kageyu@gmail.com>
Mon, 3 Aug 2015 04:08:58 +0000 (13:08 +0900)
It will easily be optimized out.

ConfigureChecks.cmake
config.h.cmake
taglib/toolkit/tbytevector.cpp
taglib/toolkit/tstring.cpp
taglib/toolkit/tutils.h

index fad3ad340a6f8eabded3aa4c5260e105e155b04c..08ef6a4de13f0bc4719e1f4f3cbd043405c79dee 100644 (file)
@@ -1,7 +1,6 @@
 include(CheckLibraryExists)
 include(CheckTypeSize)
 include(CheckCXXSourceCompiles)
-include(TestBigEndian)
 
 # Check if the size of numeric types are suitable.
 
@@ -35,16 +34,6 @@ if(NOT ${SIZEOF_DOUBLE} EQUAL 8)
   message(FATAL_ERROR "TagLib requires that double is 64-bit wide.")
 endif()
 
-# Determine the CPU byte order.
-
-test_big_endian(IS_BIG_ENDIAN)
-
-if(NOT IS_BIG_ENDIAN)
-  set(SYSTEM_BYTEORDER 1)
-else()
-  set(SYSTEM_BYTEORDER 2)
-endif()
-
 # Determine which kind of atomic operations your compiler supports.
 
 check_cxx_source_compiles("
index 2feded0fe5dbe2050e987973f6145b8474d9b8d7..a001c5c83da328f4bf4b5c30827fe1eca4a1a7d3 100644 (file)
@@ -1,9 +1,5 @@
 /* config.h. Generated by cmake from config.h.cmake */
 
-/* Integer byte order of your target system */
-/* 1 if little-endian, 2 if big-endian. */
-#cmakedefine   SYSTEM_BYTEORDER ${SYSTEM_BYTEORDER}
-
 /* Defined if your compiler supports some byte swap functions */
 #cmakedefine   HAVE_GCC_BYTESWAP_16 1
 #cmakedefine   HAVE_GCC_BYTESWAP_32 1
index ca1c30bcdbd0322165ddd538b67e665c1a5838c8..6262bec6e9e06cd2091d61913ebb5f8c2cb1c0d5 100644 (file)
@@ -209,7 +209,7 @@ T toNumber(const ByteVector &v, size_t offset, size_t length, bool mostSignifica
 template <class T>
 T toNumber(const ByteVector &v, size_t offset, bool mostSignificantByteFirst)
 {
-  static const bool isBigEndian = (Utils::SystemByteOrder == Utils::BigEndian);
+  const bool isBigEndian = (Utils::systemByteOrder() == Utils::BigEndian);
   const bool swap = (mostSignificantByteFirst != isBigEndian);
 
   if(offset + sizeof(T) > v.size())
@@ -228,7 +228,7 @@ T toNumber(const ByteVector &v, size_t offset, bool mostSignificantByteFirst)
 template <class T>
 ByteVector fromNumber(T value, bool mostSignificantByteFirst)
 {
-  static const bool isBigEndian = (Utils::SystemByteOrder == Utils::BigEndian);
+  const bool isBigEndian = (Utils::systemByteOrder() == Utils::BigEndian);
   const bool swap = (mostSignificantByteFirst != isBigEndian);
 
   if(swap)
index 15db518d1a944006b58b923b16e7d2b2505ae0db..258e1fcf54f16af34e423262c005bb3f404405b4 100644 (file)
@@ -828,7 +828,7 @@ void String::copyFromUTF16(const char *s, size_t length, Type t)
 }
 
 const String::Type String::WCharByteOrder
-  = (Utils::SystemByteOrder == Utils::BigEndian) ? String::UTF16BE : String::UTF16LE;
+  = (Utils::systemByteOrder() == Utils::BigEndian) ? String::UTF16BE : String::UTF16LE;
 
 }
 
index a1ca76fb6bfced93486ba3082b413e581f0c1d17..9116c2c37276866565d15e40e00563e11ce509af 100644 (file)
@@ -216,20 +216,9 @@ namespace TagLib
       BigEndian
     };
 
-#ifdef SYSTEM_BYTEORDER
-
-# if SYSTEM_BYTEORDER == 1
-
-    const ByteOrder SystemByteOrder = LittleEndian;
-
-# else
-
-    const ByteOrder SystemByteOrder = BigEndian;
-
-# endif
-
-#else
-
+    /*!
+     * Returns the integer byte order of the system.
+     */
     inline ByteOrder systemByteOrder()
     {
       union {
@@ -244,10 +233,6 @@ namespace TagLib
         return BigEndian;
     }
 
-    const ByteOrder SystemByteOrder = systemByteOrder();
-
-#endif
-
     /*!
      * Returns the IEEE754 byte order of the system.
      */