X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d8339072302116b4b5b489c0304bb313001144a5..43790a0d0386ba63c967545cea7487df2db6e966:/include/wx/wxchar.h diff --git a/include/wx/wxchar.h b/include/wx/wxchar.h index 5ca84cdbe1..99cf662689 100644 --- a/include/wx/wxchar.h +++ b/include/wx/wxchar.h @@ -2,10 +2,10 @@ * Name: wx/wxchar.h * Purpose: Declarations common to wx char/wchar_t usage (wide chars) * Author: Joel Farley, Ove Kåven - * Modified by: Vadim Zeitlin, Robert Roebling + * Modified by: Vadim Zeitlin, Robert Roebling, Ron Lee * Created: 1998/06/12 * RCS-ID: $Id$ - * Copyright: (c) 1998-2002 wxWindows dev team + * Copyright: (c) 1998-2002 wxWidgets dev team * Licence: wxWindows licence */ @@ -22,10 +22,7 @@ /* check whether we have wchar_t and which size it is if we do */ #if !defined(wxUSE_WCHAR_T) - #if defined(__WIN16__) - /* no wchar_t under Win16 regadrless of compiler used */ - #define wxUSE_WCHAR_T 0 - #elif defined(__UNIX__) + #if defined(__UNIX__) #if defined(HAVE_WCSTR_H) || defined(HAVE_WCHAR_H) || defined(__FreeBSD__) || defined(__DARWIN__) #define wxUSE_WCHAR_T 1 #else @@ -51,7 +48,7 @@ /* Standard headers we need here. - NB: don't include any wxWindows headers here because almost of them include + NB: don't include any wxWidgets headers here because almost of them include this one! */ @@ -76,6 +73,11 @@ #define HAVE_WCHAR_H #endif #endif +#if defined(__MWERKS__) && !defined(__MACH__) + #ifndef HAVE_WCSLEN + #define HAVE_WCSLEN + #endif +#endif #if wxUSE_WCHAR_T #ifdef HAVE_WCHAR_H @@ -176,7 +178,7 @@ typedef wchar_t wxSChar; typedef wchar_t wxUChar; #else /* __WCHAR_TYPE__ and gcc < 2.96 */ - /* VS: wxWindows used to define wxChar as __WCHAR_TYPE__ here. However, */ + /* VS: wxWidgets used to define wxChar as __WCHAR_TYPE__ here. However, */ /* this doesn't work with new GCC 3.x compilers because wchar_t is */ /* C++'s builtin type in the new standard. OTOH, old compilers (GCC */ /* 2.x) won't accept new definition of wx{S,U}Char, therefore we */ @@ -210,7 +212,7 @@ /* although global macros with such names are normally bad, we want to have */ /* another name for _T() which should be used to avoid confusion between _T() */ -/* and _() in wxWindows sources */ +/* and _() in wxWidgets sources */ #define wxT(x) _T(x) /* Unicode-friendly __FILE__, __DATE__ and __TIME__ analogs */ @@ -303,13 +305,11 @@ #define wxPuts _putts #define wxScanf _tscanf #if defined(__DMC__) - /* Digital Mars adds count to _stprintf (C99) so it does not fit wxWindows needs */ - /* and there is a bug in D Mars tchar.h prior to 8.39.4n, so define as sprintf */ - /* for non-unicode builds CE */ - /* Unicode broken 10 Feb 04 Fixme */ #if wxUSE_UNICODE - #define wxSprintf swprintf + /* Digital Mars adds count to _stprintf (C99) so prototype conversion see wxchar.cpp */ + int wxSprintf (wchar_t * __RESTRICT s, const wchar_t * __RESTRICT format, ... ) ; #else + /* and there is a bug in D Mars tchar.h prior to 8.39.4n, so define as sprintf */ #define wxSprintf sprintf #endif #else @@ -440,7 +440,7 @@ #define wxNEED_WX_STDIO_H #define wxNEED_WX_STDLIB_H #define wxNEED_WX_TIME_H - #elif defined(__MWERKS__) && ( defined(macintosh) || defined(__MACH__) ) + #elif defined(__MWERKS__) && ( defined(__MSL__) || defined(__MACH__) ) /* ctype.h functions (wctype.h) */ #define wxIsalnum iswalnum #define wxIsalpha iswalpha @@ -497,12 +497,15 @@ #define wxNEED_WX_STDIO_H /* stdlib.h functions */ + #ifdef __MACH__ + #define wxNEED_WX_STDLIB_H + #else #define wxAtof watof #define wxAtoi watoi #define wxAtol watol #define wxGetenv(a) ((wxChar*)NULL) #define wxSystem(a) ((int)NULL) - + #endif /* time.h functions */ #define wxAsctime wasciitime #define wxCtime wctime @@ -626,7 +629,7 @@ #elif defined(__UNIX__) || defined(__GNUWIN32__) #define wxStricmp strcasecmp #define wxStrnicmp strncasecmp - /* #else -- use wxWindows implementation */ + /* #else -- use wxWidgets implementation */ #endif #endif /* !defined(wxStricmp) */ @@ -637,6 +640,10 @@ #ifdef HAVE_WCSLEN #define wxWcslen wcslen #else + #if defined( __WXMAC_XCODE__ ) && !defined( __cplusplus ) + /* xcode native targets are giving multiply defined symbols on regex */ + static + #endif inline size_t wxWcslen(const wchar_t *s) { size_t n = 0; @@ -710,7 +717,7 @@ WXDLLIMPEXP_BASE bool wxOKlibc(); /* for internal use */ #define wxVsnprintf_ vswprintf #endif #else /* ASCII */ - /* all versions of CodeWarrior supported by wxWindows apparently have */ + /* all versions of CodeWarrior supported by wxWidgets apparently have */ /* vsnprintf() */ #if defined(HAVE_VSNPRINTF) || defined(__MWERKS__) || defined(__WATCOMC__) /* assume we have snprintf() too if we have vsnprintf() */ @@ -750,12 +757,7 @@ WXDLLIMPEXP_BASE bool wxOKlibc(); /* for internal use */ We choose to always emulate Windows behaviour as more useful for us so even if we have wprintf() we still must wrap it in a non trivial wxPrintf(). - However, if we don't have any vswprintf() at all we don't need to redefine - anything as our own wxVsnprintf_() already behaves as needed. */ -#ifndef wxVsnprintf_ - #undef wxNEED_PRINTF_CONVERSION -#endif #if defined(wxNEED_PRINTF_CONVERSION) || defined(wxNEED_WPRINTF) /* @@ -780,7 +782,11 @@ WXDLLIMPEXP_BASE bool wxOKlibc(); /* for internal use */ /* these 2 can be simply mapped to the versions with underscore at the end */ /* if we don't have to do the conversion */ -#ifdef wxNEED_PRINTF_CONVERSION +/* + However, if we don't have any vswprintf() at all we don't need to redefine + anything as our own wxVsnprintf_() already behaves as needed. +*/ +#if defined(wxNEED_PRINTF_CONVERSION) && defined(wxVsnprintf_) int wxSnprintf( wxChar *str, size_t size, const wxChar *format, ... ) ATTRIBUTE_PRINTF_3; int wxVsnprintf( wxChar *str, size_t size, const wxChar *format, va_list ap ); #else @@ -920,6 +926,12 @@ WXDLLIMPEXP_BASE int wxSystem(const wxChar *psz); const wxChar *fmt, const struct tm *tm); #endif /* wxNEED_WX_TIME_H */ +#ifndef wxCtime +#include +WXDLLIMPEXP_BASE wxChar *wxCtime(const time_t *timep); +#endif + + /* missing functions in some WinCE versions */ #ifdef _WIN32_WCE #if (_WIN32_WCE < 300)