]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/wxchar.h
Window management and sizer layout corrections
[wxWidgets.git] / include / wx / wxchar.h
index cd4a4957accf8c42ff470694bf18ef9d6401386d..462da579d693fa6f274d85ad7f92216eb8960cfa 100644 (file)
         #define wxHAVE_TCHAR_FUNCTIONS
     #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x520)
         #define wxHAVE_TCHAR_FUNCTIONS
         #define wxHAVE_TCHAR_FUNCTIONS
     #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x520)
         #define wxHAVE_TCHAR_FUNCTIONS
-    // w32api isn't yet tchar safe, will be soon, this is a placeholder
-    #elif defined(__GNUWIN32__) && wxCHECK_W32API_VERSION( 10, 0 )
+    #elif defined(__MINGW32__) && wxCHECK_W32API_VERSION( 1, 0 )
         #define wxHAVE_TCHAR_FUNCTIONS
         #include <stddef.h>
         #include <string.h>
         #include <ctype.h>
         #define wxHAVE_TCHAR_FUNCTIONS
         #include <stddef.h>
         #include <string.h>
         #include <ctype.h>
+    #elif defined(__CYGWIN__)
+        #define HAVE_WCSLEN
+        #include <stddef.h>
+        #include <wchar.h>
     #endif
 #elif defined(__VISAGECPP__) && (__IBMCPP__ >= 400)
     // VisualAge 4.0+ supports TCHAR
     #endif
 #elif defined(__VISAGECPP__) && (__IBMCPP__ >= 400)
     // VisualAge 4.0+ supports TCHAR
     // time.h functions  -- none defined in tchar.h
     #define  wxAsctime   asctime
     #define  wxCtime     ctime
     // time.h functions  -- none defined in tchar.h
     #define  wxAsctime   asctime
     #define  wxCtime     ctime
+#elif defined(__MWERKS__)
+    // for wcslen
+    #if wxUSE_WCHAR_T
+    #include <wchar.h>
+    #endif
 #endif // compilers with (good) TCHAR support
 
 #ifdef wxHAVE_TCHAR_FUNCTIONS
 #endif // compilers with (good) TCHAR support
 
 #ifdef wxHAVE_TCHAR_FUNCTIONS
@@ -177,6 +185,7 @@ typedef  _TUCHAR     wxUChar;
 #  define  wxStrcspn   _tcscspn
 #  define  wxStrftime  _tcsftime
 #  define  wxStricmp   _tcsicmp
 #  define  wxStrcspn   _tcscspn
 #  define  wxStrftime  _tcsftime
 #  define  wxStricmp   _tcsicmp
+#  define  wxStrnicmp  _tcsnicmp
 #  define  wxStrlen_   _tcslen // used in wxStrlen inline function
 #  define  wxStrncat   _tcsncat
 #  define  wxStrncmp   _tcsncmp
 #  define  wxStrlen_   _tcslen // used in wxStrlen inline function
 #  define  wxStrncat   _tcsncat
 #  define  wxStrncmp   _tcsncmp
@@ -193,6 +202,13 @@ typedef  _TUCHAR     wxUChar;
 
    // stdio.h functions
 #ifndef wxNO_TCHAR_STDIO
 
    // stdio.h functions
 #ifndef wxNO_TCHAR_STDIO
+#  if wxUSE_UNICODE_MSLU
+#    define  wxRemove    wxMSLU__tremove
+#    define  wxRename    wxMSLU__trename
+#  else
+#    define  wxRemove    _tremove
+#    define  wxRename    _trename
+#  endif
 #  define  wxFgetc     _fgettc
 #  define  wxFgetchar  _fgettchar
 #  define  wxFgets     _fgetts
 #  define  wxFgetc     _fgettc
 #  define  wxFgetchar  _fgettchar
 #  define  wxFgets     _fgetts
@@ -210,8 +226,6 @@ typedef  _TUCHAR     wxUChar;
 #  define  wxPutc      _puttc
 #  define  wxPutchar   _puttchar
 #  define  wxPuts      _putts
 #  define  wxPutc      _puttc
 #  define  wxPutchar   _puttchar
 #  define  wxPuts      _putts
-#  define  wxRemove    _tremove
-#  define  wxRename    _trename
 #  define  wxScanf     _tscanf
 #  define  wxSprintf   _stprintf
 #  define  wxSscanf    _stscanf
 #  define  wxScanf     _tscanf
 #  define  wxSprintf   _stprintf
 #  define  wxSscanf    _stscanf
@@ -265,7 +279,7 @@ typedef  _TUCHAR     wxUChar;
 #    if defined(__VISUALC__) && (__VISUALC__ < 900)
 #      define wxUSE_WCHAR_T 0 // wchar_t is not available for MSVC++ 1.5
 #    elif defined(__UNIX__)
 #    if defined(__VISUALC__) && (__VISUALC__ < 900)
 #      define wxUSE_WCHAR_T 0 // wchar_t is not available for MSVC++ 1.5
 #    elif defined(__UNIX__)
-#      if defined(HAVE_WCSTR_H) || defined(HAVE_WCHAR_H) || defined(__FreeBSD__)
+#      if defined(HAVE_WCSTR_H) || defined(HAVE_WCHAR_H) || defined(__FreeBSD__) || defined(__DARWIN__)
 #        define wxUSE_WCHAR_T 1
 #      else
 #        define wxUSE_WCHAR_T 0
 #        define wxUSE_WCHAR_T 1
 #      else
 #        define wxUSE_WCHAR_T 0
@@ -276,8 +290,8 @@ typedef  _TUCHAR     wxUChar;
 #      define wxUSE_WCHAR_T 0
 #    elif defined(__WATCOMC__)
 #      define wxUSE_WCHAR_T 0
 #      define wxUSE_WCHAR_T 0
 #    elif defined(__WATCOMC__)
 #      define wxUSE_WCHAR_T 0
-#    elif defined(__VISAGECPP__) && (__IBMCPP__ >= 400)
-#      define wxUSE_WCHAR_T 1
+#    elif defined(__VISAGECPP__) && (__IBMCPP__ < 400)
+#      define wxUSE_WCHAR_T 0
 #    else
   // add additional compiler checks if this fails
 #      define wxUSE_WCHAR_T 1
 #    else
   // add additional compiler checks if this fails
 #      define wxUSE_WCHAR_T 1
@@ -288,11 +302,17 @@ typedef  _TUCHAR     wxUChar;
 #    ifdef HAVE_WCSTR_H
 #      include <wcstr.h>
 #    else
 #    ifdef HAVE_WCSTR_H
 #      include <wcstr.h>
 #    else
-#      if defined(__FreeBSD__) || (defined(__APPLE__) && defined(__UNIX__))
-#        include <stdlib.h>
-#        define wxNEED_WCSLEN
-#      else
+#      if defined(HAVE_WCHAR_H)
+
+// include wchar.h to get wcslen() declaration used by wx/buffer.h
 #        include <wchar.h>
 #        include <wchar.h>
+
+#      elif defined(__FreeBSD__) || defined(__DARWIN__) || defined(__EMX__)
+
+// include stdlib.h for wchar_t, wcslen is provided in wxchar.cpp
+#        include <stdlib.h>
+size_t   WXDLLEXPORT wcslen(const wchar_t *s);
+
 #      endif
 #    endif
 #  endif
 #      endif
 #    endif
 #  endif
@@ -378,7 +398,7 @@ typedef unsigned __WCHAR_TYPE__ wxUChar;
 #     define wxUChar unsigned char
 #   endif
 
 #     define wxUChar unsigned char
 #   endif
 
-#   if defined(__FreeBSD__) || (defined(__APPLE__) && defined(__UNIX__))
+#   if defined(__FreeBSD__) || defined(__DARWIN__)
 #     undef _T
 #   endif
 
 #     undef _T
 #   endif
 
@@ -425,7 +445,7 @@ typedef unsigned __WCHAR_TYPE__ wxUChar;
 
 // define wxStricmp for various compilers without Unicode possibilities
 #if !defined(wxStricmp) && !wxUSE_UNICODE
 
 // define wxStricmp for various compilers without Unicode possibilities
 #if !defined(wxStricmp) && !wxUSE_UNICODE
-#  if defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__SALFORDC__) || defined(__VISAGECPP__) || defined(__EMX__)
+#  if defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__SALFORDC__) || defined(__VISAGECPP__) || defined(__EMX__) || defined(__DJGPP__)
 #    define wxStricmp stricmp
 #    define wxStrnicmp strnicmp
 #  elif defined(__SC__) || defined(__VISUALC__) || (defined(__MWERKS__) && defined(__INTEL__))
 #    define wxStricmp stricmp
 #    define wxStrnicmp strnicmp
 #  elif defined(__SC__) || defined(__VISUALC__) || (defined(__MWERKS__) && defined(__INTEL__))
@@ -452,7 +472,9 @@ typedef unsigned __WCHAR_TYPE__ wxUChar;
 #    define  wxStrcoll   strcoll
 #    define  wxStrcpy    strcpy
 #    define  wxStrcspn   strcspn
 #    define  wxStrcoll   strcoll
 #    define  wxStrcpy    strcpy
 #    define  wxStrcspn   strcspn
+#if !defined(__MWERKS__) || !defined(__WXMAC__)
 #    define  wxStrdup    strdup
 #    define  wxStrdup    strdup
+#endif
 #    define  wxStrlen_   strlen // used in wxStrlen inline function
 #    define  wxStrncat   strncat
 #    define  wxStrncmp   strncmp
 #    define  wxStrlen_   strlen // used in wxStrlen inline function
 #    define  wxStrncat   strncat
 #    define  wxStrncmp   strncmp
@@ -517,11 +539,6 @@ typedef unsigned __WCHAR_TYPE__ wxUChar;
 #  endif
 #endif //!Unicode
 
 #  endif
 #endif //!Unicode
 
-#if defined(wxNEED_WCSLEN) && wxUSE_UNICODE
-#  define wcslen wxStrlen
-#  undef wxNEED_WCSLEN
-#endif
-
 // checks whether the passed in pointer is NULL and if the string is empty
 inline bool wxIsEmpty(const wxChar *p) { return !p || !*p; }
 
 // checks whether the passed in pointer is NULL and if the string is empty
 inline bool wxIsEmpty(const wxChar *p) { return !p || !*p; }
 
@@ -567,6 +584,10 @@ WXDLLEXPORT wxChar * wxStrdup(const wxChar *psz);
 WXDLLEXPORT int      wxStricmp(const wxChar *psz1, const wxChar *psz2);
 #endif
 
 WXDLLEXPORT int      wxStricmp(const wxChar *psz1, const wxChar *psz2);
 #endif
 
+#ifndef wxStrnicmp
+WXDLLEXPORT int      wxStrnicmp(const wxChar *psz1, const wxChar *psz2, size_t len);
+#endif
+
 #ifndef wxStrtok
 WXDLLEXPORT wxChar * wxStrtok(wxChar *psz, const wxChar *delim, wxChar **save_ptr);
 #endif
 #ifndef wxStrtok
 WXDLLEXPORT wxChar * wxStrtok(wxChar *psz, const wxChar *delim, wxChar **save_ptr);
 #endif
@@ -576,10 +597,6 @@ class wxWCharBuffer;
 WXDLLEXPORT wxWCharBuffer wxSetlocale(int category, const wxChar *locale);
 #endif
 
 WXDLLEXPORT wxWCharBuffer wxSetlocale(int category, const wxChar *locale);
 #endif
 
-#ifdef wxNEED_WCSLEN // for use in buffer.h
-WXDLLEXPORT size_t   wcslen(const wchar_t *s);
-#endif
-
 #ifdef wxNEED_WX_CTYPE_H
 WXDLLEXPORT int wxIsalnum(wxChar ch);
 WXDLLEXPORT int wxIsalpha(wxChar ch);
 #ifdef wxNEED_WX_CTYPE_H
 WXDLLEXPORT int wxIsalnum(wxChar ch);
 WXDLLEXPORT int wxIsalpha(wxChar ch);
@@ -665,12 +682,22 @@ WXDLLEXPORT size_t   wxStrftime(wxChar *s, size_t max, const wxChar *fmt, const
 // and _() in wxWindows sources
 #define wxT(x)       _T(x)
 
 // and _() in wxWindows sources
 #define wxT(x)       _T(x)
 
-// a Unicode-friendly __FILE__ analog
+// Unicode-friendly __FILE__, __DATE__ and __TIME__ analogs
 #ifndef __TFILE__
     #define __XFILE__(x) wxT(x)
     #define __TFILE__ __XFILE__(__FILE__)
 #endif
 
 #ifndef __TFILE__
     #define __XFILE__(x) wxT(x)
     #define __TFILE__ __XFILE__(__FILE__)
 #endif
 
+#ifndef __TDATE__
+    #define __XDATE__(x) wxT(x)
+    #define __TDATE__ __XDATE__(__DATE__)
+#endif
+
+#ifndef __TTIME__
+    #define __XTIME__(x) wxT(x)
+    #define __TTIME__ __XTIME__(__TIME__)
+#endif
+
 #endif
   //_WX_WXCHAR_H_
 
 #endif
   //_WX_WXCHAR_H_