wxWidgets/include/wx/wxchar.h
1999-01-27 10:00:02 +00:00

248 lines
6.5 KiB
C

/////////////////////////////////////////////////////////////////////////////
// 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(_MSC_VER) && defined(__WIN32__)
#include <tchar.h>
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(_MSC_VER)
{ 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(_MSC_VER)
{ 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_