Logo Search packages:      
Sourcecode: tcc version File versions  Download package

tchar.h

/* 
 * 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: 1.2 $
 * $Author: bellard $
 * $Date: 2005/04/17 13:14:29 $
 *
 */

#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(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;
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_ */


Generated by  Doxygen 1.6.0   Back to index