1063 lines
29 KiB
C++
1063 lines
29 KiB
C++
/*
|
|
* tchar.h Generic International Text Function Macros
|
|
*
|
|
* =========================================================================
|
|
*
|
|
* Open Watcom Project
|
|
*
|
|
* Copyright (c) 2002-2010 Open Watcom Contributors. All Rights Reserved.
|
|
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
|
*
|
|
* This file is automatically generated. Do not edit directly.
|
|
*
|
|
* =========================================================================
|
|
*/
|
|
#ifndef _TCHAR_H_INCLUDED
|
|
#define _TCHAR_H_INCLUDED
|
|
|
|
#ifndef _ENABLE_AUTODEPEND
|
|
#pragma read_only_file;
|
|
#endif
|
|
|
|
#ifndef _COMDEF_H_INCLUDED
|
|
#include <_comdef.h>
|
|
#endif
|
|
|
|
#ifndef _STRING_H_INCLUDED
|
|
#include <string.h>
|
|
#endif
|
|
|
|
#ifndef _TIME_H_INCLUDED
|
|
#include <time.h>
|
|
#endif
|
|
|
|
#if defined(_UNICODE) || defined(__UNICODE__)
|
|
|
|
#ifndef _WCHAR_H_INCLUDED
|
|
#include <wchar.h>
|
|
#endif
|
|
|
|
#elif defined(_MBCS)
|
|
|
|
#ifndef _MBSTRING_H_INCLUDED
|
|
#include <mbstring.h>
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef NULL
|
|
#ifdef __cplusplus
|
|
#if !defined(_M_I86) || defined(__SMALL__) || defined(__MEDIUM__)
|
|
#define NULL 0
|
|
#else
|
|
#define NULL 0L
|
|
#endif
|
|
#else
|
|
#define NULL ((void *)0)
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(_UNICODE) || defined(__UNICODE__)
|
|
// **************************** UNICODE **************************************
|
|
|
|
#ifndef __TCHAR_DEFINED
|
|
typedef wchar_t _TCHAR;
|
|
typedef wchar_t _TSCHAR;
|
|
typedef wchar_t _TUCHAR;
|
|
typedef wchar_t _TXCHAR;
|
|
typedef wchar_t _TINT;
|
|
#define __TCHAR_DEFINED
|
|
#endif
|
|
|
|
#ifndef _TCHAR_DEFINED
|
|
|
|
#if !defined(NO_EXT_KEYS) /* extensions enabled */
|
|
typedef wchar_t TCHAR;
|
|
#endif /* extensions enabled */
|
|
|
|
#define _TCHAR_DEFINED
|
|
#endif
|
|
|
|
#define _TEOF WEOF
|
|
|
|
#define __T(x) L ## x
|
|
|
|
/* Program */
|
|
|
|
#define _tmain wmain
|
|
#define _tWinMain wWinMain
|
|
#define _tenviron _wenviron
|
|
#define __targc __wargc
|
|
#define __targv __wargv
|
|
|
|
/* Formatted i/o */
|
|
|
|
#define _tprintf wprintf
|
|
#define _ftprintf fwprintf
|
|
#define _sntprintf _snwprintf
|
|
#define _vtprintf vwprintf
|
|
#define _vftprintf vfwprintf
|
|
#define _tscanf wscanf
|
|
#define _ftscanf fwscanf
|
|
#define _stscanf swscanf
|
|
|
|
#if defined(__cplusplus) && defined(__INLINE_FUNCTIONS__)
|
|
inline int _vstprintf( wchar_t *__p1, const wchar_t *__p2, __va_list __p3 ) {
|
|
return( vswprintf( __p1, 32767, __p2, __p3 ) );
|
|
}
|
|
#else
|
|
#define _vstprintf(__p1,__p2,__p3) vswprintf((__p1),32767,(__p2),(__p3))
|
|
#endif
|
|
_WCRTLINK extern int _stprintf(wchar_t *, const wchar_t *, ...);
|
|
|
|
|
|
/* Unformatted i/o */
|
|
|
|
#define _fgettc fgetwc
|
|
#define _fgettchar _fgetwchar
|
|
#define _fgetts fgetws
|
|
#define _fputtc fputwc
|
|
#define _fputtchar _fputwchar
|
|
#define _fputts fputws
|
|
#define _gettc getwc
|
|
#define _gettchar getwchar
|
|
#define _getts _getws
|
|
#define _puttc putwc
|
|
#define _puttchar putwchar
|
|
#define _putts _putws
|
|
#define _ungettc ungetwc
|
|
|
|
|
|
/* String conversion functions */
|
|
|
|
#define _tcstod wcstod
|
|
#define _tcstol wcstol
|
|
#define _tcstoul wcstoul
|
|
|
|
#define _itot _itow
|
|
#define _ltot _ltow
|
|
#define _ultot _ultow
|
|
#define _ttoi _wtoi
|
|
#define _ttol _wtol
|
|
|
|
|
|
/* String functions */
|
|
|
|
#define _tcscat wcscat
|
|
#define _tcschr wcschr
|
|
#define _tcscpy wcscpy
|
|
#define _tcscspn wcscspn
|
|
#define _tcslen wcslen
|
|
#define _tcsncat wcsncat
|
|
#define _tcsncpy wcsncpy
|
|
#define _tcspbrk wcspbrk
|
|
#define _tcsrchr wcsrchr
|
|
#define _tcsspn wcsspn
|
|
#define _tcsstr wcsstr
|
|
#if defined(__cplusplus) && defined(__INLINE_FUNCTIONS__)
|
|
inline wchar_t *_tcstok( wchar_t *__p1, const wchar_t *__p2 ) {
|
|
return( wcstok( __p1, __p2, NULL ) );
|
|
}
|
|
#else
|
|
#define _tcstok(__p1,__p2) wcstok((__p1),(__p2),NULL)
|
|
#endif
|
|
|
|
#define _tcsdup _wcsdup
|
|
#define _tcsnset _wcsnset
|
|
#define _tcsrev _wcsrev
|
|
#define _tcsset _wcsset
|
|
|
|
#define _tcscmp wcscmp
|
|
#define _tcsicmp _wcsicmp
|
|
#define _tcsnccmp wcsncmp
|
|
#define _tcsncmp wcsncmp
|
|
#define _tcsncicmp _wcsnicmp
|
|
#define _tcsnicmp _wcsnicmp
|
|
|
|
#define _tcscoll wcscoll
|
|
#define _tcsicoll _wcsicoll
|
|
#define _tcsnccoll _wcsncoll
|
|
#define _tcsncoll _wcsncoll
|
|
#define _tcsncicoll _wcsnicoll
|
|
#define _tcsnicoll _wcsnicoll
|
|
|
|
|
|
/* Execute functions */
|
|
|
|
#define _texecl _wexecl
|
|
#define _texecle _wexecle
|
|
#define _texeclp _wexeclp
|
|
#define _texeclpe _wexeclpe
|
|
#define _texecv _wexecv
|
|
#define _texecve _wexecve
|
|
#define _texecvp _wexecvp
|
|
#define _texecvpe _wexecvpe
|
|
|
|
#define _tspawnl _wspawnl
|
|
#define _tspawnle _wspawnle
|
|
#define _tspawnlp _wspawnlp
|
|
#define _tspawnlpe _wspawnlpe
|
|
#define _tspawnv _wspawnv
|
|
#define _tspawnve _wspawnve
|
|
#define _tspawnvp _wspawnvp
|
|
#define _tspawnvpe _wspawnvpe
|
|
|
|
#define _tsystem _wsystem
|
|
|
|
|
|
/* Time functions */
|
|
|
|
#define _tasctime _wasctime
|
|
#define _tctime _wctime
|
|
#define _tstrdate _wstrdate
|
|
#define _tstrtime _wstrtime
|
|
#define _tutime _wutime
|
|
#define _tcsftime wcsftime
|
|
|
|
|
|
/* Directory functions */
|
|
|
|
#define _tchdir _wchdir
|
|
#define _tclosedir _wclosedir
|
|
#define _tgetcwd _wgetcwd
|
|
#define _tgetdcwd _wgetdcwd
|
|
#define _tmkdir _wmkdir
|
|
#define _topendir _wopendir
|
|
#define _treaddir _wreaddir
|
|
#define _trewinddir _wrewinddir
|
|
#define _trmdir _wrmdir
|
|
|
|
|
|
/* Directory struct */
|
|
#define _tdirent _wdirent
|
|
|
|
|
|
/* Environment/Path functions */
|
|
|
|
#define _tfullpath _wfullpath
|
|
#define _tgetenv _wgetenv
|
|
#define _tmakepath _wmakepath
|
|
#define _tputenv _wputenv
|
|
#define _tsearchenv _wsearchenv
|
|
#define _tsplitpath _wsplitpath
|
|
|
|
|
|
/* Stdio functions */
|
|
|
|
#define _tfdopen _wfdopen
|
|
#define _tfsopen _wfsopen
|
|
#define _tfopen _wfopen
|
|
#define _tfreopen _wfreopen
|
|
#define _tperror _wperror
|
|
#define _ttmpnam _wtmpnam
|
|
|
|
|
|
/* Io functions */
|
|
|
|
#define _taccess _waccess
|
|
#define _tchmod _wchmod
|
|
#define _tcreat _wcreat
|
|
#define _tfindfirst _wfindfirst
|
|
#define _tfindfirsti64 _wfindfirsti64
|
|
#define _tfindnext _wfindnext
|
|
#define _tfindnexti64 _wfindnexti64
|
|
#define _topen _wopen
|
|
#define _tremove _wremove
|
|
#define _trename _wrename
|
|
#define _tsopen _wsopen
|
|
#define _tunlink _wunlink
|
|
|
|
#define _tfinddata_t _wfinddata_t
|
|
#define _tfinddatai64_t _wfinddatai64_t
|
|
|
|
|
|
/* Stat functions */
|
|
|
|
#define _tstat _wstat
|
|
#define _tstati64 _wstati64
|
|
#define _tfstat _wfstat
|
|
#define _tfstati64 _wfstati64
|
|
|
|
|
|
/* Setlocale functions */
|
|
|
|
#define _tsetlocale _wsetlocale
|
|
|
|
|
|
/* Redundant "logical-character" mappings */
|
|
|
|
#define _tcsclen wcslen
|
|
#define _tcsnccat wcsncat
|
|
#define _tcsnccpy wcsncpy
|
|
#define _tcsncset _wcsnset
|
|
|
|
#define _tcsdec _wcsdec
|
|
#define _tcsinc _wcsinc
|
|
#define _tcsnbcnt _wcsncnt
|
|
#define _tcsnccnt _wcsncnt
|
|
#define _tcsnextc _wcsnextc
|
|
#define _tcsninc _wcsninc
|
|
#define _tcsspnp _wcsspnp
|
|
|
|
#define _tcslwr _wcslwr
|
|
#define _tcsupr _wcsupr
|
|
#define _tcsxfrm wcsxfrm
|
|
|
|
#if defined(__cplusplus) && defined(__INLINE_FUNCTIONS__)
|
|
inline size_t _tclen( const wchar_t * ) {
|
|
return( 1 );
|
|
}
|
|
inline void _tccpy( wchar_t *__p1, const wchar_t *__p2 ) {
|
|
*__p1 = (wchar_t)*__p2;
|
|
}
|
|
inline int _tccmp( const wchar_t *__p1, const wchar_t *__p2 ) {
|
|
return( (int) ((*__p1)-(*__p2)) );
|
|
}
|
|
#else
|
|
#define _tclen(__p) (1)
|
|
#define _tccpy(__p1,__p2) ((*(__p1) = *(__p2)))
|
|
#define _tccmp(__p1,__p2) ((*(__p1))-(*(__p2)))
|
|
#endif
|
|
|
|
|
|
/* ctype functions */
|
|
|
|
#define _istalnum iswalnum
|
|
#define _istalpha iswalpha
|
|
#define _istascii iswascii
|
|
#define _istcntrl iswcntrl
|
|
#define _istdigit iswdigit
|
|
#define _istgraph iswgraph
|
|
#define _istlower iswlower
|
|
#define _istprint iswprint
|
|
#define _istpunct iswpunct
|
|
#define _istspace iswspace
|
|
#define _istupper iswupper
|
|
#define _istxdigit iswxdigit
|
|
|
|
#define _totupper towupper
|
|
#define _totlower towlower
|
|
|
|
#define _istlegal(_c) (1)
|
|
#define _istlead(_c) (0)
|
|
#define _istleadbyte(_c) (0)
|
|
|
|
#if defined(__cplusplus) && defined(__INLINE_FUNCTIONS__)
|
|
inline wchar_t *_wcsdec( const wchar_t *, const wchar_t *__p ) {
|
|
return( (wchar_t *)(__p-1) );
|
|
}
|
|
inline wchar_t *_wcsinc( const wchar_t *__p ) {
|
|
return( (wchar_t *)(__p+1) );
|
|
}
|
|
inline unsigned int _wcsnextc( const wchar_t *__p ) {
|
|
return( (unsigned int)*__p );
|
|
}
|
|
inline wchar_t *_wcsninc( const wchar_t *__p, size_t __l ) {
|
|
return( (wchar_t *)(__p+__l) );
|
|
}
|
|
inline size_t _wcsncnt( const wchar_t *__p, size_t __l ) {
|
|
size_t __i;
|
|
__i = wcslen(__p);
|
|
return( (__i>__l) ? __l : __i );
|
|
}
|
|
inline wchar_t *_wcsspnp( const wchar_t *__p1, const wchar_t *__p2 ) {
|
|
return( (*(__p1 += wcsspn(__p1,__p2))!='\0') ? (wchar_t*)__p1 : NULL );
|
|
}
|
|
#else
|
|
#define _wcsdec(__p1, __p2) ((__p2)-1)
|
|
#define _wcsinc(__p) ((__p)+1)
|
|
#define _wcsnextc(__p) ((unsigned int) *(__p))
|
|
#define _wcsninc(__p, __l) (((__p)+(__l)))
|
|
#define _wcsncnt(__p, __l) ((wcslen(__p)>__l) ? __l : wcslen(__p))
|
|
#define _wcsspnp(__p1, __p2) ((*((__p1)+wcsspn(__p1,__p2))) ? \
|
|
((__p1)+wcsspn(__p1,__p2)) : NULL)
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
namespace std {
|
|
#endif
|
|
_WMRTLINK extern double wcstod( const wchar_t *__nptr, wchar_t **__endptr );
|
|
_WCRTLINK extern long int wcstol( const wchar_t *, wchar_t **, int );
|
|
_WCRTLINK extern unsigned long int wcstoul( const wchar_t *, wchar_t **, int );
|
|
#ifdef __cplusplus
|
|
}
|
|
using std::wcstod;
|
|
using std::wcstol;
|
|
using std::wcstoul;
|
|
#endif
|
|
|
|
_WCRTLINK extern int _wcsicmp( const wchar_t *, const wchar_t * );
|
|
_WCRTLINK extern int _wcsnicmp( const wchar_t *, const wchar_t *, size_t );
|
|
_WCRTLINK extern wchar_t *_wcsdup( const wchar_t * );
|
|
_WCRTLINK extern wchar_t *_wcslwr( wchar_t * );
|
|
_WCRTLINK extern wchar_t *_wcsupr( wchar_t * );
|
|
_WCRTLINK extern wchar_t *_wcsset( wchar_t *, wchar_t );
|
|
_WCRTLINK extern wchar_t *_wcsnset( wchar_t *, int, size_t );
|
|
_WCRTLINK extern wchar_t *_wcsrev( wchar_t * );
|
|
|
|
#else
|
|
// **************************** SBCS and MBCS ********************************
|
|
|
|
#define _TEOF EOF
|
|
|
|
#define __T(x) x
|
|
|
|
/* Program */
|
|
|
|
#define _tmain main
|
|
#define _tWinMain WinMain
|
|
#define _tenviron environ
|
|
#define __targc __argc
|
|
#define __targv __argv
|
|
|
|
|
|
/* Formatted i/o */
|
|
|
|
#define _tprintf printf
|
|
#define _ftprintf fprintf
|
|
#define _stprintf sprintf
|
|
#define _sntprintf snprintf
|
|
#define _vtprintf vprintf
|
|
#define _vftprintf vfprintf
|
|
#define _vstprintf vsprintf
|
|
#define _tscanf scanf
|
|
#define _ftscanf fscanf
|
|
#define _stscanf sscanf
|
|
|
|
|
|
/* Unformatted i/o */
|
|
|
|
#define _fgettc fgetc
|
|
#define _fgettchar _fgetchar
|
|
#define _fgetts fgets
|
|
#define _fputtc fputc
|
|
#define _fputtchar _fputchar
|
|
#define _fputts fputs
|
|
#define _gettc getc
|
|
#define _gettchar getchar
|
|
#define _getts gets
|
|
#define _puttc putc
|
|
#define _puttchar putchar
|
|
#define _putts puts
|
|
#define _ungettc ungetc
|
|
|
|
|
|
/* String conversion functions */
|
|
|
|
#define _tcstod strtod
|
|
#define _tcstol strtol
|
|
#define _tcstoul strtoul
|
|
|
|
#define _itot itoa
|
|
#define _ltot ltoa
|
|
#define _ultot ultoa
|
|
#define _ttoi atoi
|
|
#define _ttol atol
|
|
|
|
|
|
/* String functions */
|
|
|
|
#define _tcscat strcat
|
|
#define _tcscpy strcpy
|
|
#define _tcslen strlen
|
|
#define _tcsxfrm strxfrm
|
|
#define _tcsdup strdup
|
|
|
|
|
|
/* Execute functions */
|
|
|
|
#define _texecl execl
|
|
#define _texecle execle
|
|
#define _texeclp execlp
|
|
#define _texeclpe execlpe
|
|
#define _texecv execv
|
|
#define _texecve execve
|
|
#define _texecvp execvp
|
|
#define _texecvpe execvpe
|
|
|
|
#define _tspawnl spawnl
|
|
#define _tspawnle spawnle
|
|
#define _tspawnlp spawnlp
|
|
#define _tspawnlpe spawnlpe
|
|
#define _tspawnv spawnv
|
|
#define _tspawnve spawnve
|
|
#define _tspawnvp spawnvp
|
|
#define _tspawnvpe spawnvpe
|
|
|
|
#define _tsystem system
|
|
|
|
|
|
/* Time functions */
|
|
|
|
#define _tasctime asctime
|
|
#define _tctime ctime
|
|
#define _tstrdate _strdate
|
|
#define _tstrtime strtime
|
|
#define _tutime utime
|
|
#define _tcsftime strftime
|
|
|
|
|
|
/* Directory functions */
|
|
|
|
#define _tchdir chdir
|
|
#define _tclosedir closedir
|
|
#define _tgetcwd getcwd
|
|
#define _tgetdcwd getdcwd
|
|
#define _tmkdir mkdir
|
|
#define _topendir opendir
|
|
#define _treaddir readdir
|
|
#define _trewinddir rewinddir
|
|
#define _trmdir rmdir
|
|
|
|
|
|
/* Directory struct */
|
|
#define _tdirent dirent
|
|
|
|
|
|
/* Environment/Path functions */
|
|
|
|
#define _tfullpath _fullpath
|
|
#define _tgetenv getenv
|
|
#define _tmakepath _makepath
|
|
#define _tputenv putenv
|
|
#define _tsearchenv searchenv
|
|
#define _tsplitpath _splitpath
|
|
|
|
|
|
/* Stdio functions */
|
|
|
|
#define _tfdopen fdopen
|
|
#define _tfsopen _fsopen
|
|
#define _tfopen fopen
|
|
#define _tfreopen freopen
|
|
#define _tperror perror
|
|
#define _ttmpnam tmpnam
|
|
|
|
|
|
/* Io functions */
|
|
|
|
#define _taccess access
|
|
#define _tchmod chmod
|
|
#define _tcreat creat
|
|
#define _tfindfirst _findfirst
|
|
#define _tfindfirsti64 _findfirsti64
|
|
#define _tfindnext _findnext
|
|
#define _tfindnexti64 _findnexti64
|
|
#define _topen open
|
|
#define _tremove remove
|
|
#define _trename rename
|
|
#define _tsopen sopen
|
|
#define _tunlink unlink
|
|
|
|
#define _tfinddata_t _finddata_t
|
|
#define _tfinddatai64_t _finddatai64_t
|
|
|
|
|
|
/* ctype functions */
|
|
|
|
#define _istascii isascii
|
|
#define _istcntrl iscntrl
|
|
#define _istxdigit isxdigit
|
|
|
|
|
|
/* Stat functions */
|
|
|
|
#define _tstat stat
|
|
#define _tstati64 _stati64
|
|
#define _tfstat fstat
|
|
#define _tfstati64 _fstati64
|
|
|
|
|
|
/* Setlocale functions */
|
|
|
|
#define _tsetlocale setlocale
|
|
|
|
|
|
#ifdef _MBCS
|
|
// **************************** MBCS *****************************************
|
|
|
|
#ifndef __TCHAR_DEFINED
|
|
typedef char _TCHAR;
|
|
typedef signed char _TSCHAR;
|
|
typedef unsigned char _TUCHAR;
|
|
typedef unsigned char _TXCHAR;
|
|
typedef unsigned int _TINT;
|
|
#define __TCHAR_DEFINED
|
|
#endif
|
|
|
|
#ifndef _TCHAR_DEFINED
|
|
|
|
#if !defined(NO_EXT_KEYS) /* extensions enabled */
|
|
typedef char TCHAR;
|
|
#endif /* extensions enabled */
|
|
|
|
#define _TCHAR_DEFINED
|
|
#endif
|
|
|
|
#ifdef _MB_MAP_DIRECT
|
|
|
|
/* use mb functions directly - types must match */
|
|
|
|
/* String functions */
|
|
|
|
#define _tcschr _mbschr
|
|
#define _tcscspn _mbscspn
|
|
#define _tcsncat _mbsnbcat
|
|
#define _tcsncpy _mbsnbcpy
|
|
#define _tcspbrk _mbspbrk
|
|
#define _tcsrchr _mbsrchr
|
|
#define _tcsspn _mbsspn
|
|
#define _tcsstr _mbsstr
|
|
#define _tcstok _mbstok
|
|
|
|
#define _tcsnset _mbsnbset
|
|
#define _tcsrev _mbsrev
|
|
#define _tcsset _mbsset
|
|
|
|
#define _tcscmp _mbscmp
|
|
#define _tcsicmp _mbsicmp
|
|
#define _tcsnccmp _mbsncmp
|
|
#define _tcsncmp _mbsnbcmp
|
|
#define _tcsncicmp _mbsnicmp
|
|
#define _tcsnicmp _mbsnbicmp
|
|
|
|
#define _tcscoll _mbscoll
|
|
#define _tcsicoll _mbsicoll
|
|
#define _tcsnccoll _mbsncoll
|
|
#define _tcsncoll _mbsnbcoll
|
|
#define _tcsncicoll _mbsnicoll
|
|
#define _tcsnicoll _mbsnbicoll
|
|
|
|
|
|
/* "logical-character" mappings */
|
|
|
|
#define _tcsclen _mbslen
|
|
#define _tcsnccat _mbsncat
|
|
#define _tcsnccpy _mbsncpy
|
|
#define _tcsncset _mbsnset
|
|
|
|
|
|
/* MBCS-specific mappings */
|
|
|
|
#define _tcsdec _mbsdec
|
|
#define _tcsinc _mbsinc
|
|
#define _tcsnbcnt _mbsnbcnt
|
|
#define _tcsnccnt _mbsnccnt
|
|
#define _tcsnextc _mbsnextc
|
|
#define _tcsninc _mbsninc
|
|
#define _tcsspnp _mbsspnp
|
|
|
|
#define _tcslwr _mbslwr
|
|
#define _tcsupr _mbsupr
|
|
|
|
#define _tclen _mbclen
|
|
#define _tccpy _mbccpy
|
|
|
|
#define _tccmp _mbccmp
|
|
|
|
#else
|
|
|
|
#if defined(__cplusplus) && defined(__INLINE_FUNCTIONS__)
|
|
|
|
/* the default: use type-safe inline function thunks */
|
|
|
|
/* String functions */
|
|
|
|
inline char *_tcschr( const char *__p, unsigned int __c ) {
|
|
return( (char *)_mbschr( (const unsigned char *)__p, __c ) );
|
|
}
|
|
inline size_t _tcscspn( const char *__p1, const char *__p2 ) {
|
|
return( _mbscspn( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2 ) );
|
|
}
|
|
inline char *_tcsncat( char *__p1, const char *__p2, size_t __l ) {
|
|
return( (char *)_mbsnbcat( (unsigned char *)__p1,
|
|
(const unsigned char *)__p2, __l ) );
|
|
}
|
|
inline char *_tcsncpy( char *__p1, const char *__p2, size_t __l ) {
|
|
return( (char *)_mbsnbcpy( (unsigned char *)__p1,
|
|
(const unsigned char *)__p2, __l ) );
|
|
}
|
|
inline char *_tcspbrk( const char *__p1, const char *__p2 ) {
|
|
return( (char *)_mbspbrk( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2 ) );
|
|
}
|
|
inline char *_tcsrchr( const char *__p, unsigned int __c ) {
|
|
return( (char *)_mbsrchr( (const unsigned char *)__p, __c ) );
|
|
}
|
|
inline size_t _tcsspn( const char *__p1, const char *__p2 ) {
|
|
return( _mbsspn( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2 ) );
|
|
}
|
|
inline char *_tcsstr( const char *__p1, const char *__p2 ) {
|
|
return( (char *)_mbsstr( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2 ) );
|
|
}
|
|
inline char *_tcstok( char *__p1, const char *__p2 ) {
|
|
return( (char *)_mbstok( (unsigned char *)__p1,
|
|
(const unsigned char *)__p2 ) );
|
|
}
|
|
|
|
inline char *_tcsnset( char *__p, unsigned int __c, size_t __l ) {
|
|
return( (char *)_mbsnbset( (unsigned char *)__p, __c, __l ) );
|
|
}
|
|
inline char *_tcsrev( char *__p ) {
|
|
return( (char *)_mbsrev( (unsigned char *)__p ) );
|
|
}
|
|
inline char *_tcsset(char *__p, unsigned int __c ) {
|
|
return( (char *)_mbsset( (unsigned char *)__p, __c ) );
|
|
}
|
|
|
|
inline int _tcscmp( const char *__p1, const char *__p2 ) {
|
|
return( _mbscmp( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2 ) );
|
|
}
|
|
inline int _tcsicmp( const char *__p1, const char *__p2 ) {
|
|
return( _mbsicmp( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2 ) );
|
|
}
|
|
inline int _tcsnccmp( const char *__p1, const char *__p2, size_t __l ) {
|
|
return( _mbsncmp( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2, __l ) );
|
|
}
|
|
inline int _tcsncmp( const char *__p1, const char *__p2, size_t __l ) {
|
|
return( _mbsnbcmp( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2, __l ) );
|
|
}
|
|
inline int _tcsncicmp( const char *__p1, const char *__p2, size_t __l ) {
|
|
return( _mbsnicmp( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2, __l ) );
|
|
}
|
|
inline int _tcsnicmp( const char *__p1, const char *__p2, size_t __l ) {
|
|
return( _mbsnbicmp( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2, __l ) );
|
|
}
|
|
|
|
inline int _tcscoll( const char *__p1, const char *__p2 ) {
|
|
return( _mbscoll( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2 ) );
|
|
}
|
|
inline int _tcsicoll( const char *__p1, const char *__p2 ) {
|
|
return( _mbsicoll( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2 ) );
|
|
}
|
|
inline int _tcsnccoll( const char *__p1, const char *__p2, size_t __l ) {
|
|
return( _mbsncoll( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2, __l ) );
|
|
}
|
|
inline int _tcsncoll( const char *__p1, const char *__p2, size_t __l ) {
|
|
return( _mbsnbcoll( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2, __l ) );
|
|
}
|
|
inline int _tcsncicoll( const char *__p1, const char *__p2, size_t __l ) {
|
|
return( _mbsnicoll( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2, __l ) );
|
|
}
|
|
inline int _tcsnicoll( const char *__p1, const char *__p2, size_t __l ) {
|
|
return( _mbsnbicoll( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2, __l ) );
|
|
}
|
|
|
|
|
|
/* "logical-character" mappings */
|
|
|
|
inline size_t _tcsclen( const char *__p ) {
|
|
return( _mbslen( (const unsigned char *)__p ) );
|
|
}
|
|
inline char *_tcsnccat( char *__p1, const char *__p2, size_t __l ) {
|
|
return( (char *)_mbsncat( (unsigned char *)__p1,
|
|
(const unsigned char *)__p2, __l ) );
|
|
}
|
|
inline char *_tcsnccpy( char *__p1, const char *__p2, size_t __l ) {
|
|
return( (char *)_mbsncpy( (unsigned char *)__p1,
|
|
(const unsigned char *)__p2, __l ) );
|
|
}
|
|
inline char *_tcsncset( char *__p, unsigned int __c, size_t __l ) {
|
|
return( (char *)_mbsnset( (unsigned char *)__p, __c, __l ) );
|
|
}
|
|
|
|
|
|
/* MBCS-specific mappings */
|
|
|
|
inline char *_tcsdec( const char *__p1, const char *__p2 ) {
|
|
return( (char *)_mbsdec( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2 ) );
|
|
}
|
|
inline char *_tcsinc( const char *__p ) {
|
|
return( (char *)_mbsinc( (const unsigned char *)__p ) );
|
|
}
|
|
inline size_t _tcsnbcnt( const char *__p, size_t __l ) {
|
|
return( _mbsnbcnt( (const unsigned char *)__p, __l ) );
|
|
}
|
|
inline size_t _tcsnccnt( const char *__p, size_t __l ) {
|
|
return( _mbsnccnt( (const unsigned char *)__p, __l ) );
|
|
}
|
|
inline char *_tcsninc( const char *__p, size_t __l ) {
|
|
return( (char *)_mbsninc( (const unsigned char *)__p, __l ) );
|
|
}
|
|
inline char *_tcsspnp( const char *__p1, const char *__p2 ) {
|
|
return( (char *)_mbsspnp( (const unsigned char *)__p1,
|
|
(const unsigned char *)__p2 ) );
|
|
}
|
|
inline char *_tcslwr( char *__p ) {
|
|
return( (char *)_mbslwr( (unsigned char *)__p ) );
|
|
}
|
|
inline char *_tcsupr( char *__p ) {
|
|
return( (char *)_mbsupr( (unsigned char *)__p ) );
|
|
}
|
|
|
|
inline size_t _tclen( const char *__p ) {
|
|
return( _mbclen( (const unsigned char *)__p ) );
|
|
}
|
|
|
|
inline void _tccpy( char *__p1, const char *__p2 ) {
|
|
_mbccpy( (unsigned char *)__p1, (const unsigned char *)__p2 );
|
|
}
|
|
|
|
inline int _tccmp( const char *__p1, const char *__p2 ) {
|
|
return _mbccmp( (const unsigned char *)__p1, (const unsigned char *)__p2 );
|
|
}
|
|
|
|
inline unsigned int _tcsnextc( const char *__p ) {
|
|
return( _mbsnextc( (const unsigned char *)__p ) );
|
|
}
|
|
|
|
#else
|
|
|
|
/* use type-safe linked-in function thunks */
|
|
|
|
/* String functions */
|
|
|
|
_WCRTLINK extern char *_tcschr(const char *, unsigned int);
|
|
_WCRTLINK extern size_t _tcscspn(const char *, const char *);
|
|
_WCRTLINK extern char *_tcsncat(char *, const char *, size_t);
|
|
_WCRTLINK extern char *_tcsncpy(char *, const char *, size_t);
|
|
_WCRTLINK extern char *_tcspbrk(const char *, const char *);
|
|
_WCRTLINK extern char *_tcsrchr(const char *, int);
|
|
_WCRTLINK extern size_t _tcsspn(const char *, const char *);
|
|
_WCRTLINK extern char *_tcsstr(const char *, const char *);
|
|
_WCRTLINK extern char *_tcstok(char *, const char *);
|
|
|
|
_WCRTLINK extern char *_tcsnset(char *, unsigned int, size_t);
|
|
_WCRTLINK extern char *_tcsrev(char *);
|
|
_WCRTLINK extern char *_tcsset(char *, unsigned int);
|
|
|
|
_WCRTLINK extern int _tcscmp(const char *, const char *);
|
|
_WCRTLINK extern int _tcsicmp(const char *, const char *);
|
|
_WCRTLINK extern int _tcsnccmp(const char *, const char *, size_t);
|
|
_WCRTLINK extern int _tcsncmp(const char *, const char *, size_t);
|
|
_WCRTLINK extern int _tcsncicmp(const char *, const char *, size_t);
|
|
_WCRTLINK extern int _tcsnicmp(const char *, const char *, size_t);
|
|
|
|
_WCRTLINK extern int _tcscoll(const char *, const char *);
|
|
_WCRTLINK extern int _tcsicoll(const char *, const char *);
|
|
_WCRTLINK extern int _tcsnccoll(const char *, const char *, size_t);
|
|
_WCRTLINK extern int _tcsncoll(const char *, const char *, size_t);
|
|
_WCRTLINK extern int _tcsncicoll(const char *, const char *, size_t);
|
|
_WCRTLINK extern int _tcsnicoll(const char *, const char *, size_t);
|
|
|
|
|
|
/* "logical-character" mappings */
|
|
|
|
_WCRTLINK extern size_t _tcsclen(const char *);
|
|
_WCRTLINK extern char *_tcsnccat(char *, const char *, size_t);
|
|
_WCRTLINK extern char *_tcsnccpy(char *, const char *, size_t);
|
|
_WCRTLINK extern char *_tcsncset(char *, unsigned int, size_t);
|
|
|
|
|
|
/* MBCS-specific mappings */
|
|
|
|
_WCRTLINK extern char *_tcsdec(const char *, const char *);
|
|
_WCRTLINK extern char *_tcsinc(const char *);
|
|
_WCRTLINK extern size_t _tcsnbcnt(const char *, size_t);
|
|
_WCRTLINK extern size_t _tcsnccnt(const char *, size_t);
|
|
_WCRTLINK extern unsigned int _tcsnextc (const char *);
|
|
_WCRTLINK extern char *_tcsninc(const char *, size_t);
|
|
_WCRTLINK extern char *_tcsspnp(const char *, const char *);
|
|
|
|
_WCRTLINK extern char *_tcslwr(char *);
|
|
_WCRTLINK extern char *_tcsupr(char *);
|
|
|
|
_WCRTLINK extern size_t _tclen(const char *);
|
|
_WCRTLINK extern void _tccpy(char *, const char *);
|
|
_WCRTLINK extern int _tccmp(const char *, const char *);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
/* ctype functions */
|
|
|
|
#define _istalnum _ismbcalnum
|
|
#define _istalpha _ismbcalpha
|
|
#define _istdigit _ismbcdigit
|
|
#define _istgraph _ismbcgraph
|
|
#define _istlegal _ismbclegal
|
|
#define _istlower _ismbclower
|
|
#define _istprint _ismbcprint
|
|
#define _istpunct _ismbcpunct
|
|
#define _istspace _ismbcspace
|
|
#define _istupper _ismbcupper
|
|
|
|
#define _totupper _mbctoupper
|
|
#define _totlower _mbctolower
|
|
|
|
#define _istlead _ismbblead
|
|
#define _istleadbyte isleadbyte
|
|
|
|
#else
|
|
// **************************** SBCS *****************************************
|
|
|
|
#ifndef __TCHAR_DEFINED
|
|
typedef char _TCHAR;
|
|
typedef signed char _TSCHAR;
|
|
typedef unsigned char _TUCHAR;
|
|
typedef char _TXCHAR;
|
|
typedef int _TINT;
|
|
#define __TCHAR_DEFINED
|
|
#endif
|
|
|
|
#ifndef _TCHAR_DEFINED
|
|
|
|
#if !defined(NO_EXT_KEYS) /* extensions enabled */
|
|
typedef char TCHAR;
|
|
#endif /* extensions enabled */
|
|
|
|
#define _TCHAR_DEFINED
|
|
#endif
|
|
|
|
/* String functions */
|
|
|
|
#define _tcschr strchr
|
|
#define _tcscspn strcspn
|
|
#define _tcsncat strncat
|
|
#define _tcsncpy strncpy
|
|
#define _tcspbrk strpbrk
|
|
#define _tcsrchr strrchr
|
|
#define _tcsspn strspn
|
|
#define _tcsstr strstr
|
|
#define _tcstok strtok
|
|
|
|
#define _tcsnset strnset
|
|
#define _tcsrev strrev
|
|
#define _tcsset strset
|
|
|
|
#define _tcscmp strcmp
|
|
#define _tcsicmp stricmp
|
|
#define _tcsnccmp strncmp
|
|
#define _tcsncmp strncmp
|
|
#define _tcsncicmp strnicmp
|
|
#define _tcsnicmp strnicmp
|
|
|
|
#define _tcscoll strcoll
|
|
#define _tcsicoll _stricoll
|
|
#define _tcsnccoll _strncoll
|
|
#define _tcsncoll _strncoll
|
|
#define _tcsncicoll _strnicoll
|
|
#define _tcsnicoll _strnicoll
|
|
|
|
|
|
/* "logical-character" mappings */
|
|
|
|
#define _tcsclen strlen
|
|
#define _tcsnccat strncat
|
|
#define _tcsnccpy strncpy
|
|
#define _tcsncset strnset
|
|
|
|
#define _tcsdec _strdec
|
|
#define _tcsinc _strinc
|
|
#define _tcsnbcnt _strncnt
|
|
#define _tcsnccnt _strncnt
|
|
#define _tcsnextc _strnextc
|
|
#define _tcsninc _strninc
|
|
#define _tcsspnp _strspnp
|
|
|
|
#define _tcslwr strlwr
|
|
#define _tcsupr strupr
|
|
#define _tcsxfrm strxfrm
|
|
|
|
#if defined(__cplusplus) && defined(__INLINE_FUNCTIONS__)
|
|
inline size_t _tclen( const char * ) {
|
|
return( 1 );
|
|
}
|
|
inline void _tccpy( char *__p1, const char *__p2 ) {
|
|
*__p1 = *__p2;
|
|
}
|
|
inline int _tccmp( const char *__p1, const char *__p2 ) {
|
|
return( (int) (((unsigned char)*__p1)-((unsigned char)*__p2)) );
|
|
}
|
|
#else
|
|
#define _tclen(__p) (1)
|
|
#define _tccpy(__p1,__p2) ((*(__p1) = *(__p2)))
|
|
#define _tccmp(__p1,__p2) (((unsigned char)*(__p1))-((unsigned char)*(__p2)))
|
|
#endif
|
|
|
|
|
|
/* ctype functions */
|
|
|
|
#define _istalnum isalnum
|
|
#define _istalpha isalpha
|
|
#define _istdigit isdigit
|
|
#define _istgraph isgraph
|
|
#define _istlower islower
|
|
#define _istprint isprint
|
|
#define _istpunct ispunct
|
|
#define _istspace isspace
|
|
#define _istupper isupper
|
|
|
|
#define _totupper toupper
|
|
#define _totlower tolower
|
|
|
|
#define _istlegal(_c) (1)
|
|
#define _istlead(_c) (0)
|
|
#define _istleadbyte(_c) (0)
|
|
|
|
#if defined(__cplusplus) && defined(__INLINE_FUNCTIONS__)
|
|
inline char *_strdec( const char *, const char *__p ) {
|
|
return( (char *)(__p-1) );
|
|
}
|
|
inline char *_strinc( const char *__p ) {
|
|
return( (char *)(__p+1) );
|
|
}
|
|
inline unsigned int _strnextc( const char *__p ) {
|
|
return( (unsigned int)*__p );
|
|
}
|
|
inline char *_strninc( const char *__p, size_t __l ) {
|
|
return( (char *)(__p+__l) );
|
|
}
|
|
inline size_t _strncnt( const char *__p, size_t __l ) {
|
|
size_t __i;
|
|
__i = strlen(__p);
|
|
return( (__i>__l) ? __l : __i );
|
|
}
|
|
inline char *_strspnp( const char *__p1, const char *__p2 ) {
|
|
return( (*(__p1 += strspn(__p1,__p2))!='\0') ? (char*)__p1 : NULL );
|
|
}
|
|
#else
|
|
#define _strdec(__p1, __p2) ((__p2)-1)
|
|
#define _strinc(__p) ((__p)+1)
|
|
#define _strnextc(__p) ((unsigned int) *(__p))
|
|
#define _strninc(__p, __l) (((__p)+(__l)))
|
|
#define _strncnt(__p, __l) ((strlen(__p)>__l) ? __l : strlen(__p))
|
|
#define _strspnp(__p1, __p2) ((*((__p1)+strspn(__p1,__p2))) ? \
|
|
((__p1)+strspn(__p1,__p2)) : NULL)
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#define _T(x) __T(x)
|
|
#define _TEXT(x) __T(x)
|
|
|
|
#endif
|