]> git.saurik.com Git - wxWidgets.git/commitdiff
wxUniChar wchar_t handling fixes for Borland, DMC and Watcom compilers
authorVáclav Slavík <vslavik@fastmail.fm>
Fri, 29 Jun 2007 19:11:09 +0000 (19:11 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Fri, 29 Jun 2007 19:11:09 +0000 (19:11 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47028 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

configure
configure.in
include/wx/unichar.h

index 3eebc8b056a8f576e5ecc731dcca4ca0b2255eba..21816299f57d0044afce375909d094c994611da3 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Id: configure.in 46702 2007-06-26 11:58:21Z VS .
+# From configure.in Id: configure.in 46713 2007-06-26 20:44:58Z VS .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.61 for wxWidgets 2.9.0.
 #
@@ -34143,6 +34143,11 @@ if test "$wx_cv_wchar_t_is_separate_type" = "yes"; then
 #define wxWCHAR_T_IS_SEPARATE_TYPE 1
 _ACEOF
 
+else
+    cat >>confdefs.h <<\_ACEOF
+#define wxWCHAR_T_IS_SEPARATE_TYPE 0
+_ACEOF
+
 fi
 
 ac_ext=c
index 921f809ca249cc7f4d1531f58398598710f06a29..8f44affcb83dbecd8393f11f04562d454da74234 100644 (file)
@@ -4430,7 +4430,9 @@ AC_CACHE_CHECK([if wchar_t is separate type],
 )
 
 if test "$wx_cv_wchar_t_is_separate_type" = "yes"; then
-    AC_DEFINE(wxWCHAR_T_IS_SEPARATE_TYPE)
+    AC_DEFINE(wxWCHAR_T_IS_SEPARATE_TYPE, 1)
+else
+    AC_DEFINE(wxWCHAR_T_IS_SEPARATE_TYPE, 0)
 fi
 
 AC_LANG_POP() dnl C++
index 0d7c5a681bd30d0a1273695feb89ebdfb565e645..8c61a2c898d31b0b0c067c0cdf2161181a7ecae9 100644 (file)
 #include "wx/stringimpl.h"
 
 #ifndef wxWCHAR_T_IS_SEPARATE_TYPE
-    #ifdef __GNUG__
-        #define wxWCHAR_T_IS_SEPARATE_TYPE
-    #endif
-    #if defined(__VISUALC__) && defined(_NATIVE_WCHAR_T_DEFINED)
-        #define wxWCHAR_T_IS_SEPARATE_TYPE
+    // older versions of VC++ have wchar_t as typedef by default; this is
+    // configurable, so we have to check which behaviour is enabled
+    #if defined(__VISUALC__) && !defined(_NATIVE_WCHAR_T_DEFINED)
+        #define wxWCHAR_T_IS_SEPARATE_TYPE 0
+    #else
+        #define wxWCHAR_T_IS_SEPARATE_TYPE 1
     #endif
 #endif
 
 // helper macro for doing something dependent on whether wchar_t is or isn't a
 // typedef inside another macro
-#ifdef wxWCHAR_T_IS_SEPARATE_TYPE
+#if wxWCHAR_T_IS_SEPARATE_TYPE
     #define wxIF_WCHAR_T_TYPE(x) x
 #else // !wxWCHAR_T_IS_SEPARATE_TYPE
     #define wxIF_WCHAR_T_TYPE(x)
@@ -53,7 +54,7 @@ public:
     wxUniChar(unsigned char c) { m_value = From8bit((char)c); }
 
     // Create the character from a wchar_t character value.
-#ifdef wxWCHAR_T_IS_SEPARATE_TYPE
+#if wxWCHAR_T_IS_SEPARATE_TYPE
     wxUniChar(wchar_t c) { m_value = c; }
 #endif
 
@@ -90,7 +91,7 @@ public:
     // functions
     operator char() const { return To8bit(m_value); }
     operator unsigned char() const { return (unsigned char)To8bit(m_value); }
-#ifdef wxWCHAR_T_IS_SEPARATE_TYPE
+#if wxWCHAR_T_IS_SEPARATE_TYPE
     operator wchar_t() const { return m_value; }
 #endif
     operator int() const { return m_value; }
@@ -116,7 +117,7 @@ public:
     wxUniChar& operator=(const wxUniChar& c) { m_value = c.m_value; return *this; }
     wxUniChar& operator=(char c) { m_value = From8bit(c); return *this; }
     wxUniChar& operator=(unsigned char c) { m_value = From8bit((char)c); return *this; }
-#ifdef wxWCHAR_T_IS_SEPARATE_TYPE
+#if wxWCHAR_T_IS_SEPARATE_TYPE
     wxUniChar& operator=(wchar_t c) { m_value = c; return *this; }
 #endif
     wxUniChar& operator=(int c) { m_value = c; return *this; }
@@ -211,7 +212,7 @@ public:
 
     wxUniCharRef& operator=(char c) { return *this = wxUniChar(c); }
     wxUniCharRef& operator=(unsigned char c) { return *this = wxUniChar(c); }
-#ifdef wxWCHAR_T_IS_SEPARATE_TYPE
+#if wxWCHAR_T_IS_SEPARATE_TYPE
     wxUniCharRef& operator=(wchar_t c) { return *this = wxUniChar(c); }
 #endif
     wxUniCharRef& operator=(int c) { return *this = wxUniChar(c); }
@@ -224,7 +225,7 @@ public:
     // Conversions to the same types as wxUniChar is convertible too:
     operator char() const { return UniChar(); }
     operator unsigned char() const { return UniChar(); }
-#ifdef wxWCHAR_T_IS_SEPARATE_TYPE
+#if wxWCHAR_T_IS_SEPARATE_TYPE
     operator wchar_t() const { return UniChar(); }
 #endif
     operator int() const { return UniChar(); }