| /* |
| |
| * tchar.h |
| |
| * |
| |
| * Unicode mapping layer for the standard C library. By including this |
| |
| * file and using the 't' names for string functions |
| |
| * (eg. _tprintf) you can make code which can be easily adapted to both |
| |
| * Unicode and non-unicode environments. In a unicode enabled compile define |
| |
| * _UNICODE before including tchar.h, otherwise the standard non-unicode |
| |
| * library functions will be used. |
| |
| * |
| |
| * Note that you still need to include string.h or stdlib.h etc. to define |
| |
| * the appropriate functions. Also note that there are several defines |
| |
| * included for non-ANSI functions which are commonly available (but using |
| |
| * the convention of prepending an underscore to non-ANSI library function |
| |
| * names). |
| |
| * |
| |
| * This file is part of the Mingw32 package. |
| |
| * |
| |
| * Contributors: |
| |
| * Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp> |
| |
| * |
| |
| * THIS SOFTWARE IS NOT COPYRIGHTED |
| |
| * |
| |
| * This source code is offered for use in the public domain. You may |
| |
| * use, modify or distribute it freely. |
| |
| * |
| |
| * This code is distributed in the hope that it will be useful but |
| |
| * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY |
| |
| * DISCLAIMED. This includes but is not limited to warranties of |
| |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| |
| * |
| |
| * $Revision$ |
| |
| * $Author$ |
| |
| * $Date$ |
| |
| * |
| |
| */ |
| |
| |
| |
| #ifndef _TCHAR_H_ |
| |
| #define _TCHAR_H_ |
| |
| |
| |
| /* All the headers include this file. */ |
| |
| /*#include <_mingw.h>*/ |
| |
| |
| |
| /* |
| |
| * NOTE: This tests _UNICODE, which is different from the UNICODE define |
| |
| * used to differentiate Win32 API calls. |
| |
| */ |
| |
| #ifdef _UNICODE |
| |
| |
| |
| |
| |
| /* |
| |
| * Use TCHAR instead of char or wchar_t. It will be appropriately translated |
| |
| * if _UNICODE is correctly defined (or not). |
| |
| */ |
| |
| #ifndef _TCHAR_DEFINED |
| |
| #ifndef RC_INVOKED |
| |
| typedef wchar_t TCHAR; |
| |
| typedef wchar_t _TCHAR; |
| |
| #endif /* Not RC_INVOKED */ |
| |
| #define _TCHAR_DEFINED |
| |
| #endif |
| |
| |
| |
| |
| |
| /* |
| |
| * __TEXT is a private macro whose specific use is to force the expansion of a |
| |
| * macro passed as an argument to the macros _T or _TEXT. DO NOT use this |
| |
| * macro within your programs. It's name and function could change without |
| |
| * notice. |
| |
| */ |
| |
| #define __TEXT(q) L##q |
| |
| |
| |
| /* for porting from other Windows compilers */ |
| |
| #if 0 // no wide startup module |
| |
| #define _tmain wmain |
| |
| #define _tWinMain wWinMain |
| |
| #define _tenviron _wenviron |
| |
| #define __targv __wargv |
| |
| #endif |
| |
| |
| |
| /* |
| |
| * Unicode functions |
| |
| */ |
| |
| #define _tprintf wprintf |
| |
| #define _ftprintf fwprintf |
| |
| #define _stprintf swprintf |
| |
| #define _sntprintf _snwprintf |
| |
| #define _vtprintf vwprintf |
| |
| #define _vftprintf vfwprintf |
| |
| #define _vstprintf vswprintf |
| |
| #define _vsntprintf _vsnwprintf |
| |
| #define _tscanf wscanf |
| |
| #define _ftscanf fwscanf |
| |
| #define _stscanf swscanf |
| |
| #define _fgettc fgetwc |
| |
| #define _fgettchar _fgetwchar |
| |
| #define _fgetts fgetws |
| |
| #define _fputtc fputwc |
| |
| #define _fputtchar _fputwchar |
| |
| #define _fputts fputws |
| |
| #define _gettc getwc |
| |
| #define _getts _getws |
| |
| #define _puttc putwc |
| |
| #define _putts _putws |
| |
| #define _ungettc ungetwc |
| |
| #define _tcstod wcstod |
| |
| #define _tcstol wcstol |
| |
| #define _tcstoul wcstoul |
| |
| #define _itot _itow |
| |
| #define _ltot _ltow |
| |
| #define _ultot _ultow |
| |
| #define _ttoi _wtoi |
| |
| #define _ttol _wtol |
| |
| #define _tcscat wcscat |
| |
| #define _tcschr wcschr |
| |
| #define _tcscmp wcscmp |
| |
| #define _tcscpy wcscpy |
| |
| #define _tcscspn wcscspn |
| |
| #define _tcslen wcslen |
| |
| #define _tcsncat wcsncat |
| |
| #define _tcsncmp wcsncmp |
| |
| #define _tcsncpy wcsncpy |
| |
| #define _tcspbrk wcspbrk |
| |
| #define _tcsrchr wcsrchr |
| |
| #define _tcsspn wcsspn |
| |
| #define _tcsstr wcsstr |
| |
| #define _tcstok wcstok |
| |
| #define _tcsdup _wcsdup |
| |
| #define _tcsicmp _wcsicmp |
| |
| #define _tcsnicmp _wcsnicmp |
| |
| #define _tcsnset _wcsnset |
| |
| #define _tcsrev _wcsrev |
| |
| #define _tcsset _wcsset |
| |
| #define _tcslwr _wcslwr |
| |
| #define _tcsupr _wcsupr |
| |
| #define _tcsxfrm wcsxfrm |
| |
| #define _tcscoll wcscoll |
| |
| #define _tcsicoll _wcsicoll |
| |
| #define _istalpha iswalpha |
| |
| #define _istupper iswupper |
| |
| #define _istlower iswlower |
| |
| #define _istdigit iswdigit |
| |
| #define _istxdigit iswxdigit |
| |
| #define _istspace iswspace |
| |
| #define _istpunct iswpunct |
| |
| #define _istalnum iswalnum |
| |
| #define _istprint iswprint |
| |
| #define _istgraph iswgraph |
| |
| #define _istcntrl iswcntrl |
| |
| #define _istascii iswascii |
| |
| #define _totupper towupper |
| |
| #define _totlower towlower |
| |
| #define _tcsftime wcsftime |
| |
| /* Macro functions */ |
| |
| #define _tcsdec _wcsdec |
| |
| #define _tcsinc _wcsinc |
| |
| #define _tcsnbcnt _wcsncnt |
| |
| #define _tcsnccnt _wcsncnt |
| |
| #define _tcsnextc _wcsnextc |
| |
| #define _tcsninc _wcsninc |
| |
| #define _tcsspnp _wcsspnp |
| |
| #define _wcsdec(_wcs1, _wcs2) ((_wcs1)>=(_wcs2) ? NULL : (_wcs2)-1) |
| |
| #define _wcsinc(_wcs) ((_wcs)+1) |
| |
| #define _wcsnextc(_wcs) ((unsigned int) *(_wcs)) |
| |
| #define _wcsninc(_wcs, _inc) (((_wcs)+(_inc))) |
| |
| #define _wcsncnt(_wcs, _cnt) ((wcslen(_wcs)>_cnt) ? _count : wcslen(_wcs)) |
| |
| #define _wcsspnp(_wcs1, _wcs2) ((*((_wcs1)+wcsspn(_wcs1,_wcs2))) ? ((_wcs1)+wcsspn(_wcs1,_wcs2)) : NULL) |
| |
| |
| |
| #if 1 /* defined __MSVCRT__ */ |
| |
| /* |
| |
| * These wide functions not in crtdll.dll. |
| |
| * Define macros anyway so that _wfoo rather than _tfoo is undefined |
| |
| */ |
| |
| #define _ttoi64 _wtoi64 |
| |
| #define _i64tot _i64tow |
| |
| #define _ui64tot _ui64tow |
| |
| #define _tasctime _wasctime |
| |
| #define _tctime _wctime |
| |
| #define _tstrdate _wstrdate |
| |
| #define _tstrtime _wstrtime |
| |
| #define _tutime _wutime |
| |
| #define _tcsnccoll _wcsncoll |
| |
| #define _tcsncoll _wcsncoll |
| |
| #define _tcsncicoll _wcsnicoll |
| |
| #define _tcsnicoll _wcsnicoll |
| |
| #define _taccess _waccess |
| |
| #define _tchmod _wchmod |
| |
| #define _tcreat _wcreat |
| |
| #define _tfindfirst _wfindfirst |
| |
| #define _tfindnext _wfindnext |
| |
| #define _tfdopen _wfdopen |
| |
| #define _tfopen _wfopen |
| |
| #define _tgetenv _wgetenv |
| |
| #define _tputenv _wputenv |
| |
| #define _tsearchenv _wsearchenv |
| |
| #define _tmakepath _wmakepath |
| |
| #define _tsplitpath _wsplitpath |
| |
| #define _tfullpath _wfullpath |
| |
| #define _tmktemp _wmktemp |
| |
| #define _topen _wopen |
| |
| #define _tremove _wremove |
| |
| #define _trename _wrename |
| |
| #define _tsopen _wsopen |
| |
| #define _tsetlocale _wsetlocale |
| |
| #define _tunlink _wunlink |
| |
| #define _tfinddata_t _wfinddata_t |
| |
| #define _tfindfirsti64 _wfindfirsti64 |
| |
| #define _tfindnexti64 _wfindnexti64 |
| |
| #define _tfinddatai64_t _wfinddatai64_t |
| |
| #endif /* __MSVCRT__ */ |
| |
| |
| |
| /* dirent structures and functions */ |
| |
| #define _tdirent _wdirent |
| |
| #define _TDIR _WDIR |
| |
| #define _topendir _wopendir |
| |
| #define _tclosedir _wclosedir |
| |
| #define _treaddir _wreaddir |
| |
| #define _trewinddir _wrewinddir |
| |
| #define _ttelldir _wtelldir |
| |
| #define _tseekdir _wseekdir |
| |
| #else /* Not _UNICODE */ |
| |
| |
| |
| /* |
| |
| * TCHAR, the type you should use instead of char. |
| |
| */ |
| |
| #ifndef _TCHAR_DEFINED |
| |
| #ifndef RC_INVOKED |
| |
| typedef char TCHAR; |
| |
| typedef char _TCHAR; |
| |
| #endif |
| |
| #define _TCHAR_DEFINED |
| |
| #endif |
| |
| |
| |
| /* |
| |
| * __TEXT is a private macro whose specific use is to force the expansion of a |
| |
| * macro passed as an argument to the macros _T or _TEXT. DO NOT use this |
| |
| * macro within your programs. It's name and function could change without |
| |
| * notice. |
| |
| */ |
| |
| #define __TEXT(q) q |
| |
| |
| |
| /* for porting from other Windows compilers */ |
| |
| #define _tmain main |
| |
| #define _tWinMain WinMain |
| |
| #define _tenviron _environ |
| |
| #define __targv __argv |
| |
| |
| |
| /* |
| |
| * Non-unicode (standard) functions |
| |
| */ |
| |
| |
| |
| #define _tprintf printf |
| |
| #define _ftprintf fprintf |
| |
| #define _stprintf sprintf |
| |
| #define _sntprintf _snprintf |
| |
| #define _vtprintf vprintf |
| |
| #define _vftprintf vfprintf |
| |
| #define _vstprintf vsprintf |
| |
| #define _vsntprintf _vsnprintf |
| |
| #define _tscanf scanf |
| |
| #define _ftscanf fscanf |
| |
| #define _stscanf sscanf |
| |
| #define _fgettc fgetc |
| |
| #define _fgettchar _fgetchar |
| |
| #define _fgetts fgets |
| |
| #define _fputtc fputc |
| |
| #define _fputtchar _fputchar |
| |
| #define _fputts fputs |
| |
| #define _tfdopen _fdopen |
| |
| #define _tfopen fopen |
| |
| #define _tgetenv getenv |
| |
| #define _tputenv _putenv |
| |
| #define _tsearchenv _searchenv |
| |
| #define _tmakepath _makepath |
| |
| #define _tsplitpath _splitpath |
| |
| #define _tfullpath _fullpath |
| |
| #define _gettc getc |
| |
| #define _getts gets |
| |
| #define _puttc putc |
| |
| #define _putts puts |
| |
| #define _ungettc ungetc |
| |
| #define _tcstod strtod |
| |
| #define _tcstol strtol |
| |
| #define _tcstoul strtoul |
| |
| #define _itot _itoa |
| |
| #define _ltot _ltoa |
| |
| #define _ultot _ultoa |
| |
| #define _ttoi atoi |
| |
| #define _ttol atol |
| |
| #define _tcscat strcat |
| |
| #define _tcschr strchr |
| |
| #define _tcscmp strcmp |
| |
| #define _tcscpy strcpy |
| |
| #define _tcscspn strcspn |
| |
| #define _tcslen strlen |
| |
| #define _tcsncat strncat |
| |
| #define _tcsncmp strncmp |
| |
| #define _tcsncpy strncpy |
| |
| #define _tcspbrk strpbrk |
| |
| #define _tcsrchr strrchr |
| |
| #define _tcsspn strspn |
| |
| #define _tcsstr strstr |
| |
| #define _tcstok strtok |
| |
| #define _tcsdup _strdup |
| |
| #define _tcsicmp _stricmp |
| |
| #define _tcsnicmp _strnicmp |
| |
| #define _tcsnset _strnset |
| |
| #define _tcsrev _strrev |
| |
| #define _tcsset _strset |
| |
| #define _tcslwr _strlwr |
| |
| #define _tcsupr _strupr |
| |
| #define _tcsxfrm strxfrm |
| |
| #define _tcscoll strcoll |
| |
| #define _tcsicoll _stricoll |
| |
| #define _istalpha isalpha |
| |
| #define _istupper isupper |
| |
| #define _istlower islower |
| |
| #define _istdigit isdigit |
| |
| #define _istxdigit isxdigit |
| |
| #define _istspace isspace |
| |
| #define _istpunct ispunct |
| |
| #define _istalnum isalnum |
| |
| #define _istprint isprint |
| |
| #define _istgraph isgraph |
| |
| #define _istcntrl iscntrl |
| |
| #define _istascii isascii |
| |
| #define _totupper toupper |
| |
| #define _totlower tolower |
| |
| #define _tasctime asctime |
| |
| #define _tctime ctime |
| |
| #define _tstrdate _strdate |
| |
| #define _tstrtime _strtime |
| |
| #define _tutime _utime |
| |
| #define _tcsftime strftime |
| |
| /* Macro functions */ |
| |
| #define _tcsdec _strdec |
| |
| #define _tcsinc _strinc |
| |
| #define _tcsnbcnt _strncnt |
| |
| #define _tcsnccnt _strncnt |
| |
| #define _tcsnextc _strnextc |
| |
| #define _tcsninc _strninc |
| |
| #define _tcsspnp _strspnp |
| |
| #define _strdec(_str1, _str2) ((_str1)>=(_str2) ? NULL : (_str2)-1) |
| |
| #define _strinc(_str) ((_str)+1) |
| |
| #define _strnextc(_str) ((unsigned int) *(_str)) |
| |
| #define _strninc(_str, _inc) (((_str)+(_inc))) |
| |
| #define _strncnt(_str, _cnt) ((strlen(_str)>_cnt) ? _count : strlen(_str)) |
| |
| #define _strspnp(_str1, _str2) ((*((_str1)+strspn(_str1,_str2))) ? ((_str1)+strspn(_str1,_str2)) : NULL) |
| |
| |
| |
| #define _tchmod _chmod |
| |
| #define _tcreat _creat |
| |
| #define _tfindfirst _findfirst |
| |
| #define _tfindnext _findnext |
| |
| #define _tmktemp _mktemp |
| |
| #define _topen _open |
| |
| #define _taccess _access |
| |
| #define _tremove remove |
| |
| #define _trename rename |
| |
| #define _tsopen _sopen |
| |
| #define _tsetlocale setlocale |
| |
| #define _tunlink _unlink |
| |
| #define _tfinddata_t _finddata_t |
| |
| |
| |
| #if 1 /* defined __MSVCRT__ */ |
| |
| /* Not in crtdll.dll. Define macros anyway? */ |
| |
| #define _ttoi64 _atoi64 |
| |
| #define _i64tot _i64toa |
| |
| #define _ui64tot _ui64toa |
| |
| #define _tcsnccoll _strncoll |
| |
| #define _tcsncoll _strncoll |
| |
| #define _tcsncicoll _strnicoll |
| |
| #define _tcsnicoll _strnicoll |
| |
| #define _tfindfirsti64 _findfirsti64 |
| |
| #define _tfindnexti64 _findnexti64 |
| |
| #define _tfinddatai64_t _finddatai64_t |
| |
| #endif /* __MSVCRT__ */ |
| |
| |
| |
| /* dirent structures and functions */ |
| |
| #define _tdirent dirent |
| |
| #define _TDIR DIR |
| |
| #define _topendir opendir |
| |
| #define _tclosedir closedir |
| |
| #define _treaddir readdir |
| |
| #define _trewinddir rewinddir |
| |
| #define _ttelldir telldir |
| |
| #define _tseekdir seekdir |
| |
| |
| |
| #endif /* Not _UNICODE */ |
| |
| |
| |
| /* |
| |
| * UNICODE a constant string when _UNICODE is defined else returns the string |
| |
| * unmodified. Also defined in w32api/winnt.h. |
| |
| */ |
| |
| #define _TEXT(x) __TEXT(x) |
| |
| #define _T(x) __TEXT(x) |
| |
| |
| |
| #endif /* Not _TCHAR_H_ */ |
| |
| |
| |