home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 November / PCWorld_2000-11_cd.bin / Software / Topware / devc40 / _SETUP.5 / Group3 / tchar.h < prev    next >
C/C++ Source or Header  |  1999-11-07  |  6KB  |  262 lines

  1. /* 
  2.  * tchar.h
  3.  *
  4.  * Unicode mapping layer for the standard C library. By including this
  5.  * file and using the 't' names for string functions
  6.  * (eg. _tprintf) you can make code which can be easily adapted to both
  7.  * Unicode and non-unicode environments. In a unicode enabled compile define
  8.  * _UNICODE before including tchar.h, otherwise the standard non-unicode
  9.  * library functions will be used.
  10.  *
  11.  * Note that you still need to include string.h or stdlib.h etc. to define
  12.  * the appropriate functions. Also note that there are several defines
  13.  * included for non-ANSI functions which are commonly available (but using
  14.  * the convention of prepending an underscore to non-ANSI library function
  15.  * names).
  16.  *
  17.  * This file is part of the Mingw32 package.
  18.  *
  19.  * Contributors:
  20.  *  Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
  21.  *
  22.  *  THIS SOFTWARE IS NOT COPYRIGHTED
  23.  *
  24.  *  This source code is offered for use in the public domain. You may
  25.  *  use, modify or distribute it freely.
  26.  *
  27.  *  This code is distributed in the hope that it will be useful but
  28.  *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  29.  *  DISCLAMED. This includes but is not limited to warranties of
  30.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  31.  *
  32.  * $Revision: 1.1.1.3 $
  33.  * $Author: khan $
  34.  * $Date: 1998/02/04 20:03:07 $
  35.  *
  36.  */
  37.  
  38. #ifndef    _TCHAR_H_
  39. #define _TCHAR_H_
  40.  
  41. /* All the headers include this file. */
  42. #include <_mingw.h>
  43.  
  44. /*
  45.  * NOTE: This tests _UNICODE, which is different from the UNICODE define
  46.  *       used to differentiate Win32 API calls.
  47.  */
  48. #ifdef    _UNICODE
  49.  
  50.  
  51. /*
  52.  * Use TCHAR instead of char or wchar_t. It will be appropriately translated
  53.  * if _UNICODE is correctly defined (or not).
  54.  */
  55. #ifndef _TCHAR_DEFINED
  56. #ifndef RC_INVOKED
  57. typedef    wchar_t    TCHAR;
  58. #endif    /* Not RC_INVOKED */
  59. #define _TCHAR_DEFINED
  60. #endif
  61.  
  62.  
  63. /*
  64.  * Enclose constant strings and literal characters in the _TEXT macro to make
  65.  * them unicode constant strings when _UNICODE is defined.
  66.  */
  67. #define    _TEXT(x)    L ## x
  68.  
  69. #ifndef    _T
  70. #define    _T(x)        L ## x
  71. #endif
  72.  
  73. /*
  74.  * Unicode functions
  75.  */
  76.  
  77. #define    _tprintf    wprintf
  78. #define    _ftprintf    fwprintf
  79. #define    _stprintf    swprintf
  80. #define    _sntprintf    _snwprintf
  81. #define    _vtprintf    vwprintf
  82. #define    _vftprintf    vfwprintf
  83. #define _vstprintf    vswprintf
  84. #define    _vsntprintf    _vsnwprintf
  85. #define    _tscanf        wscanf
  86. #define    _ftscanf    fwscanf
  87. #define    _stscanf    swscanf
  88. #define    _fgettc        fgetwc
  89. #define    _fgettchar    _fgetwchar
  90. #define    _fgetts        fgetws
  91. #define    _fputtc        fputwc
  92. #define    _fputtchar    _fputwchar
  93. #define    _fputts        fputws
  94. #define    _gettc        getwc
  95. #define    _getts        getws
  96. #define    _puttc        putwc
  97. #define    _putts        putws
  98. #define    _ungettc    ungetwc
  99. #define    _tcstod        wcstod
  100. #define    _tcstol        wcstol
  101. #define _tcstoul    wcstoul
  102. #define    _itot        _itow
  103. #define    _ltot        _ltow
  104. #define    _ultot        _ultow
  105. #define    _ttoi        _wtoi
  106. #define    _ttol        _wtol
  107. #define    _tcscat        wcscat
  108. #define _tcschr        wcschr
  109. #define _tcscmp        wcscmp
  110. #define _tcscpy        wcscpy
  111. #define _tcscspn    wcscspn
  112. #define    _tcslen        wcslen
  113. #define    _tcsncat    wcsncat
  114. #define    _tcsncmp    wcsncmp
  115. #define    _tcsncpy    wcsncpy
  116. #define    _tcspbrk    wcspbrk
  117. #define    _tcsrchr    wcsrchr
  118. #define _tcsspn        wcsspn
  119. #define    _tcsstr        wcsstr
  120. #define _tcstok        wcstok
  121. #define    _tcsdup        _wcsdup
  122. #define    _tcsicmp    _wcsicmp
  123. #define    _tcsnicmp    _wcsnicmp
  124. #define    _tcsnset    _wcsnset
  125. #define    _tcsrev        _wcsrev
  126. #define _tcsset        _wcsset
  127. #define    _tcslwr        _wcslwr
  128. #define    _tcsupr        _wcsupr
  129. #define    _tcsxfrm    wcsxfrm
  130. #define    _tcscoll    wcscoll
  131. #define    _tcsicoll    _wcsicoll
  132. #define    _istalpha    iswalpha
  133. #define    _istupper    iswupper
  134. #define    _istlower    iswlower
  135. #define    _istdigit    iswdigit
  136. #define    _istxdigit    iswxdigit
  137. #define    _istspace    iswspace
  138. #define    _istpunct    iswpunct
  139. #define    _istalnum    iswalnum
  140. #define    _istprint    iswprint
  141. #define    _istgraph    iswgraph
  142. #define    _istcntrl    iswcntrl
  143. #define    _istascii    iswascii
  144. #define _totupper    towupper
  145. #define    _totlower    towlower
  146. #define    _tasctime    _wasctime
  147. #define    _tctime        _wctime
  148. #define    _tstrdate    _wstrdate
  149. #define    _tstrtime    _wstrtime
  150. #define    _tutime        _wutime
  151. #define _tcsftime    wcsftime
  152. #define _ttoi        _wtoi
  153. #define _ttol        _wtol
  154.  
  155. #else    /* Not _UNICODE */
  156.  
  157. /*
  158.  * TCHAR, the type you should use instead of char.
  159.  */
  160. #ifndef _TCHAR_DEFINED
  161. #ifndef RC_INVOKED
  162. typedef char    TCHAR;
  163. #endif
  164. #define _TCHAR_DEFINED
  165. #endif
  166.  
  167. /*
  168.  * Enclose constant strings and characters in the _TEXT macro.
  169.  */
  170. #define    _TEXT(x)    x
  171.  
  172. #ifndef    _T
  173. #define    _T(x)        x
  174. #endif
  175.  
  176. /*
  177.  * Non-unicode (standard) functions
  178.  */
  179.  
  180. #define    _tprintf    printf
  181. #define _ftprintf    fprintf
  182. #define    _stprintf    sprintf
  183. #define    _sntprintf    _snprintf
  184. #define    _vtprintf    vprintf
  185. #define    _vftprintf    vfprintf
  186. #define _vstprintf    vsprintf
  187. #define    _vsntprintf    _vsnprintf
  188. #define    _tscanf        scanf
  189. #define    _ftscanf    fscanf
  190. #define    _stscanf    sscanf
  191. #define    _fgettc        fgetc
  192. #define    _fgettchar    _fgetchar
  193. #define    _fgetts        fgets
  194. #define    _fputtc        fputc
  195. #define    _fputtchar    _fputchar
  196. #define    _fputts        fputs
  197. #define    _gettc        getc
  198. #define    _getts        gets
  199. #define    _puttc        putc
  200. #define    _putts        puts
  201. #define    _ungettc    ungetc
  202. #define    _tcstod        strtod
  203. #define    _tcstol        strtol
  204. #define _tcstoul    strtoul
  205. #define    _itot        _itoa
  206. #define    _ltot        _ltoa
  207. #define    _ultot        _ultoa
  208. #define    _ttoi        atoi
  209. #define    _ttol        atol
  210. #define    _tcscat        strcat
  211. #define _tcschr        strchr
  212. #define _tcscmp        strcmp
  213. #define _tcscpy        strcpy
  214. #define _tcscspn    strcspn
  215. #define    _tcslen        strlen
  216. #define    _tcsncat    strncat
  217. #define    _tcsncmp    strncmp
  218. #define    _tcsncpy    strncpy
  219. #define    _tcspbrk    strpbrk
  220. #define    _tcsrchr    strrchr
  221. #define _tcsspn        strspn
  222. #define    _tcsstr        strstr
  223. #define _tcstok        strtok
  224. #define    _tcsdup        _strdup
  225. #define    _tcsicmp    _stricmp
  226. #define    _tcsnicmp    _strnicmp
  227. #define    _tcsnset    _strnset
  228. #define    _tcsrev        _strrev
  229. #define _tcsset        _strset
  230. #define    _tcslwr        _strlwr
  231. #define    _tcsupr        _strupr
  232. #define    _tcsxfrm    strxfrm
  233. #define    _tcscoll    strcoll
  234. #define    _tcsicoll    _stricoll
  235. #define    _istalpha    isalpha
  236. #define    _istupper    isupper
  237. #define    _istlower    islower
  238. #define    _istdigit    isdigit
  239. #define    _istxdigit    isxdigit
  240. #define    _istspace    isspace
  241. #define    _istpunct    ispunct
  242. #define    _istalnum    isalnum
  243. #define    _istprint    isprint
  244. #define    _istgraph    isgraph
  245. #define    _istcntrl    iscntrl
  246. #define    _istascii    isascii
  247. #define _totupper    toupper
  248. #define    _totlower    tolower
  249. #define    _tasctime    asctime
  250. #define    _tctime        ctime
  251. #define    _tstrdate    _strdate
  252. #define    _tstrtime    _strtime
  253. #define    _tutime        _utime
  254. #define _tcsftime    strftime
  255. #define _ttoi        atoi
  256. #define _ttol        atol
  257.  
  258. #endif    /* Not _UNICODE */
  259.  
  260. #endif    /* Not _TCHAR_H_ */
  261.  
  262.