Kevin Puetz : include: Introduce WINE_UNICODE_CHAR16 that allows using char16_t as Windows WCHAR.

Alexandre Julliard julliard at winehq.org
Wed Feb 12 16:21:04 CST 2020


Module: wine
Branch: master
Commit: c2679945dd1ffddbc8e8a43dc7263be7738d4a4e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=c2679945dd1ffddbc8e8a43dc7263be7738d4a4e

Author: Kevin Puetz <PuetzKevinA at JohnDeere.com>
Date:   Tue Feb 11 19:52:22 2020 +0100

include: Introduce WINE_UNICODE_CHAR16 that allows using char16_t as Windows WCHAR.

This is useful for winelib applications that don't use -fshort-wchar.
They may use u"" for string literals and u16string. However, C++ has
builtin char16_t type, so we need WCHAR to be compatible with that.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 include/sqltypes.h | 4 +++-
 include/tchar.h    | 4 +++-
 include/winnt.h    | 9 ++++++---
 include/winnt.rh   | 6 ++++--
 4 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/include/sqltypes.h b/include/sqltypes.h
index 4f3f8fe9f1..0923f6b362 100644
--- a/include/sqltypes.h
+++ b/include/sqltypes.h
@@ -28,8 +28,10 @@ extern "C" {
 #endif
 
 typedef unsigned char   SQLCHAR;
-#ifdef WINE_UNICODE_NATIVE
+#if defined(WINE_UNICODE_NATIVE)
 typedef wchar_t         SQLWCHAR;
+#elif defined(WINE_UNICODE_CHAR16)
+typedef char16_t        SQLWCHAR;
 #else
 typedef unsigned short  SQLWCHAR;
 #endif
diff --git a/include/tchar.h b/include/tchar.h
index 5234a70bd9..d5e4983756 100644
--- a/include/tchar.h
+++ b/include/tchar.h
@@ -244,8 +244,10 @@ typedef unsigned short wctype_t;
 #endif
 
 #ifndef __TCHAR_DEFINED
-#ifdef WINE_UNICODE_NATIVE
+#if defined(WINE_UNICODE_NATIVE)
 typedef wchar_t       _TCHAR;
+#elif defined(WINE_UNICODE_CHAR16)
+typedef char16_t      _TCHAR;
 #else
 typedef unsigned short _TCHAR;
 #endif
diff --git a/include/winnt.h b/include/winnt.h
index adc5d3d686..adb7ef5669 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -463,11 +463,14 @@ typedef int             LONG,       *PLONG;
 #endif
 
 /* Some systems might have wchar_t, but we really need 16 bit characters */
-#ifdef WINE_UNICODE_NATIVE
-typedef wchar_t         WCHAR,      *PWCHAR;
+#if defined(WINE_UNICODE_NATIVE)
+typedef wchar_t         WCHAR;
+#elif defined(WINE_UNICODE_CHAR16)
+typedef char16_t        WCHAR;
 #else
-typedef unsigned short  WCHAR,      *PWCHAR;
+typedef unsigned short  WCHAR;
 #endif
+typedef WCHAR          *PWCHAR;
 
 typedef ULONG           UCSCHAR;
 #define MIN_UCSCHAR                 (0)
diff --git a/include/winnt.rh b/include/winnt.rh
index 59791bc996..786a38f326 100644
--- a/include/winnt.rh
+++ b/include/winnt.rh
@@ -24,10 +24,12 @@
  * macro which only exists in the user's code.
  */
 #ifndef WINE_NO_UNICODE_MACROS
-# ifdef UNICODE
+# ifndef UNICODE
+#  define __TEXT(string) string
+# elif defined(WINE_UNICODE_NATIVE)
 #  define __TEXT(string) L##string
 # else
-#  define __TEXT(string) string
+#  define __TEXT(string) u##string
 # endif
 # define TEXT(string) __TEXT(string)
 #endif




More information about the wine-cvs mailing list