/* 

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



