#ifndef _WX_WXCHAR_H_
#define _WX_WXCHAR_H_
-#if defined(__GNUG__) && !defined(__APPLE__)
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma interface "wxchar.h"
#endif
#elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x520)
#define wxHAVE_TCHAR_SUPPORT
#include <ctype.h>
+#elif defined(__WATCOMC__)
+ #define wxHAVE_TCHAR_SUPPORT
#elif defined(__MINGW32__) && wxCHECK_W32API_VERSION( 1, 0 )
#define wxHAVE_TCHAR_SUPPORT
#include <stddef.h>
#define wxHAVE_TCHAR_SUPPORT
#endif // compilers with (good) TCHAR support
+#ifdef __MWERKS__
+ #define HAVE_WPRINTF
+#endif
+
#ifdef wxHAVE_TCHAR_SUPPORT
// get TCHAR definition if we've got it
#include <tchar.h>
#define wxRemove wxMSLU__tremove
#define wxRename wxMSLU__trename
#else
- #define wxRemove _tremove
- #define wxRename _trename
+ #ifdef __WXWINCE__
+ #define wxRemove DeleteFile
+ #else
+ #define wxRemove _tremove
+ #define wxRename _trename
+ #endif
#endif
// stdlib.h functions
#define wxNEED_WX_STDIO_H
#define wxNEED_WX_STDLIB_H
#define wxNEED_WX_TIME_H
- #else // !glibc
+ #elif defined(__MWERKS__) && ( defined(macintosh) || defined(__MACH__) )
+ // ctype.h functions (wctype.h)
+ #define wxIsalnum iswalnum
+ #define wxIsalpha iswalpha
+ #define wxIsctrl iswcntrl
+ #define wxIsdigit iswdigit
+ #define wxIsgraph iswgraph
+ #define wxIslower iswlower
+ #define wxIsprint iswprint
+ #define wxIspunct iswpunct
+ #define wxIsspace iswspace
+ #define wxIsupper iswupper
+ #define wxIsxdigit iswxdigit
+ #define wxTolower towlower
+ #define wxToupper towupper
+
+ // string.h functions (wchar.h)
+ #define wxStrcat wcscat
+ #define wxStrchr wcschr
+ #define wxStrcmp wcscmp
+ #define wxStrcoll wcscoll
+ #define wxStrcpy wcscpy
+ #define wxStrcspn wcscspn
+ #define wxStrlen_ wxWcslen // wxStrlen_() is used in wxStrlen()
+ #define wxStrncat wcsncat
+ #define wxStrncmp wcsncmp
+ #define wxStrncpy wcsncpy
+ #define wxStrpbrk wcspbrk
+ #define wxStrrchr wcsrchr
+ #define wxStrspn wcsspn
+ #define wxStrstr wcsstr
+ #define wxStrtod wcstod
+ #define wxStrtol wcstol
+ #define wxStrtoul wcstoul
+ #define wxStrxfrm wcsxfrm
+
+ #define wxFgetc fgetwc
+ #define wxFgetchar fgetwchar
+ #define wxFgets fgetws
+ #define wxFputc fputwc
+ #define wxFputchar fputwchar
+ #define wxGetc getwc
+ #define wxGetchar getwchar
+ #define wxGets getws
+ #define wxUngetc ungetwc
+
+ #define wxNEED_PRINTF_CONVERSION
+
+ #define wxPutc putwc
+ #define wxPutchar putwchar
+ #define wxFputs fputws
+
+ // stdio.h functions
+
+ #define wxNEED_WX_STDIO_H
+
+ // stdlib.h functions
+ #define wxAtof watof
+ #define wxAtoi watoi
+ #define wxAtol watol
+ #define wxGetenv(a) ((wxChar*)NULL)
+ #define wxSystem(a) ((int)NULL)
+
+ // time.h functions
+ #define wxAsctime wasciitime
+ #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)
+
+ // we need %s to %ls conversion for printf and scanf etc
+ #define wxNEED_PRINTF_CONVERSION
+ // glibc doesn't have wide char equivalents of the other stuff so
+ // use our own versions
+ #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"
#endif
#else // ASCII
// stdio.h functions
#define wxFopen fopen
#define wxFreopen freopen
- #define wxPerror perror
#define wxRemove remove
#define wxRename rename
+
+ #define wxPerror perror
#define wxTmpnam tmpnam
#define wxFgetc fgetc
#define wxFgetchar fgetchar
#define wxFgets fgets
#define wxFputc fputc
+ #define wxFputs fputs
#define wxFputchar fputchar
#define wxFprintf fprintf
#define wxFscanf fscanf
defined(__EMX__) || defined(__DJGPP__)
#define wxStricmp stricmp
#define wxStrnicmp strnicmp
- #elif defined(__SC__) || defined(__VISUALC__) || \
+ #elif defined(__SYMANTEC__) || defined(__VISUALC__) || \
(defined(__MWERKS__) && defined(__INTEL__))
#define wxStricmp _stricmp
#define wxStrnicmp _strnicmp
#define wxStrdup wxStrdupA
#endif
-WXDLLEXPORT bool wxOKlibc(); // for internal use
+WXDLLIMPEXP_BASE bool wxOKlibc(); // for internal use
// ----------------------------------------------------------------------------
// printf() family saga
For some systems vsnprintf() exists in the system libraries but not in the
headers, so we need to declare it ourselves to be able to use it.
*/
-#ifndef HAVE_VSNPRINTF_DECL
+#if defined(HAVE_VSNPRINTF) && !defined(HAVE_VSNPRINTF_DECL)
extern "C"
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
#endif // !HAVE_VSNPRINTF_DECL
*/
#ifndef wxVsnprintf_
#if wxUSE_UNICODE
+ #if defined(__MWERKS__)
+ #define HAVE_WCSRTOMBS 1
+ #define HAVE_VSWPRINTF 1
+ #endif
#if defined(HAVE__VSNWPRINTF)
#define wxVsnprintf_ _vsnwprintf
/* MinGW?MSVCRT has the wrong vswprintf */
#ifndef wxSnprintf_
// no [v]snprintf(), cook our own
- WXDLLEXPORT int wxSnprintf_(wxChar *buf, size_t len, const wxChar *format,
+ WXDLLIMPEXP_BASE int wxSnprintf_(wxChar *buf, size_t len, const wxChar *format,
...) ATTRIBUTE_PRINTF_3;
#endif
#ifndef wxVsnprintf_
- WXDLLEXPORT int wxVsnprintf_(wxChar *buf, size_t len, const wxChar *format,
+ WXDLLIMPEXP_BASE int wxVsnprintf_(wxChar *buf, size_t len, const wxChar *format,
va_list argptr);
#endif
//
// VZ: note that this is never defined currently
#ifdef wxNEED_WX_CTYPE_H
- WXDLLEXPORT int wxIsalnum(wxChar ch);
- WXDLLEXPORT int wxIsalpha(wxChar ch);
- WXDLLEXPORT int wxIsctrl(wxChar ch);
- WXDLLEXPORT int wxIsdigit(wxChar ch);
- WXDLLEXPORT int wxIsgraph(wxChar ch);
- WXDLLEXPORT int wxIslower(wxChar ch);
- WXDLLEXPORT int wxIsprint(wxChar ch);
- WXDLLEXPORT int wxIspunct(wxChar ch);
- WXDLLEXPORT int wxIsspace(wxChar ch);
- WXDLLEXPORT int wxIsupper(wxChar ch);
- WXDLLEXPORT int wxIsxdigit(wxChar ch);
- WXDLLEXPORT int wxTolower(wxChar ch);
- WXDLLEXPORT int wxToupper(wxChar ch);
+ WXDLLIMPEXP_BASE int wxIsalnum(wxChar ch);
+ WXDLLIMPEXP_BASE int wxIsalpha(wxChar ch);
+ WXDLLIMPEXP_BASE int wxIsctrl(wxChar ch);
+ WXDLLIMPEXP_BASE int wxIsdigit(wxChar ch);
+ WXDLLIMPEXP_BASE int wxIsgraph(wxChar ch);
+ WXDLLIMPEXP_BASE int wxIslower(wxChar ch);
+ WXDLLIMPEXP_BASE int wxIsprint(wxChar ch);
+ WXDLLIMPEXP_BASE int wxIspunct(wxChar ch);
+ WXDLLIMPEXP_BASE int wxIsspace(wxChar ch);
+ WXDLLIMPEXP_BASE int wxIsupper(wxChar ch);
+ WXDLLIMPEXP_BASE int wxIsxdigit(wxChar ch);
+ WXDLLIMPEXP_BASE int wxTolower(wxChar ch);
+ WXDLLIMPEXP_BASE int wxToupper(wxChar ch);
#endif // wxNEED_WX_CTYPE_H
// under VC++ 6.0 isspace() returns 1 for 8 bit chars which completely breaks
//
// VZ: this is never defined neither currently
#ifdef wxNEED_WX_STRING_H
- WXDLLEXPORT wxChar * wxStrcat(wxChar *dest, const wxChar *src);
- WXDLLEXPORT const wxChar * wxStrchr(const wxChar *s, wxChar c);
- WXDLLEXPORT wxChar * wxStrchr(wxChar *s, wxChar c)
+ WXDLLIMPEXP_BASE wxChar * wxStrcat(wxChar *dest, const wxChar *src);
+ WXDLLIMPEXP_BASE const wxChar * wxStrchr(const wxChar *s, wxChar c);
+ WXDLLIMPEXP_BASE wxChar * wxStrchr(wxChar *s, wxChar c)
{ return (wxChar *)wxStrchr((const wxChar *)s, c); }
- WXDLLEXPORT int wxStrcmp(const wxChar *s1, const wxChar *s2);
- WXDLLEXPORT int wxStrcoll(const wxChar *s1, const wxChar *s2);
- WXDLLEXPORT wxChar * wxStrcpy(wxChar *dest, const wxChar *src);
- WXDLLEXPORT size_t wxStrcspn(const wxChar *s, const wxChar *reject);
- WXDLLEXPORT size_t wxStrlen(const wxChar *s);
- WXDLLEXPORT wxChar * wxStrncat(wxChar *dest, const wxChar *src, size_t n);
- WXDLLEXPORT int wxStrncmp(const wxChar *s1, const wxChar *s2, size_t n);
- WXDLLEXPORT wxChar * wxStrncpy(wxChar *dest, const wxChar *src, size_t n);
- WXDLLEXPORT const wxChar * wxStrpbrk(const wxChar *s, const wxChar *accept);
- WXDLLEXPORT wxChar * wxStrpbrk(wxChar *s, const wxChar *accept)
+ WXDLLIMPEXP_BASE int wxStrcmp(const wxChar *s1, const wxChar *s2);
+ WXDLLIMPEXP_BASE int wxStrcoll(const wxChar *s1, const wxChar *s2);
+ WXDLLIMPEXP_BASE wxChar * wxStrcpy(wxChar *dest, const wxChar *src);
+ WXDLLIMPEXP_BASE size_t wxStrcspn(const wxChar *s, const wxChar *reject);
+ WXDLLIMPEXP_BASE size_t wxStrlen(const wxChar *s);
+ WXDLLIMPEXP_BASE wxChar * wxStrncat(wxChar *dest, const wxChar *src, size_t n);
+ WXDLLIMPEXP_BASE int wxStrncmp(const wxChar *s1, const wxChar *s2, size_t n);
+ WXDLLIMPEXP_BASE wxChar * wxStrncpy(wxChar *dest, const wxChar *src, size_t n);
+ WXDLLIMPEXP_BASE const wxChar * wxStrpbrk(const wxChar *s, const wxChar *accept);
+ WXDLLIMPEXP_BASE wxChar * wxStrpbrk(wxChar *s, const wxChar *accept)
{ return (wxChar *)wxStrpbrk((const wxChar *)s, accept); }
- WXDLLEXPORT const wxChar * wxStrrchr(const wxChar *s, wxChar c);
- WXDLLEXPORT wxChar * wxStrrchr(wxChar *s, wxChar c)
+ WXDLLIMPEXP_BASE const wxChar * wxStrrchr(const wxChar *s, wxChar c);
+ WXDLLIMPEXP_BASE wxChar * wxStrrchr(wxChar *s, wxChar c)
{ return (wxChar *)wxStrrchr((const wxChar *)s, c); }
- WXDLLEXPORT size_t wxStrspn(const wxChar *s, const wxChar *accept);
- WXDLLEXPORT const wxChar * wxStrstr(const wxChar *haystack, const wxChar *needle);
- WXDLLEXPORT wxChar *wxStrstr(wxChar *haystack, const wxChar *needle)
+ WXDLLIMPEXP_BASE size_t wxStrspn(const wxChar *s, const wxChar *accept);
+ WXDLLIMPEXP_BASE const wxChar * wxStrstr(const wxChar *haystack, const wxChar *needle);
+ WXDLLIMPEXP_BASE wxChar *wxStrstr(wxChar *haystack, const wxChar *needle)
{ return (wxChar *)wxStrstr((const wxChar *)haystack, needle); }
- WXDLLEXPORT double wxStrtod(const wxChar *nptr, wxChar **endptr);
- WXDLLEXPORT long int wxStrtol(const wxChar *nptr, wxChar **endptr, int base);
- WXDLLEXPORT unsigned long int wxStrtoul(const wxChar *nptr, wxChar **endptr, int base);
- WXDLLEXPORT size_t wxStrxfrm(wxChar *dest, const wxChar *src, size_t n);
+ WXDLLIMPEXP_BASE double wxStrtod(const wxChar *nptr, wxChar **endptr);
+ WXDLLIMPEXP_BASE long int wxStrtol(const wxChar *nptr, wxChar **endptr, int base);
+ WXDLLIMPEXP_BASE unsigned long int wxStrtoul(const wxChar *nptr, wxChar **endptr, int base);
+ WXDLLIMPEXP_BASE size_t wxStrxfrm(wxChar *dest, const wxChar *src, size_t n);
#endif // wxNEED_WX_STRING_H
#ifndef wxStrdupA
-WXDLLEXPORT char *wxStrdupA(const char *psz);
+WXDLLIMPEXP_BASE char *wxStrdupA(const char *psz);
#endif
#ifndef wxStrdupW
-WXDLLEXPORT wchar_t *wxStrdupW(const wchar_t *pwz);
+WXDLLIMPEXP_BASE wchar_t *wxStrdupW(const wchar_t *pwz);
#endif
#ifndef wxStricmp
-WXDLLEXPORT int wxStricmp(const wxChar *psz1, const wxChar *psz2);
+WXDLLIMPEXP_BASE int wxStricmp(const wxChar *psz1, const wxChar *psz2);
#endif
#ifndef wxStrnicmp
-WXDLLEXPORT int wxStrnicmp(const wxChar *psz1, const wxChar *psz2, size_t len);
+WXDLLIMPEXP_BASE 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);
+WXDLLIMPEXP_BASE wxChar * wxStrtok(wxChar *psz, const wxChar *delim, wxChar **save_ptr);
#endif
#ifndef wxSetlocale
-class WXDLLEXPORT wxWCharBuffer;
-WXDLLEXPORT wxWCharBuffer wxSetlocale(int category, const wxChar *locale);
+class WXDLLIMPEXP_BASE wxWCharBuffer;
+WXDLLIMPEXP_BASE wxWCharBuffer wxSetlocale(int category, const wxChar *locale);
#endif
// stdio.h functions
#ifdef wxNEED_WX_STDIO_H
#include <stdio.h>
- WXDLLEXPORT FILE * wxFopen(const wxChar *path, const wxChar *mode);
- WXDLLEXPORT FILE * wxFreopen(const wxChar *path, const wxChar *mode, FILE *stream);
- WXDLLEXPORT int wxRemove(const wxChar *path);
- WXDLLEXPORT int wxRename(const wxChar *oldpath, const wxChar *newpath);
+ WXDLLIMPEXP_BASE FILE * wxFopen(const wxChar *path, const wxChar *mode);
+ WXDLLIMPEXP_BASE FILE * wxFreopen(const wxChar *path, const wxChar *mode, FILE *stream);
+ WXDLLIMPEXP_BASE int wxRemove(const wxChar *path);
+ WXDLLIMPEXP_BASE int wxRename(const wxChar *oldpath, const wxChar *newpath);
// *printf() family is handled separately
#endif // wxNEED_WX_STDIO_H
// stdlib.h functions
#ifndef wxAtof
-WXDLLEXPORT double wxAtof(const wxChar *psz);
+WXDLLIMPEXP_BASE double wxAtof(const wxChar *psz);
#endif
#ifdef wxNEED_WX_STDLIB_H
-WXDLLEXPORT int wxAtoi(const wxChar *psz);
-WXDLLEXPORT long wxAtol(const wxChar *psz);
-WXDLLEXPORT wxChar * wxGetenv(const wxChar *name);
-WXDLLEXPORT int wxSystem(const wxChar *psz);
+WXDLLIMPEXP_BASE int wxAtoi(const wxChar *psz);
+WXDLLIMPEXP_BASE long wxAtol(const wxChar *psz);
+WXDLLIMPEXP_BASE wxChar * wxGetenv(const wxChar *name);
+WXDLLIMPEXP_BASE int wxSystem(const wxChar *psz);
#endif
// time.h functions
#ifdef wxNEED_WX_TIME_H
- WXDLLEXPORT size_t wxStrftime(wxChar *s, size_t max,
+#if defined(__MWERKS__) && defined(macintosh)
+ #include <time.h>
+#endif
+ WXDLLIMPEXP_BASE size_t wxStrftime(wxChar *s, size_t max,
const wxChar *fmt, const struct tm *tm);
#endif // wxNEED_WX_TIME_H
+// missing functions in WinCE
+#ifdef __WXWINCE__
+WXDLLIMPEXP_BASE char* strdup(const char* s);
+WXDLLIMPEXP_BASE void *calloc( size_t num, size_t size );
+
+#if _WIN32_WCE <= 211
+WXDLLIMPEXP_BASE int isspace(int c);
+WXDLLIMPEXP_BASE int isascii( int c );
+#endif
+#endif
+
// ----------------------------------------------------------------------------
// multibyte to wide char conversion functions and macros
// ----------------------------------------------------------------------------
#if wxUSE_WCHAR_T
// multibyte<->widechar conversion
- WXDLLEXPORT size_t wxMB2WC(wchar_t *buf, const char *psz, size_t n);
- WXDLLEXPORT size_t wxWC2MB(char *buf, const wchar_t *psz, size_t n);
+ WXDLLIMPEXP_BASE size_t wxMB2WC(wchar_t *buf, const char *psz, size_t n);
+ WXDLLIMPEXP_BASE size_t wxWC2MB(char *buf, const wchar_t *psz, size_t n);
#if wxUSE_UNICODE
#define wxMB2WX wxMB2WC