home *** CD-ROM | disk | FTP | other *** search
- /*
- * 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
- * DISCLAMED. This includes but is not limited to warranties of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Revision: 1.5 $
- * $Author: cgf $
- * $Date: 2000/02/05 04:04:58 $
- *
- */
-
- #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;
- #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(x) L##x
-
- /* 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 _tfopen _wfopen
- #define _tgetenv _wgetenv
- #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__ */
-
- #else /* Not _UNICODE */
-
- /*
- * TCHAR, the type you should use instead of char.
- */
- #ifndef _TCHAR_DEFINED
- #ifndef RC_INVOKED
- 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(x) x
-
- /* 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 _tfopen fopen
- #define _tgetenv getenv
- #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__ */
-
- #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_ */
-
-