root/win32/common/gtchar.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


/* 

 * 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_ */




/* [<][>][^][v][top][bottom][index][help] */