]> granicus.if.org Git - taglib/commitdiff
Detect <codecvt> header automatically
authorTsuda kageyu <tsuda.kageyu@gmail.com>
Wed, 17 Apr 2013 15:32:14 +0000 (00:32 +0900)
committerTsuda kageyu <tsuda.kageyu@gmail.com>
Wed, 17 Apr 2013 15:32:14 +0000 (00:32 +0900)
ConfigureChecks.cmake
config-taglib.h.cmake
taglib/toolkit/tstring.cpp

index e4a6d1fac59c91dafb29d9b30cafffd17b397ec2..4b8f512ec07a766e81595877706edf29ea27682f 100644 (file)
@@ -14,6 +14,13 @@ else()
        set(HAVE_ZLIB 0)
 endif()
 
+# Determine whether your compiler supports codecvt header.
+
+check_cxx_source_compiles("
+       #include <codecvt>
+       int main() { std::codecvt_utf8_utf16<wchar_t> x; return 0; }
+" HAVE_CODECVT)
+
 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
 find_package(CppUnit)
 if(NOT CppUnit_FOUND AND BUILD_TESTS)
index 9c2f487d1dea0e501d06f42b7af82c9205e5253a..9fcc29a4564f7213f72b6d6104282c5fbdba9cf6 100644 (file)
@@ -3,6 +3,9 @@
 /* Define if you have libz */
 #cmakedefine   HAVE_ZLIB 1
 
+/* Defined if your compiler has <codecvt> header */
+#cmakedefine   HAVE_CODECVT 1
+
 #cmakedefine   NO_ITUNES_HACKS 1
 #cmakedefine   WITH_ASF 1
 #cmakedefine   WITH_MP4 1
index 219d3daf6ceb48fed46f8926bb818236b694072d..bb0b0b9390d73181d727c2cd291cafd5ff3d1a87 100644 (file)
 
 // This class assumes that std::basic_string<T> has a contiguous and null-terminated buffer.
 
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
 #include "tstring.h"
 #include "tdebug.h"
 #include "tstringlist.h"
 #include <iostream>
 #include <string.h>
 
-// Determine if the compiler supports codecvt.
-
-#if (defined(_MSC_VER) && _MSC_VER >= 1600)
-# define TAGLIB_USE_CODECVT
-#endif
-
-#ifdef TAGLIB_USE_CODECVT
+#ifdef HAVE_CODECVT
 # include <codecvt>
-typedef std::codecvt_utf8_utf16<wchar_t> utf8_utf16_t;
+namespace {
+  typedef std::codecvt_utf8_utf16<wchar_t> utf8_utf16_t;
+}
 #else
 # include "unicode.h"
 #endif
@@ -202,7 +202,7 @@ std::string String::to8Bit(bool unicode) const
   else {
     s.resize(d->data.size() * 4 + 1);
 
-#ifdef TAGLIB_USE_CODECVT
+#ifdef HAVE_CODECVT
 
     std::mbstate_t st = 0;
     const wchar_t *source;
@@ -371,7 +371,7 @@ ByteVector String::data(Type t) const
     {
       ByteVector v(size() * 4 + 1, 0);
 
-#ifdef TAGLIB_USE_CODECVT
+#ifdef HAVE_CODECVT
 
       std::mbstate_t st = 0;
       const wchar_t *source;
@@ -730,7 +730,7 @@ void String::copyFromUTF8(const char *s, size_t length)
 {
   d->data.resize(length);
 
-#ifdef TAGLIB_USE_CODECVT
+#ifdef HAVE_CODECVT
 
   std::mbstate_t st = 0;
   const char *source;