///////////////////////////////////////////////////////////////////////////// // Name: wxchar.h // Purpose: Declarations common to wx char/wchar_t usage (wide chars) // Author: Joel Farley // Modified by: // Created: 1998/06/12 // RCS-ID: $Id$ // Copyright: (c) wxWindows copyright // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_WXCHAR_H_ #define _WX_WXCHAR_H_ #ifdef __GNUG__ #pragma interface "wxchar.h" #endif // only do SBCS or _UNICODE #if defined (_MBCS ) #error "MBCS is not supported by wxChar" #endif // only do Unicode for Windows (VC++), for now #if defined(__VISUALC__) && defined(__WIN32__) #include typedef _TCHAR wxChar; typedef _TSCHAR wxSChar; typedef _TUCHAR wxUChar; // ctype.h functions #define wxIsalnum _istalnum #define wxIsalpha _istalpha #define wxIsctrl _istctrl #define wxIsdigit _istdigit #define wxIsgraph _istgraph #define wxIslower _istlower #define wxIsprint _istprint #define wxIspunct _istpunct #define wxIsspace _istspace #define wxIsupper _istupper #define wxIsxdigit _istxdigit #define wxTolower _totlower #define wxToupper _totupper // locale.h functons #define wxSetlocale _tsetlocale // string.h functions #define wxStrcat _tcscat #define wxStrchr _tcschr #define wxStrcmp _tcscmp #define wxStrcoll _tcscoll #define wxStrcpy _tcscpy #define wxStrcspn _tcscspn #define wxStrftime _tcsftime #define wxStrncat _tcsncat #define wxStrncmp _tcsncmp #define wxStrncpy _tcsncpy #define wxStrpbrk _tcspbrk #define wxStrrchr _tcsrchr #define wxStrspn _tcsspn #define wxStrstr _tcsstr #define wxStrtod _tcstod #define wxStrtok _tcstok #define wxStrtol _tcstol #define wxStrtoul _tcstoul #define wxStrxfrm _tcsxfrm // stdio.h functions #define wxFgetc _fgettc #define wxFgetchar _fgettchar #define wxFgets _fgetts #define wxFopen _tfopen #define wxFputc _fputtc #define wxFputchar _fputtchar #define wxFprintf _ftprintf #define wxFreopen _tfreopen #define wxFscanf _ftscanf #define wxGetc _gettc #define wxGetchar _gettchar #define wxGets _getts #define wxPerror _tperror #define wxPrintf _tprintf #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 wxTmpnam _ttmpnam #define wxUngetc _tungetc #define wxVfprint _vftprintf #define wxVprintf _vtprintf #define wxVsprintf _vstprintf // stdlib.h functions #define wxAtoi _ttoi #define wxAtol _ttol #define wxGetenv _tgetenv #define wxSystem _tsystem // time.h functions #define wxAsctime _tasctime #define wxCtime _tctime // #elif defined(XXX) // #include XXX-specific files here // typeddef YYY wxChar; // translate wxZZZ names #else//!Unicode // make sure we aren't doing Unicode #if defined ( __WXUNICODE__ ) || defined ( _UNICODE ) #error "Please define your compiler's Unicode conventions in wxChar.h" #endif typedef char wxChar; typedef signed char wxSChar; typedef unsigned char wxUChar; #define _T(x) x // ctype.h functions #define wxIsalnum isalnum #define wxIsalpha isalpha #define wxIsctrl isctrl #define wxIsdigit isdigit #define wxIsgraph isgraph #define wxIslower islower #define wxIsprint isprint #define wxIspunct ispunct #define wxIsspace isspace #define wxIsupper isupper #define wxIsxdigit isxdigit #define wxTolower tolower #define wxToupper toupper // locale.h functons #define wxSetlocale setlocale // string.h functions #define wxStrcat strcat #define wxStrchr strchr #define wxStrcmp strcmp #define wxStrcoll strcoll #define wxStrcpy strcpy #define wxStrcspn strcspn #define wxStrftime strftime #define wxStrncat strncat #define wxStrncmp strncmp #define wxStrncpy strncpy #define wxStrpbrk strpbrk #define wxStrrchr strrchr #define wxStrspn strspn #define wxStrstr strstr #define wxStrtod strtod #define wxStrtok strtok #define wxStrtol strtol #define wxStrtoul strtoul #define wxStrxfrm strxfrm // stdio.h functions #define wxFgetc fgetc #define wxFgetchar fgetchar #define wxFgets fgets #define wxFopen fopen #define wxFputc fputc #define wxFputchar fputchar #define wxFprintf fprintf #define wxFreopen freopen #define wxFscanf fscanf #define wxGetc getc #define wxGetchar getchar #define wxGets gets #define wxPerror perror #define wxPrintf printf #define wxPutc putc #define wxPutchar putchar #define wxPuts puts #define wxRemove remove #define wxRename rename #define wxScanf scanf #define wxSprintf sprintf #define wxSscanf sscanf #define wxTmpnam tmpnam #define wxUngetc ungetc #define wxVfprint vfprintf #define wxVprintf vprintf #define wxVsprintf vsprintf // stdlib.h functions #define wxAtoi atoi #define wxAtol atol #define wxGetenv getenv #define wxSystem system // time.h functions #define wxAsctime asctime #define wxCtime ctime #endif//Unicode /// checks whether the passed in pointer is NULL and if the string is empty inline bool WXDLLEXPORT wxIsEmpty(const wxChar *p) { return !p || !*p; } /// safe version of strlen() (returns 0 if passed NULL pointer) inline size_t WXDLLEXPORT wxStrlen(const wxChar *psz) #if defined(__VISUALC__) { return psz ? _tcslen(psz) : 0; } #else { return psz ? strlen(psz) : 0; } #endif /// portable strcasecmp/_stricmp inline int WXDLLEXPORT wxStricmp(const wxChar *, const wxChar *) #if defined(__VISUALC__) { return _tcsicmp(psz1, psz2); } #elif defined(__BORLANDC__) { return stricmp(psz1, psz2); } #elif defined(__UNIX__) || defined(__GNUWIN32__) { return strcasecmp(psz1, psz2); } #else // almost all compilers/libraries provide this function (unfortunately under // different names), that's why we don't implement our own which will surely // be more efficient than this code (uncomment to use): /* register char c1, c2; do { c1 = tolower(*psz1++); c2 = tolower(*psz2++); } while ( c1 && (c1 == c2) ); return c1 - c2; */ #error "Please define string case-insensitive compare for your OS/compiler" #endif // OS/compiler #endif //_WX_WXCHAR_H_