home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / TCHAR.H < prev    next >
C/C++ Source or Header  |  1997-02-28  |  28KB  |  871 lines

  1. /*
  2.  *      C/C++ Run Time Library - Version 8.0
  3.  *
  4.  *      Copyright (c) 1995, 1997 by Borland International
  5.  *      All Rights Reserved.
  6.  *
  7.  */
  8. /* $Revision:   8.58  $ */
  9.  
  10. #if !defined(__TCHAR_H)
  11. #define __TCHAR_H
  12.  
  13. #if !defined(__STDDEF_H)
  14. #include <stddef.h>
  15. #endif
  16.  
  17. #if !defined(___DEFS_H)
  18. #include <_defs.h>
  19. #endif
  20.  
  21. #if !defined(__STRING_H)
  22. #include <string.h>
  23. #endif
  24.  
  25. #ifdef  __cplusplus
  26. extern "C" {
  27. #endif
  28.  
  29. #if defined(_MBCS)
  30. #include <mbstring.h>
  31. #endif
  32.  
  33. #if !defined(_UNICODE)
  34.  
  35. /* Common functions between SBCS & MBCS */
  36.  
  37. #ifndef __TCHAR_DEFINED
  38. typedef char            _TCHAR;
  39. typedef signed char     _TSCHAR;
  40. typedef unsigned char   _TUCHAR;
  41. typedef char            _TXCHAR;
  42. typedef int             _TINT;
  43. #define __TCHAR_DEFINED
  44. #endif
  45.  
  46. #if !defined(__FLAT__)
  47. #define _tfdopen        fdopen
  48. #define _fputtchar      fputchar
  49. #define _fgettchar      fgetchar
  50. #define _tmktemp        mktemp
  51. #define _tunlink        unlink
  52. #define _ttempnam       tempnam
  53. #define _trmdir         rmdir
  54. #define _tmkdir         mkdir
  55. #define _tutime         utime
  56. #define _ltot           ltoa
  57. #define _tsopen         sopen
  58. #else
  59. #define _tfdopen        _fdopen
  60. #define _fputtchar      _fputchar
  61. #define _fgettchar      _fgetchar
  62. #define _tmktemp        _mktemp
  63. #define _tunlink        _unlink
  64. #define _ttempnam       _tempnam
  65. #define _trmdir         _rmdir
  66. #define _tmkdir         _mkdir
  67. #define _tutime         _utime
  68. #define _ltot           _ltoa
  69. #define _tsopen         _sopen
  70. #endif
  71.  
  72. /* program specific mappings*/
  73.  
  74. #define _tmain          main
  75. #define _tWinMain       WinMain
  76. #define _tenviron       _environ
  77. #define _targv          _argv
  78.  
  79. /*  Path / Environment  specific mappings  */
  80.  
  81. #define _tfullpath      _fullpath
  82. #define _tmakepath      _makepath
  83. #define _tsplitpath     _splitpath
  84. #define _tsearchpath    searchpath
  85. #define _tsearchenv     _searchenv
  86. #define _tsearchstr     _searchstr
  87. #define _tgetenv        getenv
  88. #define _tputenv        putenv
  89. #define _tfnsplit       fnsplit
  90. #define _tfnmerge       fnmerge
  91.  
  92. /* directory functions */
  93.  
  94. #define _topendir       opendir
  95. #define _treaddir       readdir
  96. #define _trewinddir     rewinddir
  97. #define _tclosedir      closedir
  98. #define _tDIR           DIR
  99. #define _tdirent        dirent
  100.  
  101. /* stdio functions   */
  102.  
  103. #define _tpopen         _popen
  104. #define _tfsopen        _fsopen
  105. #define _tfopen         fopen
  106. #define _tfreopen       freopen
  107. #define _tperror        perror
  108. #define _ttmpnam        tmpnam
  109.  
  110. /* Time functions     */
  111.  
  112. #define _tstrdate       _strdate
  113. #define _tstrtime       _strtime
  114. #define _tasctime       asctime
  115. #define _tctime         ctime
  116. #define _tcsftime       strftime
  117. #define _ttzset         _tzset
  118. #define _ttzname        _tzname
  119.  
  120. /*  I/O functions   */
  121.  
  122. #define _taccess        access
  123. #define _tchmod         chmod
  124. #define _trtl_open      _rtl_open
  125. #define _trtl_creat     _rtl_creat
  126. #define _trtl_chmod     _rtl_chmod
  127. #define _tcreat         creat
  128. #define _tfindfirst     findfirst
  129. #define _tfindnext      findnext
  130. #define _topen          open
  131. #define _tremove        remove
  132. #define _trename        rename
  133.  
  134. #define _tffblk         ffblk
  135.  
  136. /* string conversion functions */
  137.  
  138. #define _ttof           atof
  139. #define _ttoi           atoi
  140. #define _ttol           atol
  141. #define _ttoi64         _atoi64
  142. #define _ttold          _atold
  143. #define _tcstod         strtod
  144. #define _tcstol         strtol
  145. #define _tcstold        _strtold
  146. #define _tcstoul        strtoul
  147. #define _itot           itoa
  148. #define _ultot          ultoa
  149. #define _i64tot         _i64toa
  150. #define _ui64tot        _ui64toa
  151.  
  152. /* string functions  */
  153.  
  154. #define _tcscat         strcat
  155. #define _tcscpy         strcpy
  156. #define _tcspcpy        _stpcpy
  157. #define _tcslen         strlen
  158. #define _tcsdup         strdup
  159.  
  160. /* directory functions */
  161.  
  162. #define _tchdir         chdir
  163. #define _tgetcurdir     getcurdir
  164. #define _tgetcwd        getcwd
  165. #define _tgetdcwd       _getdcwd
  166.  
  167. /* Execute functions */
  168.  
  169. #define _texecl     execl
  170. #define _texecle    execle
  171. #define _texeclp    execlp
  172. #define _texeclpe   execlpe
  173. #define _texecv     execv
  174. #define _texecve    execve
  175. #define _texecvp    execvp
  176. #define _texecvpe   execvpe
  177.  
  178. #define _tspawnl    spawnl
  179. #define _tspawnle   spawnle
  180. #define _tspawnlp   spawnlp
  181. #define _tspawnlpe  spawnlpe
  182. #define _tspawnv    spawnv
  183. #define _tspawnve   spawnve
  184. #define _tspawnvp   spawnvp
  185. #define _tspawnvpe  spawnvpe
  186.  
  187. #define _tsystem    system
  188.  
  189. /* Unformated I/O */
  190.  
  191. #define _fgettc         fgetc
  192. #define _fgetts         fgets
  193. #define _fputtc         fputc
  194. #define _fputts         fputs
  195. #define _gettc          getc
  196. #define _gettchar       getchar
  197. #define _getts          gets
  198. #define _puttc          putc
  199. #define _puttchar       putchar
  200. #define _putts          puts
  201. #define _ungettc        ungetc
  202.  
  203. /* Formated I/O */
  204.  
  205. #define _ftprintf       fprintf
  206. #define _tprintf        printf
  207. #define _stprintf       sprintf
  208. #define _vtprintf       vprintf
  209. #define _vftprintf      vfprintf
  210. #define _vstprintf      vsprintf
  211.  
  212. #define _tscanf         scanf
  213. #define _stscanf        sscanf
  214. #define _ftscanf        fscanf
  215. #define _stscanf        sscanf
  216. #define _vstscanf       vsscanf
  217. #define _vtscanf        vscanf
  218. #define _vftscanf       vfscanf
  219.  
  220. /* Stat functions */
  221.  
  222. #define _tstat          _stat
  223. #define _tstati64       _stati64
  224.  
  225. /* Setlocale functions */
  226.  
  227. #define _tsetlocale setlocale
  228.  
  229. /* memory functions */
  230.  
  231. #define _tmemcpy        memcpy
  232. #define _tmemchr        memchr
  233. #define _tmemset        memset
  234.  
  235. /* Generic Text macros */
  236.  
  237. #define __T(x)          x
  238. #define _TEXT(x)        __T(x)
  239. #define _T(x)           __T(x)
  240. #define _TEOF           EOF
  241.  
  242. #if defined(_MBCS)
  243.  
  244. /* ----------------- MBCS functions -------------------------- */
  245.  
  246. #ifndef __TCHAR_DEFINED
  247. typedef char            _TCHAR;
  248. typedef signed char     _TSCHAR;
  249. typedef unsigned char   _TUCHAR;
  250. typedef unsigned char   _TXCHAR;
  251. typedef unsigned int    _TINT;
  252. #define __TCHAR_DEFINED
  253. #endif
  254.  
  255. #ifdef _MBC_USE_MACROS
  256. /* string functions */
  257.  
  258. #define _tcschr         _mbschr
  259. #define _tcscspn        _mbscspn
  260. #define _tcsncat        _mbsnbcat
  261. #define _tcsncpy        _mbsnbcpy
  262. #define _tcspbrk        _mbspbrk
  263. #define _tcsrchr        _mbsrchr
  264. #define _tcsspn         _mbsspn
  265. #define _tcsstr         _mbsstr
  266. #define _tcstok         _mbstok
  267.  
  268. #define _tcsset         _mbsset
  269. #define _tcsnset        _mbsnbset
  270. #define _tcsrev         _mbsrev
  271. #define _tcscmp         _mbscmp
  272. #define _tcsicmp        _mbsicmp
  273. #define _tcsncmp        _mbsnbcmp
  274. #define _tcsnicmp       _mbsnbicmp
  275. #define _tcsnccmp       _mbsncmp
  276. #define _tcsncicmp      _mbsnicmp
  277.  
  278. /* todo : correct the mapping of these functions and add the new functions */
  279. #define _tcscoll        _mbscoll
  280. #define _tcsncoll       _mbsnbcoll
  281. #define _tcsnccoll      _mbsncoll
  282. #define _tcsicoll       _mbsicoll
  283. #define _tcsnicoll      _mbsnbicoll
  284. #define _tcsncicoll     _mbsnicoll
  285.  
  286. /* logical-character mappings */
  287.  
  288. #define _tcsclen        _mbslen
  289. #define _tcsnccat       _mbsncat
  290. #define _tcsnccpy       _mbsncpy
  291. #define _tcsncset       _mbsnset
  292.  
  293. /* MBCS specific mappings */
  294.  
  295. #define _tcsdec         _mbsdec
  296. #define _tcsinc         _mbsinc
  297. #define _tcsnbcnt       _mbsnbcnt
  298. #define _tcsnccnt       _mbsnccnt
  299. #define _tcsnextc       _mbsnextc
  300. #define _tcsninc        _mbsninc
  301. #define _tcsspnp        _mbsspnp
  302.  
  303. #define _tcslwr         _mbslwr
  304. #define _tcsupr         _mbsupr
  305.  
  306. #define _tclen          _mbclen
  307. #define _tccpy          _mbccpy
  308. #define _tccmp(a,b)     _mbsncmp(a,b,1)
  309.  
  310. #else /* _MBC_USE_MACROS */
  311.  
  312. #if (!defined ( __cplusplus) || defined( _NO_INLINING ))
  313.  
  314. /* String functions */
  315.  
  316. char * _RTLENTRY  _EXPFUNC _tcschr(const char *, unsigned int);
  317. size_t _RTLENTRY  _EXPFUNC _tcscspn(const char *, const char *);
  318. char * _RTLENTRY  _EXPFUNC _tcsncat(char *, const char *, size_t);
  319. char * _RTLENTRY  _EXPFUNC _tcsncpy(char *, const char *, size_t);
  320. char * _RTLENTRY  _EXPFUNC _tcspbrk(const char *, const char *);
  321. char * _RTLENTRY  _EXPFUNC _tcsrchr(const char *, int);
  322. size_t _RTLENTRY  _EXPFUNC _tcsspn(const char *, const char *);
  323. char * _RTLENTRY  _EXPFUNC _tcsstr(const char *, const char *);
  324. char * _RTLENTRY  _EXPFUNC _tcstok(char *, const char *);
  325.  
  326. char * _RTLENTRY  _EXPFUNC _tcsnset(char *, unsigned int, size_t);
  327. char * _RTLENTRY  _EXPFUNC _tcsrev(char *);
  328. char * _RTLENTRY  _EXPFUNC _tcsset(char *, unsigned int);
  329.  
  330. int _RTLENTRY  _EXPFUNC _tcscmp(const char *, const char *);
  331. int _RTLENTRY  _EXPFUNC _tcsicmp(const char *, const char *);
  332. int _RTLENTRY  _EXPFUNC _tcsnccmp(const char *, const char *, size_t);
  333. int _RTLENTRY  _EXPFUNC _tcsncmp(const char *, const char *, size_t);
  334. int _RTLENTRY  _EXPFUNC _tcsncicmp(const char *, const char *, size_t);
  335. int _RTLENTRY  _EXPFUNC _tcsnicmp(const char *, const char *, size_t);
  336.  
  337. int _RTLENTRY  _EXPFUNC _tcscoll(const char *, const char *);
  338. int _RTLENTRY  _EXPFUNC _tcsicoll(const char *, const char *);
  339. int _RTLENTRY  _EXPFUNC _tcsnccoll(const char *, const char *, size_t);
  340. int _RTLENTRY  _EXPFUNC _tcsncoll(const char *, const char *, size_t);
  341. int _RTLENTRY  _EXPFUNC _tcsncicoll(const char *, const char *, size_t);
  342. int _RTLENTRY  _EXPFUNC _tcsnicoll(const char *, const char *, size_t);
  343.  
  344.  
  345. /* "logical-character" mappings */
  346.  
  347. size_t _RTLENTRY  _EXPFUNC _tcsclen(const char *);
  348. char * _RTLENTRY  _EXPFUNC _tcsnccat(char *, const char *, size_t);
  349. char * _RTLENTRY  _EXPFUNC _tcsnccpy(char *, const char *, size_t);
  350. char * _RTLENTRY  _EXPFUNC _tcsncset(char *, unsigned int, size_t);
  351.  
  352.  
  353. /* MBCS-specific mappings */
  354.  
  355. char * _RTLENTRY  _EXPFUNC _tcsdec(const char *, const char *);
  356. char * _RTLENTRY  _EXPFUNC _tcsinc(const char *);
  357. size_t _RTLENTRY  _EXPFUNC _tcsnbcnt(const char *, size_t);
  358. size_t _RTLENTRY  _EXPFUNC _tcsnccnt(const char *, size_t);
  359. unsigned int _RTLENTRY  _EXPFUNC _tcsnextc (const char *);
  360. char * _RTLENTRY  _EXPFUNC _tcsninc(const char *, size_t);
  361. char * _RTLENTRY  _EXPFUNC _tcsspnp(const char *, const char *);
  362.  
  363. char * _RTLENTRY  _EXPFUNC _tcslwr(char *);
  364. char * _RTLENTRY  _EXPFUNC _tcsupr(char *);
  365.  
  366. size_t _RTLENTRY  _EXPFUNC _tclen(const char *);
  367. void   _RTLENTRY  _EXPFUNC _tccpy(char *, const char *);
  368. int    _RTLENTRY  _EXPFUNC _tccmp(const char *s1, const char *s2);
  369.  
  370. #else  /* (!defined( __cplusplus) || defined( _NO_INLINING )) */
  371.  
  372. inline char * _tcschr(const char * s1,unsigned int c) {return (char *)_mbschr((const unsigned char *)s1,c);}
  373. inline size_t _tcscspn(const char * s1,const char * s2) {return _mbscspn((const unsigned char *)s1,(const unsigned char *)s2);}
  374. inline char * _tcsncat(char * s1,const char * s2,size_t n) {return (char *)_mbsnbcat((unsigned char *)s1,(const unsigned char *)s2,n);}
  375. inline char * _tcsncpy(char * s1,const char * s2,size_t n) {return (char *)_mbsnbcpy((unsigned char *)s1,(const unsigned char *)s2,n);}
  376. inline char * _tcspbrk(const char * s1,const char * s2) {return (char *)_mbspbrk((const unsigned char *)s1,(const unsigned char *)s2);}
  377. inline char * _tcsrchr(const char * s1,unsigned int c) {return (char *)_mbsrchr((const unsigned char *)s1,c);}
  378. inline size_t _tcsspn(const char * s1,const char * s2) {return _mbsspn((const unsigned char *)s1,(const unsigned char *)s2);}
  379. inline char * _tcsstr(const char * s1,const char * s2) {return (char *)_mbsstr((const unsigned char *)s1,(const unsigned char *)s2);}
  380. inline char * _tcstok(char * s1,const char * s2) {return (char *)_mbstok((unsigned char *)s1,(const unsigned char *)s2);}
  381.  
  382. inline char * _tcsnset(char * s1,unsigned int c,size_t n) {return (char *)_mbsnbset((unsigned char *)s1,c,n);}
  383. inline char * _tcsrev(char * s1) {return (char *)_mbsrev((unsigned char *)s1);}
  384. inline char * _tcsset(char * s1,unsigned int c) {return (char *)_mbsset((unsigned char *)s1,c);}
  385.  
  386. inline int _tcscmp(const char * s1,const char * s2) {return _mbscmp((const unsigned char *)s1,(const unsigned char *)s2);}
  387. inline int _tcsicmp(const char * s1,const char * s2) {return _mbsicmp((const unsigned char *)s1,(const unsigned char *)s2);}
  388. inline int _tcsnccmp(const char * s1,const char * s2,size_t n) {return _mbsncmp((const unsigned char *)s1,(const unsigned char *)s2,n);}
  389. inline int _tcsncmp(const char * s1,const char * s2,size_t n) {return _mbsnbcmp((const unsigned char *)s1,(const unsigned char *)s2,n);}
  390. inline int _tcsncicmp(const char * s1,const char * s2,size_t n) {return _mbsnicmp((const unsigned char *)s1,(const unsigned char *)s2,n);}
  391. inline int _tcsnicmp(const char * s1,const char * s2,size_t n) {return _mbsnbicmp((const unsigned char *)s1,(const unsigned char *)s2,n);}
  392.  
  393. inline int _tcscoll(const char * s1,const char * s2) {return _mbscoll((const unsigned char *)s1,(const unsigned char *)s2);}
  394. inline int _tcsicoll(const char * s1,const char * s2) {return _mbsicoll((const unsigned char *)s1,(const unsigned char *)s2);}
  395. inline int _tcsnccoll(const char * s1,const char * s2,size_t n) {return _mbsncoll((const unsigned char *)s1,(const unsigned char *)s2,n);}
  396. inline int _tcsncoll(const char * s1,const char * s2,size_t n) {return _mbsnbcoll((const unsigned char *)s1,(const unsigned char *)s2,n);}
  397. inline int _tcsncicoll(const char * s1,const char * s2,size_t n) {return _mbsnicoll((const unsigned char *)s1,(const unsigned char *)s2,n);}
  398. inline int _tcsnicoll(const char * s1,const char * s2,size_t n) {return _mbsnbicoll((const unsigned char *)s1,(const unsigned char *)s2,n);}
  399.  
  400.  
  401. /* logical-character mappings */
  402.  
  403. inline size_t _tcsclen(const char * s1) {return _mbslen((const unsigned char *)s1);}
  404. inline char * _tcsnccat(char * s1,const char * s2,size_t n) {return (char *)_mbsncat((unsigned char *)s1,(const unsigned char *)s2,n);}
  405. inline char * _tcsnccpy(char * s1,const char * s2,size_t n) {return (char *)_mbsncpy((unsigned char *)s1,(const unsigned char *)s2,n);}
  406. inline char * _tcsncset(char * s1,unsigned int c,size_t n) {return (char *)_mbsnset((unsigned char *)s1,c,n);}
  407.  
  408.  
  409. /* MBCS-specific mappings */
  410.  
  411. inline char * _tcsdec(const char * s1,const char * s2) {return (char *)_mbsdec((const unsigned char *)s1,(const unsigned char *)s2);}
  412. inline char * _tcsinc(const char * s1) {return (char *)_mbsinc((const unsigned char *)s1);}
  413. inline size_t _tcsnbcnt(const char * s1,size_t n) {return _mbsnbcnt((const unsigned char *)s1,n);}
  414. inline size_t _tcsnccnt(const char * s1,size_t n) {return _mbsnccnt((const unsigned char *)s1,n);}
  415.  
  416. inline unsigned int _tcsnextc(const char * s1) {unsigned int n=0; if (_ismbblead((unsigned int)*(unsigned char *)s1)) n=((unsigned int)*s1++)<<8; n+=(unsigned int)*s1; return(n);}
  417.  
  418. inline char * _tcsninc(const char * s1,size_t n) {return (char *)_mbsninc((const unsigned char *)s1,n);}
  419. inline char * _tcsspnp(const char * s1,const char * s2) {return (char *)_mbsspnp((const unsigned char *)s1,(const unsigned char *)s2);}
  420. inline char * _tcslwr(char * s1) {return (char *)_mbslwr((unsigned char *)s1);}
  421. inline char * _tcsupr(char * s1) {return (char *)_mbsupr((unsigned char *)s1);}
  422.  
  423. inline size_t _tclen(const char * s1) {return _mbclen((const unsigned char *)s1);}
  424. inline void   _tccpy(char * s1,const char * s2) {_mbccpy((unsigned char *)s1,(const unsigned char *)s2); return;}
  425. inline int    _tccmp(const char *s1, const char *s2){ return  _mbsncmp((const unsigned char *)s1,(const unsigned char *)s2,1);}
  426.  
  427. #endif  /* (!defined ( __cplusplus) || defined( _NO_INLINING )) */
  428.  
  429. #endif  /* _MBC_USE_MACROS */
  430.  
  431. #define _tcscmpi        _tcsicmp
  432. #define _tcsncmpi       _tcsnicmp
  433.  
  434. /* ctype functions */
  435. #define _istalnum       _ismbcalnum
  436. #define _istalpha       _ismbcalpha
  437. #define _istdigit       _ismbcdigit
  438. #define _istgraph       _ismbcgraph
  439. #define _istlower       _ismbclower
  440. #define _istprint       _ismbcprint
  441. #define _istpunct       _ismbcpunct
  442. #define _istspace       _ismbcspace
  443. #define _istupper       _ismbcupper
  444. #define _istlegal       _ismbclegal
  445.  
  446. #define _totlower       _mbctolower
  447. #define _totupper       _mbctoupper
  448.  
  449. #define _istlead        _ismbblead
  450. #define _istleadbyte    _ismbblead
  451.  
  452. #else  /* _MBCS */
  453.  
  454. /* ------------------- SBCS functions ----------------------- */
  455.  
  456.  
  457. /* string functions */
  458.  
  459. #define _tcschr         strchr
  460. #define _tcscspn        strcspn
  461. #define _tcsncpy        strncpy
  462. #define _tcsncat        strncat
  463. #define _tcspbrk        strpbrk
  464. #define _tcsrchr        strrchr
  465. #define _tcsspn         strspn
  466. #define _tcsstr         strstr
  467. #define _tcstok         strtok
  468.  
  469. #define _tcsnset        strnset
  470. #define _tcsrev         strrev
  471. #define _tcsset         strset
  472.  
  473. #define _tcscmp         strcmp
  474. #define _tcsicmp        stricmp
  475. #define _tcsnccmp       strncmp
  476. #define _tcsncmp        strncmp
  477. #define _tcsncicmp      strnicmp
  478. #define _tcsnicmp       strnicmp
  479. #define _tcscmpi        strcmpi
  480. #define _tcsncmpi       strncmpi
  481.  
  482. #define _tcscoll        strcoll
  483. #define _tcsicoll       _stricoll
  484. #define _tcsnccoll      _strncoll
  485. #define _tcsncoll       _strncoll
  486. #define _tcsncicoll     _strnicoll
  487. #define _tcsnicoll      _strnicoll
  488. #define _tcsxfrm        strxfrm
  489.  
  490. #define _ltcscoll       _lstrcoll
  491. #define _ltcsicoll      _lstricoll
  492. #define _ltcsnccoll     _lstrncoll
  493. #define _ltcsncoll      _lstrncoll
  494. #define _ltcsncicoll    _lstrnicoll
  495. #define _ltcsnicoll     _lstrnicoll
  496. #define _ltcsxfrm       _lstrxfrm
  497.  
  498. /* MBCS specific functions */
  499.  
  500. #define _tcsdec         _strdec
  501. #define _tcsinc         _strinc
  502. #define _tcsnbcnt       _strncnt
  503. #define _tcsnccnt       _strncnt
  504. #define _tcsnextc       _strnextc
  505. #define _tcsninc        _strninc
  506. #define _tcsspnp        _strspnp
  507.  
  508. #define _tcslwr         strlwr
  509. #define _tcsupr         strupr
  510.  
  511. #define _istlegal(a)    (1)
  512. #define _istlead(a)     (0)
  513. #define _istleadbyte(a) (0)
  514.  
  515.  
  516. #if (!defined ( __cplusplus) || defined( _NO_INLINING ))
  517.  
  518. #define _tclen(a)       (1)
  519. #define _tccpy(a,b)     ((*(a))=(*(b)))
  520. #define _tccmp(a,b)     ((*(a))-(*(b)))
  521.  
  522. #else  /* (!defined ( __cplusplus) || defined( _NO_INLINING )) */
  523.  
  524. inline size_t _RTLENTRY _tclen(const char *s ){return (1); }
  525. inline void   _RTLENTRY _tccpy(char *s1, const char *s2) {*(s1) = *(s2); }
  526. inline int    _RTLENTRY _tccmp(const char *s1, const char *s2){ return (int) ( ((unsigned char*)s1)-((unsigned char*)s2)); }
  527.  
  528. #endif  /* (!defined ( __cplusplus) || defined( _NO_INLINING )) */
  529.  
  530. /* logical-character mappings */
  531.  
  532. #define _tcsclen        strlen
  533. #define _tcsnccat       strncat
  534. #define _tcsnccpy       strncpy
  535. #define _tcsncset       strnset
  536.  
  537. /* ctype functions */
  538.  
  539. #define _istalnum       isalnum
  540. #define _istalpha       isalpha
  541. #define _istdigit       isdigit
  542. #define _istgraph       isgraph
  543. #define _istlower       islower
  544. #define _istprint       isprint
  545. #define _istpunct       ispunct
  546. #define _istspace       isspace
  547. #define _istupper       isupper
  548. #define _istascii       isascii
  549. #define _istcntrl       iscntrl
  550. #define _istxdigit      isxdigit
  551.  
  552. #define _totlower       tolower
  553. #define _totupper       toupper
  554.  
  555. #if (!defined (__cplusplus) || defined( _NO_INLINING ))
  556.  
  557. #define _strinc(a)       ((a)+1)
  558. #define _strdec(a, b)    ((b)-1)
  559. #define _strnextc(a)     ((unsigned int) *(a))
  560. #define _strninc(a, b)   ((a)+(b))
  561. #define _strncnt(a, b)   ((strlen(a)>b) ? b : strlen(a))
  562. #define _strspnp(a, b)   ((*((a)+strspn(a,b))) ? ((a)+strspn(a,b)) : NULL)
  563.  
  564. #else  /* (!defined( __cplusplus) || defined( _NO_INLINING )) */
  565.  
  566. inline char * _RTLENTRY strinc(const char * s) { return (char *)(s+1); }
  567. inline char * _RTLENTRY strdec(const char * s1, const char * s2) { return (char *)(s1,(s2-1)); }
  568.  
  569. inline char * _RTLENTRY _strinc(const char * s) { return (char *)(s+1); }
  570. inline char * _RTLENTRY _strdec(const char * s1, const char * s2) { return (char *)(s1,(s2-1)); }
  571. inline unsigned int _RTLENTRY _strnextc(const char *s) { return (unsigned int)*s; }
  572. inline char * _RTLENTRY _strninc(const char * s, size_t n) { return (char *)(s+n); }
  573. inline size_t _RTLENTRY _strncnt( const char * s, size_t n) { size_t len; len = strlen(s); return (len>n) ? n : len; }
  574. inline char * _RTLENTRY _strspnp( const char * s1, const char * s2) { return (*(s1 += strspn(s1,s2))!='\0') ? (char*)s1 : NULL; }
  575.  
  576. #endif /* (!defined (__cplusplus) || defined( _NO_INLINING )) */
  577.  
  578. #endif /* _MBCS */
  579.  
  580. #else  /* _UNICODE */
  581.  
  582. #ifndef __cplusplus
  583. #if !defined(_WCHAR_T) && !defined(_WCHAR_T_DEFINED)
  584. #define _WCHAR_T
  585. #define _WCHAR_T_DEFINED  /* For WINDOWS.H */
  586. typedef unsigned short wchar_t;
  587. #endif
  588. #endif
  589.  
  590. #if !defined(_WINT_T)
  591. typedef wchar_t wint_t;
  592. #define _WINT_T
  593. #endif
  594.  
  595. #ifndef _WCTYPE_T_DEFINED
  596. typedef wchar_t wctype_t;
  597. #define _WCTYPE_T_DEFINED
  598. #endif
  599.  
  600. #ifndef __TCHAR_DEFINED
  601. typedef wchar_t         _TCHAR;
  602. typedef wchar_t         _TSCHAR;
  603. typedef wchar_t         _TUCHAR;
  604. typedef wchar_t         _TXCHAR;
  605. typedef wint_t          _TINT;
  606. #define __TCHAR_DEFINED
  607. #endif
  608.  
  609. #define _TEOF           WEOF
  610. #define __T(x)          L ## x
  611. #define _TEXT(x)        __T(x)
  612. #define _T(x)           __T(x)
  613.  
  614. /* string functions */
  615.  
  616. #define _tcschr         wcschr
  617. #define _tcscspn        wcscspn
  618. #define _tcsncpy        wcsncpy
  619. #define _tcsncat        wcsncat
  620. #define _tcspbrk        wcspbrk
  621. #define _tcsrchr        wcsrchr
  622. #define _tcsspn         wcsspn
  623. #define _tcsstr         wcsstr
  624. #define _tcstok         wcstok
  625. #define _tcsnset        _wcsnset
  626. #define _tcsrev         _wcsrev
  627. #define _tcsset         _wcsset
  628. #define _tcscmp         wcscmp
  629. #define _tcsicmp        _wcsicmp
  630. #define _tcsnccmp       wcsncmp
  631. #define _tcsncmp        wcsncmp
  632. #define _tcsnicmp       _wcsnicmp
  633. #define _tcsncicmp      _wcsnicmp
  634. #define _tcscmpi        wcscmpi
  635. #define _tcsncmpi       wcsncmpi
  636. #define _tcscat         wcscat
  637. #define _tcscpy         wcscpy
  638. #define _tcspcpy        _wcspcpy
  639. #define _tcslen         wcslen
  640. #define _tcsdup         _wcsdup
  641. #define _tcslwr         _wcslwr
  642. #define _tcsupr         _wcsupr
  643.  
  644. #define _tcsdec         _wcsdec
  645. #define _tcsinc         _wcsinc
  646. #define _tcsnbcnt       _wcsncnt
  647. #define _tcsnccnt       _wcsncnt
  648. #define _tcsnextc       _wcsnextc
  649. #define _tcsninc        _wcsninc
  650. #define _tcsspnp        _wcsspnp
  651.  
  652. #define _tcscoll        wcscoll
  653. #define _tcsicoll       _wcsicoll
  654. #define _tcsnccoll      _wcsncoll
  655. #define _tcsncoll       _wcsncoll
  656. #define _tcsncicoll     _wcsnicoll
  657. #define _tcsnicoll      _wcsnicoll
  658. #define _tcsxfrm        wcsxfrm
  659.  
  660. #define _ltcscoll       _lwcscoll
  661. #define _ltcsicoll      _lwcsicoll
  662. #define _ltcsnccoll     _lwcsncoll
  663. #define _ltcsncoll      _lwcsncoll
  664. #define _ltcsncicoll    _lwcsnicoll
  665. #define _ltcsnicoll     _lwcsnicoll
  666. #define _ltcsxfrm       _lwcsxfrm
  667.  
  668. /* time functions */
  669.  
  670. #define _tasctime       _wasctime
  671. #define _tutime         _wutime
  672. #define _tctime         _wctime
  673. #define _tstrdate       _wstrdate
  674. #define _tstrtime       _wstrtime
  675. #define _tcsftime       wcsftime
  676. #define _ttzset         _wtzset
  677. #define _ttzname        _wtzname
  678.  
  679. /* ctype functions */
  680.  
  681. #define _istalnum       iswalnum
  682. #define _istalpha       iswalpha
  683. #define _istdigit       iswdigit
  684. #define _istgraph       iswgraph
  685. #define _istlower       iswlower
  686. #define _istprint       iswprint
  687. #define _istpunct       iswpunct
  688. #define _istspace       iswspace
  689. #define _istupper       iswupper
  690. #define _istascii       iswascii
  691. #define _istcntrl       iswcntrl
  692. #define _istxdigit      iswxdigit
  693.  
  694. #define _istlegal(a)    (1)
  695. #define _istlead(a)     (0)
  696. #define _istleadbyte(a) (0)
  697.  
  698. #define _totlower       towlower
  699. #define _totupper       towupper
  700.  
  701. /* Execute functions */
  702.  
  703. #define _texecl     _wexecl
  704. #define _texecle    _wexecle
  705. #define _texeclp    _wexeclp
  706. #define _texeclpe   _wexeclpe
  707. #define _texecv     _wexecv
  708. #define _texecve    _wexecve
  709. #define _texecvp    _wexecvp
  710. #define _texecvpe   _wexecvpe
  711.  
  712. #define _tspawnl    _wspawnl
  713. #define _tspawnle   _wspawnle
  714. #define _tspawnlp   _wspawnlp
  715. #define _tspawnlpe  _wspawnlpe
  716. #define _tspawnv    _wspawnv
  717. #define _tspawnve   _wspawnve
  718. #define _tspawnvp   _wspawnvp
  719. #define _tspawnvp   _wspawnvp
  720. #define _tspawnvpe  _wspawnvpe
  721.  
  722. #define _tsystem        _wsystem
  723.  
  724. /*  Path / Environment  specific mappings  */
  725.  
  726. #define _tfullpath      _wfullpath
  727. #define _tsplitpath     _wsplitpath
  728. #define _tfnsplit       _wfnsplit
  729. #define _tfnmerge       _wfnmerge
  730. #define _tmakepath      _wmakepath
  731. #define _tsearchpath    wsearchpath
  732. #define _tsearchenv     _wsearchenv
  733. #define _tsearchstr     _wsearchstr
  734. #define _tgetenv        _wgetenv
  735. #define _tputenv        _wputenv
  736.  
  737. /*  I/O functions   */
  738.  
  739. #define _taccess        _waccess
  740. #define _tchmod         _wchmod
  741. #define _trtl_open      _wrtl_open
  742. #define _trtl_creat     _wrtl_creat
  743. #define _trtl_chmod     _wrtl_chmod
  744. #define _tcreat         _wcreat
  745. #define _tfindfirst     _wfindfirst
  746. #define _tfindnext      _wfindnext
  747. #define _tmktemp        _wmktemp
  748. #define _topen          _wopen
  749. #define _tremove        _wremove
  750. #define _trename        _wrename
  751. #define _tsopen         _wsopen
  752. #define _tunlink        _wunlink
  753.  
  754. #define _tffblk         _wffblk
  755.  
  756. /* directory functions */
  757.  
  758. #define _topendir       wopendir
  759. #define _treaddir       wreaddir
  760. #define _trewinddir     wrewinddir
  761. #define _tclosedir      wclosedir
  762. #define _tDIR           wDIR
  763. #define _tdirent        wdirent
  764.  
  765. /* stdio functions   */
  766.  
  767. #define _tpopen         _wpopen
  768. #define _tfopen         _wfopen
  769. #define _tfsopen        _wfsopen
  770. #define _tfreopen       _wfreopen
  771. #define _tfdopen        _wfdopen
  772. #define _tperror        _wperror
  773. #define _ttmpnam        _wtmpnam
  774. #define _ttempnam       _wtempnam
  775.  
  776. /* program specific mappings*/
  777.  
  778. #define _tmain          wmain
  779. #define _tWinMain       wWinMain
  780. #define _tenviron       _wenviron
  781. #define _targv          _wargv
  782.  
  783. /* Directory functions */
  784.  
  785. #define _tchdir     _wchdir
  786. #define _tgetcurdir _wgetcurdir
  787. #define _tgetcwd    _wgetcwd
  788. #define _tgetdcwd   _wgetdcwd
  789. #define _tmkdir     _wmkdir
  790. #define _trmdir     _wrmdir
  791.  
  792. /* string conversion functions */
  793.  
  794. #define _ttof           _wtof
  795. #define _ttoi           _wtoi
  796. #define _ttol           _wtol
  797. #define _ttoi64         _wtoi64
  798. #define _ttold          _wtold
  799. #define _tcstod         wcstod
  800. #define _tcstol         wcstol
  801. #define _tcstold        _wcstold
  802. #define _tcstoul        wcstoul
  803. #define _itot           _itow
  804. #define _ltot           _ltow
  805. #define _ultot          _ultow
  806. #define _i64tot         _i64tow
  807. #define _ui64tot        _ui64tow
  808.  
  809. /* Stat functions */
  810.  
  811. #define _tstat          _wstat
  812. #define _tstati64       _wstati64
  813.  
  814. /* Setlocale functions */
  815.  
  816. #define _tsetlocale _wsetlocale
  817.  
  818. /* memory functions */
  819.  
  820. #define _tmemcpy        _wmemcpy
  821. #define _tmemchr        _wmemchr
  822. #define _tmemset        _wmemset
  823.  
  824. /* Unformated I/O */
  825.  
  826. #define _fgettc         fgetwc
  827. #define _gettc          getwc
  828. #define _fputtc         fputwc
  829. #define _puttc          putwc
  830. #define _fgettchar      _fgetwchar
  831. #define _fgetts         fgetws
  832. #define _fputtchar      _fputwchar
  833. #define _puttchar       putwchar
  834. #define _getts          _getws
  835. #define _fputts         fputws
  836. #define _gettchar       getwchar
  837. #define _putts          _putws
  838. #define _ungettc        ungetwc
  839.  
  840. /* Formated I/O */
  841. #define _tprintf        wprintf
  842. #define _vstprintf      vswprintf
  843. #define _stprintf       swprintf
  844. #define _ftprintf       fwprintf
  845. #define _vftprintf      vfwprintf
  846. #define _vtprintf       vwprintf
  847.  
  848.  
  849. #define _tscanf         wscanf
  850. #define _stscanf        swscanf
  851. #define _vstscanf       vswscanf
  852. #define _vtscanf        vwscanf
  853. #define _vftscanf       vfwscanf
  854. #define _ftscanf        fwscanf
  855.  
  856.  
  857. #define _wcsinc(a)       ((a)+1)
  858. #define _wcsdec(a, b)    ((b)-1)
  859. #define _wcsnextc(a)     ((wchar_t) *(a))
  860. #define _wcsninc(a, b)   ((a)+(b))
  861. #define _wcsncnt(a, b)   ((wcslen(a)>b) ? b : wcslen(a))
  862. #define _wcsspnp(a, b)   ((*((a)+wcsspn(a,b))) ? ((a)+wcsspn(a,b)) : NULL)
  863.  
  864. #endif /* _UNCODE */
  865.  
  866. #ifdef __cplusplus
  867. }
  868. #endif
  869.  
  870. #endif  /* __TCHAR_H */
  871.