* 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
/* 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
#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
#define wxPuts _putts
#define wxScanf _tscanf
#if defined(__DMC__)
- /* Digital Mars adds count to _stprintf (C99) so it does not fit wxWindows needs */
- /* Instead of it we can use function from MSW api (FIXME: doesn't work) */
- #ifdef wxUSE_UNICODE
- #define wxSprintf wsprintfW
+ #if wxUSE_UNICODE
+ /* 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
- #define wxSprintf wsprintfA
+ /* and there is a bug in D Mars tchar.h prior to 8.39.4n, so define as sprintf */
+ #define wxSprintf sprintf
#endif
#else
- #define wxSprintf _stprintf
+ #define wxSprintf _stprintf
#endif
+
#define wxSscanf _stscanf
#define wxTmpnam _ttmpnam
#define wxUngetc _tungetc
#include <wctype.h>
/* this is probably glibc-specific */
- #if defined(__WCHAR_TYPE__)
+ #if defined(__WCHAR_TYPE__) && !defined(__MWERKS__)
/* ctype.h functions (wctype.h) */
#define wxIsalnum iswalnum
#define wxIsalpha iswalpha
#define wxCtime wctime
/* #define wxStrftime wcsftime */
- /*
- #define wxNEED_FPUTWC
-
- #include <stdio.h>
-
- int wxFputs(const wxChar *ch, FILE *stream);
- int wxPutc(wxChar ch, FILE *stream);
-
- #define wxPuts(ws) wxFputs(ws, stdout)
- #define wxPutchar(wch) wxPutc(wch, stdout)
-
- #define wxNEED_PRINTF_CONVERSION
- #define wxNEED_WX_STDIO_H
- #define wxNEED_WX_STDLIB_H
- */
#define wxNEED_WX_TIME_H
#else /* !metrowerks for apple */
#error "Please define wide character functions for your environment"
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)
/*
/* 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
const wxChar *fmt, const struct tm *tm);
#endif /* wxNEED_WX_TIME_H */
+#ifndef wxCtime
+#include <time.h>
+WXDLLIMPEXP_BASE wxChar *wxCtime(const time_t *timep);
+#endif
+
+
/* missing functions in some WinCE versions */
#ifdef _WIN32_WCE
#if (_WIN32_WCE < 300)